10.4. Secrets PropertySource 사용
Kubernetes에는 암호, OAuth 토큰 등과 같은 중요한 데이터를 저장하기 위한 시크릿 개념이 있습니다. Spring 클라우드 Kubernetes 플러그인은 시크릿과 통합을 제공하여 Spring Boot에서 시크릿에 액세스할 수 있도록 합니다.
활성화된 Secrets
속성 소스는 다음 소스에서 Kubernetes for Secrets
를 찾습니다. 시크릿이 발견되면 해당 데이터를 애플리케이션에서 사용할 수 있습니다.
- 보안 마운트에서 재귀적으로 읽기
-
애플리케이션 이름(
spring.application.name
참조) - 일부 라벨 일치
기본적으로 API(위 2 및 3)를 통해 Secrets를 사용하는 것은 활성화되지 않습니다.
10.4.1. 시크릿 설정 예
속성을 사용하여 ActiveMQ 및 PostreSQL 구성을 읽는 demo
라는 Spring Boot 애플리케이션이 있다고 가정하겠습니다.
amq.username amq.password pg.username pg.password
이러한 보안은 YAML 형식의 시크릿
으로 외부화할 수 있습니다.
- ActiveMQ Secrets
apiVersion: v1 kind: Secret metadata: name: activemq-secrets labels: broker: activemq type: Opaque data: amq.username: bXl1c2VyCg== amq.password: MWYyZDFlMmU2N2Rm
- PostreSQL 시크릿
apiVersion: v1 kind: Secret metadata: name: postgres-secrets labels: db: postgres type: Opaque data: pg.username: dXNlcgo= pg.password: cGdhZG1pbgo=
10.4.2. 보안 사용
다음과 같은 여러 가지 방법으로 사용할 보안을 선택할 수 있습니다.
보안이 매핑되는 디렉터리를 나열하여 다음을 수행하십시오.
-Dspring.cloud.kubernetes.secrets.paths=/etc/secrets/activemq,etc/secrets/postgres
공통 루트에 매핑된 모든 보안이 있는 경우 다음과 같이 설정할 수 있습니다.
-Dspring.cloud.kubernetes.secrets.paths=/etc/secrets
이름이 지정된 보안을 설정하면 다음을 수행합니다.
-Dspring.cloud.kubernetes.secrets.name=postgres-secrets
라벨 목록을 정의하여 다음을 수행합니다.
-Dspring.cloud.kubernetes.secrets.labels.broker=activemq -Dspring.cloud.kubernetes.secrets.labels.db=postgres
10.4.3. Secrets PropertySource의 구성 속성
다음 속성을 사용하여 Secrets 속성 소스를 구성할 수 있습니다.
- spring.cloud.kubernetes.secrets.enabled
-
Secrets 속성 소스를 활성화합니다. type은
부울
이며 기본값은true
입니다. - spring.cloud.kubernetes.secrets.name
-
조회할 시크릿 이름을 설정합니다. type은
문자열
이며 기본값은${spring.application.name}
입니다. - spring.cloud.kubernetes.secrets.labels
-
보안을 조회하는 데 사용되는 레이블을 설정합니다. 이 속성은 Map 기반 바인딩에 의해 정의된 대로 작동합니다. type은
java.util.Map
이며 기본값은null
입니다. - spring.cloud.kubernetes.secrets.paths
-
보안이 마운트된 경로를 설정합니다. 이 속성은 컬렉션 기반 바인딩에 의해 정의된 대로 작동합니다. type은
java.util.List
이며 기본값은null
입니다. - spring.cloud.kubernetes.secrets.enableApi
-
API를 통해 보안 사용을 활성화/비활성화합니다. type은
부울
이며 기본값은false
입니다.
보안상의 이유로 API를 통해 시크릿에 대한 액세스가 제한될 수 있습니다. 즉, 권장되는 방법은 POD에 시크릿을 마운트하는 것입니다.