だいごろうのブログ

熊本出身で大阪、東京、パリを転勤して、今は福岡でデータエンジニアです

[MEMO] katacodaでLearn Kubernetes ver6 manage Secrets

Use Kubernetes to manage Secrets

Use Kubernetes to manage Secrets | Kubernetes | Katacoda

Secrets

create secret

こんな感じでシークレット用のyamlを作成することが可能

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  user: {user-name base64}
  password: {password base64}

read from pod

podのyamlの中で、このように指定することでenvの中に埋め込むことが可能である。 ただ、メモリ上に配置することはセキュリティの観点からあまり好ましくない。

      env:
        - name: SECRET_USERNAME
          valueFrom:
            secretKeyRef:
              name: my-secret
              key: user

また、こんなvolumeと組み合わせでファイルとして読み込むことも可能みたい。

apiVersion: v1
kind: Pod
....
spec:
  volumes:
  - name: {great-name-of-volume}
    secret:
      secretName: {your secrete name}
  containers:
    - ....
      volumeMounts:
          - name: great-name-of-volume
            mountPath: /your/secret/path

Secrets from file

別途、ファイルを保存することも可能なようだ コマンドだと、こんな感じで。

kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt

yamlだと、こんな感じになるみたい。(from version 1.14)

secretGenerator:
- name: db-user-pass
  files:
  - username.txt
  - password.txt
EOF

こんな感じ。

Etc

Secretの更新

Secretの更新頻度などはConfigMapAndSecretChangeDetectionStrategyで設定されてるみたい。更新までは、Cacheに乗ってるデータが使われるので、applyしてから反映まで少し時間かかるみたい。デフォルトどれくらいかは、調べてない。 https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/kubelet/config/v1beta1/types.go#L679-L684

SSH Keyの例

https://kubernetes.io/docs/concepts/configuration/secret/#use-case-pod-with-ssh-keys

Best Practice

あとで読む https://kubernetes.io/docs/concepts/configuration/secret/#best-practices