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

参考: