k8s 深入剖析-01-投射数据卷 Secret、ConfigMap、ServiceAccountToken
一、投射数据卷(Projected Volume)
在 k8s 中有几种特殊的Volume,它们存在的意义不是存放容器里的数据,也不是用于容器和宿主机之间的数据交换,而是为容器提供预先定义好的数据。所以,从容器的角度来看,这些 Volume 里的信息就仿佛是被 k8s “投射” 进入容器中的,这正是 Projected Volume 的含义。
到目前为止,k8s支持的常用 Projected Volume 共有以下 4 中:
(1)Secret
(2) ConfigMap
(3) ServiceAccountToken
Secret
Secret 的作用就是把Pod想要访问的加密数据存放到 etcd 中,你就可以通过在 Pod 的容器里挂载 Volume 的方式访问这些Secret 里保存的信息了。
test-secret-volume.yaml
[root@k8s-master01 test]# cat test-secret-volume.yaml
apiVersion: v1
kind: Pod
metadata:
name: test-projected-volume
spec:
containers:
- name: test-secret-volume
image: busybox
args:
- sleep
- "86400"
volumeMounts:
- name: mysql-cred
mountPath: "/projected-volume"
readOnly: true
volumes:
- name: mysql-cred
projected:
sources:
- secret:
name: user
- secret:
name: pass
[root@k8s-master01 test]#
mysecret.yaml
[root@k8s-master01 test]# cat mysecret.yaml
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
user: YWRtaW4=
pass: MTIzNDU2
Secret 对象要求这些数据必须是经过Base64转码的,以免出现明文密码的隐患;
[root@k8s-master01 ~]# echo -n 'admin' | base64
YWRtaW4=
[root@k8s-master01 ~]# echo -n '123456' | base64
MTIzNDU2
部署:
kubectl apply -f mysecret.yaml
kubectl apply -f test-secret-volume.yaml
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)