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
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
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
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
속성을 설정합니다. 애플리케이션과 연결된 서비스 계정에 대한
보기
권한을 활성화합니다(기본적으로기본
이라는 서비스 계정임). 예를 들어기본
서비스 계정에보기
권한을 추가하려면 다음을 수행합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default -n $(oc project -q)
oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default -n $(oc project -q)