[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