Secret
See also ConfigMap
Overview
ConfigMapと同じような使い方ができるが、暗号化機構が備わっており、クレデンシャルなど機微情報を扱うのに向いている。
Podから環境変数として読み込むという使い方をすることが多いようだ。
参考:
Documents
Secretsの作成
例1) テキストファイルから作成
echo -n 'admin' > ./username.txt
echo -n '1f2d1e2e67df' > ./password.txt
kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt
例2) 自分で定義ファイル(YAML)を作る
echo -n 'admin' | base64
YWRtaW4=
echo -n '1f2d1e2e67df' | base64
MWYyZDFlMmU2N2Rm
## secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
username: YWRtaW4=
password: MWYyZDFlMmU2N2Rm
kubectl apply -f ./secret.yaml
Secretの参照
ワークロードからSecretを参照したい場合、次のやり方を取ることができる:
- 環境変数として直接Secretを参照する
- ボリュームとしてマウントし、ファイルを参照する
Example:
apiVersion: v1
kind: Pod
metadata:
name: run
spec:
containers:
- name: run-container
image: debian
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials # Secret名
key: password # Secretに含まれるキー名
volumeMounts:
- name: secret
mountPath: "/app/.credentials"
volumes:
- name: secret
secret:
secretName: app-credentials
参考: