Secret を使ってみる (kubernetes)
kubernetes
Published: 2021-01-11

やったこと

今回は env ファイルから Secret を作成します。

確認環境

$ k version
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.2", GitCommit:"c97fe5036ef3df2967d086711e6c0c405941e14b", GitTreeState:"clean", BuildDate:"2019-10-15T19:18:23Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.3", GitCommit:"1e11e4a2108024935ecfcb2912226cedeafd99df", GitTreeState:"clean", BuildDate:"2020-10-14T12:41:49Z", GoVersion:"go1.15.2", Compiler:"gc", Platform:"linux/amd64"}

調査

Secret を作成しておく

sample.env

AAA=123
BBB=456
CCC=abc
$ k create secret generic --save-config first-secret --from-env-file ./sample.env
secret/first-secret created
$ k get secrets
NAME                  TYPE                                  DATA   AGE
default-token-m6ts6   kubernetes.io/service-account-token   3      49d
first-secret          Opaque                                3      101s

Pod に Secret を環境変数で渡す

sample2.yaml

apiVersion: v1
kind: Pod
metadata:
  name: first-secret
spec:
  containers:
    - name: nginx-container
      image: nginx:1.17
      envFrom:
        - secretRef:
            name: first-secret

コンテナ内では環境変数を読むことができます。

$ k apply -f sample2.yaml
pod/first-secret created

※ 出力結果は抜粋
$ k exec -it first-secret -- env
AAA=123
BBB=456
CCC=abc

k get コマンドから確認すると、Base64 で値が保存されています。

$ k get secret first-secret -o jsonpath="{.data}"
map[AAA:MTIz BBB:NDU2 CCC:YWJj]

参考