비밀정보를 차트와 애플리케이션에서 사용하기
Apollo가 생성한 Kubernetes Secret은 볼륨 마운트, 환경 변수 또는 애플리케이션 코드에서 사용할 수 있습니다. 차트에는 Secret의 이름과 읽을 키를 전달합니다.
Apollo 이름으로 Kubernetes 이름 참조
개체의 Config에서 설정 재정의를 편집합니다. 다음은 Apollo에서 examplesecret이라는 이름으로 만든 비밀정보의 Kubernetes 이름을 참조하는 표현식입니다.
{{ preprocess .Values.apollo.secrets.examplesecret.k8sSecretName }}
apollo.secrets 아래의 키에는 Apollo의 Secret name을 사용합니다. k8sSecretName이 실제 환경에 생성된 Kubernetes 이름을 반환합니다.
| 구분 | 가상의 값 |
|---|---|
| 개체 이름 | example-entity |
| Apollo Secret name | examplesecret |
| 실제 Kubernetes Secret 이름 | example-entity-examplesecret |
| Secret 안에서 읽을 키 | token |
개체의 설정 재정의에 연결
차트가 admin.existingSecretName과 admin.existingSecretKey를 입력으로 사용한다고 가정하겠습니다. 개체의 설정 재정의에는 다음 값을 지정합니다.
admin:
existingSecretName: '{{ preprocess .Values.apollo.secrets.examplesecret.k8sSecretName }}'
existingSecretKey: token
Apollo가 참조를 처리하면 차트는 실제 Kubernetes Secret 이름을 값으로 받습니다. 이 표현식은 Apollo의 설정 처리에 사용하며, 일반 Helm 템플릿에서 비밀값을 직접 읽는 기능이 아닙니다.
차트에서 볼륨으로 연결
가상의 차트에서 Pod의 볼륨을 정의하는 부분은 다음과 같이 구성할 수 있습니다. 이름이 지정되어 있으면 해당 Secret의 token 값을 secret.txt 파일로 제공합니다.
{{- if .Values.admin.existingSecretName }}
volumes:
- name: admin-secret
secret:
secretName: {{ .Values.admin.existingSecretName | quote }}
items:
- key: {{ .Values.admin.existingSecretKey | quote }}
path: secret.txt
{{- end }}
비밀정보를 사용할 컨테이너에는 같은 조건으로 볼륨 마운트를 연결합니다. 다음은 컨테이너 설정 안에 넣는 예시입니다.
{{- if .Values.admin.existingSecretName }}
volumeMounts:
- name: admin-secret
mountPath: /var/run/app-secret
readOnly: true
{{- end }}
이 구성에서 애플리케이션은 /var/run/app-secret/secret.txt를 읽습니다. 볼륨의 Secret 참조는 Pod와 같은 네임스페이스에서 찾으므로, Apollo가 생성한 Secret과 개체의 설치 위치가 일치해야 합니다.