kubernetes secret
来源:原创
时间:2019-04-20
作者:脚本小站
分类:云原生
secret是kubernetes上的标准资源,用来配置应用的环境变量,将环境变量做成 secret 资源。有两种使用方法,第一种:在Pod中使用 env.valueFrom.secretKeyRef 指令来引用即可将变量注入到Pod中,在Pod中使用printenv即可看到注入的变量。第二种:以挂载券的方式挂在为文件。
secret的三种类型:
generic:通用的secret ,用来保存一些密码数据之类的
docker-registry:保存docker registry 认证信息,在pull私有的仓库时需要认证时用到的账号密码信息,和 imagePullSecret 配合使用。
tls:保存私钥和证书。
创建 secret:
kubectl create secret generic mysql-password --from-literal=password=123456
describe:
kubectl get secrets mysql-password -o yaml
yaml:
apiVersion: v1 kind: Secret metadata: name: mysql-password data: password: MTIzNDU2 # base64编码的
可以解码:
echo MTIzNDU2 | base64 -d 123456
以环境变量的方式注入Pod:
apiVersion: v1 kind: Pod metadata: name: secret-test labels: app: myapp spec: containers: - name: busybox image: busybox:1.28 command: ["sleep 3600;"] env: - name: MYSQL_PASSWORD # 注入到Pod中的变量名 valueFrom: secretKeyRef: name: mysql-password # secret资源名称 key: password
查看环境变量是否注入到了Pod中:
kubectl exec secret-test -it -- printenv MYSQL_PASSWORD=123456
将secret挂载为文件的方式:
apiVersion: v1 kind: Pod metadata: labels: run: pod-secret name: pod-secret spec: containers: - image: busybox:1.28 name: pod-secret command: - "sleep" - "3600" volumeMounts: - name: secret mountPath: /secret/ volumes: - name: secret secret: secretName: mysql-secret
查看Pod中的文件:
kubectl exec -it pod-secret -- sh / # cat secret/password 123456
注意:以secret方式注入的变量或挂载的文件当secret更新时Pod中注入的内容是不会被更新的。