itsource

Helm을 통해 배포된 Java Spring 부팅 응용 프로그램에서 구성 맵의 속성을 사용하는 방법

mycopycode 2023. 7. 21. 21:36
반응형

Helm을 통해 배포된 Java Spring 부팅 응용 프로그램에서 구성 맵의 속성을 사용하는 방법

개발 시 배포해야 하는 간단한 Spring 부팅 애플리케이션이 있으며, Helm을 사용하여 Kubernetes 클러스터에서 다양한 네임스페이스를 생성합니다.

각 환경에 대해 여러 application.properties(application-dev.properties, application-prod.properties) 파일을 유지한 다음 values.yaml 파일을 통해 구성 맵을 생성하는 것이 좋습니다. values.yaml 파일은 환경마다 다르며 Helm 업그레이드를 실행할 때 지정됩니다.

이제 문제는 config.maps의 값을 사용하는 방법입니다. 예를 들어 /deployment/application.properties와 같은 속성 파일을 컨테이너 내부에 마운트할 수 있습니다.

또는 각 속성을 컨테이너 내부의 환경 변수로 노출합니다.

하지만 자바 애플리케이션에서 어떻게 소비합니까?

또한 컨테이너 이미지를 만들 때 /resources/ 파일 안에 현재 응용 프로그램 .properties가 포함되어 있으며 이는 기본적으로 응용 프로그램이 컨테이너 안에서 실행될 때 응용 프로그램이 개발자 데스크톱에서 빌드되고 수동으로 실행될 때와는 반대로 이 동작을 덮어써야 합니다.

Springboot은 환경 변수에서 변수를 자동으로 추론할 수 있습니다.application.properties 또는 application.yaml에서 ${MY_ENERVICE_VARIBLE:my-defaultvalue}만 사용합니다.
helm을 사용하여 구성 맵을 채웁니다.구성 맵을 배포 매니페스트의 환경 변수로 사용합니다.

이렇게 하면 이미지 내부에 dev, int, prod에 대한 application.properties가 여러 개 있을 필요가 없습니다.배포 전반에 걸쳐 데이터를 그대로 유지합니다.

그런 다음 조타 차트에서 여러 values.yaml 예제 values-dev.yaml 또는 values-int.yaml을 가질 수 있습니다. 명령행에서 조타 값을 동적으로 설정하여 yaml 파일을 재정의할 수도 있습니다.

저는 이 패턴을 사용하는 github https://github.com/balchua/demo, 에 데모 앱을 가지고 있습니다.

Bal Chua가 제안하는 것처럼 환경 변수를 사용할 수 있습니다.이렇게 하면 --set을 사용하여 설치 시 특정 값을 재정의하거나 구성이 많은 경우 '-- values' 플래그를 사용하여 사용자 지정 values.yaml 파일을 전달할 수 있습니다.

다른 방법은 를 사용하여 전체 파일을 로드하는 것입니다.Files.Glob(: github)을 사용하여 차트의 일부로 파일을 로드합니다.그런 다음 파일을 /config에 마운트하여 스프링 부트 응용 프로그램에서 사용할 수 있습니다.그러면 구성 파일은 helm values.yaml이 아닌 Spring 부트 구성 파일과 동일한 형식이 됩니다.많은 경우에 큰 차이가 필요하지 않습니다.

https://dzone.com/articles/hunting-treasure-with-kubernetes-configmaps-and-se (Github 예제와 함께 제공되는 기사)에서 비밀에 대해 유사한 작업을 수행하고 CI/CD에 사용하는 방법에 대해 설명합니다.기본적으로 사용할 수 있습니다.파일. 를 사용하여 전역합니다.대신 비밀로.AsConfig를 사용하여 콘텐츠를 인코딩합니다.많은 조타 장치 차트에는 지정되지 않은 경우 임의 암호를 생성하는 옵션이 있지만, 아마 필요하지 않을 것입니다.

파일을 합니다.application.properties또는application.yml) 에 있습니다ConfigMap감지할 수 로 - 한 Spring Boot을 합니다. 동자로수감지있의어파시템딘로가스 - 러면앱게다지니유됩단순하고멋지이그일는할이으▁onto▁stays다니▁nice▁on지▁systemspring됩유▁somewhere▁boot▁app▁that앱게▁and▁the단▁then순하고▁your멋▁simple▁-.

언급URL : https://stackoverflow.com/questions/50297305/how-to-consume-properties-from-configmaps-in-java-spring-boot-application-deploy

반응형