Kubernetes的Secret对象使用
- 2019 年 10 月 3 日
- 筆記
Secret可以把想要访问的加密数据,存放到Etcd中,然后Pod可以通过的Volume的方式,访问到Secret保存的信息 ,每当数据修改的时候,Pod挂载的Secret文件也会被修改,特别适合用来存放账户密码
一、创建Secret对象
1. 通过文件创建
生成两个文件,分别是username.txt和password.txt
echo "chenqionghe" > ./username.txt echo "111111" > ./password.txt
创建
kubectl create secret generic user --from-file=./username.txt kubectl create secret generic pass --from-file=./password.txt
2. 通过yaml创建
注意:值必须是base64转码
apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: user: Y2hlbnFpb25naGUK pass: MTExMTExCg==
创建
kubectl apply -f mysecret.yaml
二、获取secret对象
root@VM-0-8-ubuntu:/home/ubuntu/project-volume# kubectl get secrets NAME TYPE DATA AGE default-token-gqfrx kubernetes.io/service-account-token 3 20d mysecret Opaque 2 1m pass Opaque 1 6m user Opaque 1 6m
三、通过pod使用secret示例
这里指定了volume是projected类型,引用的是secret的user和pass,挂载路径为/projected-volume
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
执行创建
kubectl apply -f test-projected-volume.yaml
查看pod已经创建出来
root@VM-0-8-ubuntu:/home/ubuntu/project-volume# kubectl get pod NAME READY STATUS RESTARTS AGE test-projected-volume 1/1 Running 0 5m
再进入pod内查看,看到文件已经存在,并且内容和设置的一样
root@VM-0-8-ubuntu:/home/ubuntu/project-volume# kubectl exec -it test-projected-volume -- /bin/sh / # ls /projected-volume/ password.txt username.txt / # cat /projected-volume/username.txt chenqionghe
然后我们修改一下username的secret文件,将chenqionghe修改为cqh(对应的base编码为Y3FoCg==)
kubectl edit secret user
修改内容如下
apiVersion: v1 data: username.txt: Y3FoCg== kind: Secret metadata: creationTimestamp: 2019-09-27T09:14:00Z name: user namespace: default resourceVersion: "2108808" selfLink: /api/v1/namespaces/default/secrets/user uid: 24566f8f-e107-11e9-8c22-f242c645cfec type: Opaque
再次查看pod中挂载的文件,已经发生变化
root@VM-0-8-ubuntu:/home/ubuntu# kubectl exec -it test-projected-volume -- cat /projected-volume/username.txt cqh