Secret 用于保存敏感信息。
创建 secret
mysecret.yml
apiVersion: v1
kind: Secret
metadata:
name: mysecret
data:
username: YWRtaW4=
password: MTIzNDU2
其中 username 和 password 的值都是 base64 编码后的值,编码方式:
echo -n admin | base64
YWRtaW4=
echo -n 123456 | base64
MTIzNDU2
启动:
kubectl apply -f mysecret.yml
查看 secret
kubectl get secrets mysecret
NAME TYPE DATA AGE
mysecret Opaque 2 22s
查看详情:
kubectl describe secrets mysecret
Name: mysecret
Namespace: default
Labels: <none>
Annotations:
Type: Opaque
Data
====
password: 6 bytes
username: 5 bytes
只能看到 key,看不到 value。
查看 value:
kubectl edit secrets mysecret
image
base64 解码:
echo -n YWRtaW4= | base64 --decode
admin
pod 中使用 secret
配置文件 mypod-secret.yml:
apiVersion: v1
kind: Pod
metadata:
name: mypod-secret
spec:
containers:
- name: mypod-secret
image: busybox
args:
- /bin/sh
- -c
- sleep 10; touch /tmp/healthy; sleep 30000
volumeMounts:
- mountPath: "/etc/foo"
name: foo
readOnly: true
volumes:
- name: foo
secret:
secretName: mysecret
启动:
kubectl apply -f mypod-secret.yml
进入 pod 查看 secret:
kubectl exec -it mypod-secret sh
image
可以看到,每个 key 都被创建成了一个文件,value 以明文保存。
secret 动态更新
以 volume 方式使用 secret 支持动态更新,secret 更新后,容器中的数据也会更新。
把 password 改为 ‘111111’,编码:
echo -n 111111 | base64
MTExMTEx
修改 yaml 配置文件 mysecret.yml 中的 password:
...
password: MTExMTEx
更新配置:
kubectl apply -f mysecret.yml
进入 pod 查看:
kubectl exec -it mypod-secret sh
/ # cat /etc/foo/password
111111
已经更新了。
网友评论