学习 Kubernetes(十五):Secret

Secret 是 Kubernetes 用于保存敏感配置的资源。如密码、密钥、证书等。

创建 Secret

命令行

从文件创建 Secret:

kubectl create secret generic my-secret --from-file=secret-file  

以字面量创建 Secret:

echo -n 'secret' | base64  

获取字符 Base64 编码。👆的🌰中,字符 'secret' 经过 Base64 编码,值为 c2VjcmV0

注意:echo 命令需要 -n 参数来去掉字符末尾的换行符。

kubectl create secret generic my-secret --from-literal=secret=c2VjcmV0  

YAML 文件

使用 YAML/JSON 配置文件,data 键值对中的值同样需要经过 Base64 编码。

定义 Secret 配置文件:

apiVersion: v1  
kink: Secret  
metadata:  
  name: my-secret
data:  
  secret: c2VjcmV0
  secret-file: |
    dGhpcyBpcyBhIHNlY3JldC4=

使用 kubectl create 创建 Secret:

kubectl create -f my-secret.yml  

使用 Secret

在 Pod 中,可以以环境变量和 Volumn 两种方式使用 Secret。

apiVersion: v1  
kind: Pod  
metadata:  
  name: my-pod
spec:  
  containers:
    - name: my-pod
      image: my-image
      env:
        - name: SECRET
          valueFrom:
            secretKeyRef:
              name: my-secret
              key: secret
      volumeMounts:
        - mountPath: /app/secret
          name: my-secret
  volumes:
    - name: my-secret
      secret:
        secretName: my-secret
        items:
          - key: secret-file
            path: secret-file

上面的🌰中,环境变量 SECRET 来自 Secret 的 secret,Secret 文件 secret-file 装载到目录 /app/secret 下。

参考