9.3. ConfigMap PropertySource 사용
Kubernetes에는 구성을 애플리케이션에 전달하기 위한 ConfigMap 의 개념이 있습니다. Spring 클라우드 Kubernetes 플러그인은 ConfigMap
과 통합을 제공하여 Spring Boot에서 구성 맵에 액세스할 수 있도록 합니다.
활성화된 ConfigMap
PropertySource
는 애플리케이션 다음에 이름이 지정된 ConfigMap
에 대해 Kubernetes를 조회합니다( spring.application.name
참조). 맵이 발견되면 해당 데이터를 읽고 다음을 수행합니다.
9.3.1. 개별 속성 적용
속성을 사용하여 스레드 풀 구성을 읽는 demo
라는 Spring Boot 애플리케이션이 있다고 가정하겠습니다.
-
pool.size.core
-
pool.size.max
YAML 형식의 구성 맵에 외부화할 수 있습니다.
kind: ConfigMap apiVersion: v1 metadata: name: demo data: pool.size.core: 1 pool.size.max: 16
9.3.2. application.yaml ConfigMap 속성 적용
개별 속성은 대부분의 경우에 적합하지만 YAML이 더 편리합니다. 이 경우 application.yaml
이라는 단일 속성을 사용하고 YAML을 여기에 삽입합니다.
kind: ConfigMap apiVersion: v1 metadata: name: demo data: application.yaml: |- pool: size: core: 1 max:16
9.3.3. application.properties ConfigMap 속성 적용
Spring Boot application.properties
파일의 스타일에 ConfigMap 속성을 정의할 수도 있습니다. 이 경우 application.properties
라는 단일 속성을 사용하고 그 안에 속성 설정을 나열합니다.
kind: ConfigMap apiVersion: v1 metadata: name: demo data: application.properties: |- pool.size.core: 1 pool.size.max: 16
9.3.4. ConfigMap 배포
ConfigMap을 배포하고 Spring Boot 애플리케이션에 액세스하려면 다음 단계를 수행합니다.
절차
-
Spring Boot 애플리케이션에서 외부화된 구성 메커니즘을 사용하여 ConfigMap 속성 소스에 액세스합니다. 예를 들어 Java 8080에
@Configuration
주석에 주석을 달면 ConfigMap을 통해 빈의 속성 값을 삽입할 수 있습니다. -
프로젝트의
bootstrap.properties
파일(또는bootstrap.yaml
파일)에서 ConfigMap의 이름과 일치하도록spring.application.name
속성을 설정합니다. 애플리케이션과 연결된 서비스 계정에 대한
보기
권한을 활성화합니다(기본적으로기본
이라는 서비스 계정임). 예를 들어기본
서비스 계정에보기
권한을 추가하려면 다음을 수행합니다.oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default -n $(oc project -q)