hubanbei00的家园 2020-02-25
一、
Secret资源对象:解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中。Secret可以以Volume或者环境变量的方式使用。
用来保存一些敏感信息,比如数据库的用户名密码或者密钥。
Secret有三种类型:
1.Service Account:用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中。
2.Opaque:base64编码格式的Secret,用来存储密码、密钥等。
3.Kubernetes.io/dockerconfigjson:用来存储私有docker registry的认证信息。
二,以实验测试的方式,创建4种secret资源。
姓名:class=lbs
密码:password=www.com
创建2个Pod,分别以挂载Volume的方式,和以环境变量env的方式去使用,secret2,和secret4.
1)通过 --from-literal(文字的): kubectl?create?secret?generic?**lbssecret1 (创建secret资源的名)**--from-literal=class=lbs?--from-literal=password=www.comww.com Generic:通用的、一般的。加密方式。 查看secret资源 5.?kubectl?get?secrets??? 6.NAME??????????????????TYPE??????????????????????????????????DATA???AGE?? 7.lbssecret1????????????Opaque????????????????????????????????2??????24s?? 使用describe可以查看secret资源的详细信息。**(可以看到是以密文的方式存储)** 1kubectl?describe?secrets?lbssecret1??? 2.Name:?????????lbssecret1?? 3.Namespace:????default?? 4.Labels:???????<none>?? 5.Annotations:??<none>?? 6.?? 7.Type:??Opaque?? 8.?? 9.Data?? 10.====?? 11.class:?????3?bytes?? #只能查看到数据的大小,无法查看到数据内容。 12.password:??7?bytes?? 2)通过 --from-file(文件):(**这种方式不推荐使用,需要将存储的数据写入到文件中,注意每个文件只能存储一个数据。)** echo lbs >class echo www.com >password kubectl create secret generic lbssecret2 --from-file=class --from-file=password 查看: 1.kubectl?describe?secrets?lbssecret2??? 2.Name:?????????lbssecret2?? 3.Namespace:????default?? 4.Labels:???????<none>?? 5.Annotations:??<none>?? 6.?? 7.Type:??Opaque?? 8.?? 9.Data?? 10.====?? 11.class:?????4?bytes?? 12.password:??8?bytes?? 3)通过 --from-env-file:**(这种方式可以在同一个文件内写入多个数据。)** vim lbs.txt class=lbs password=www.com(保存退出) kubectl create secret generic mysecret3 --from-env-file=lbs.txt 查看: 1.kubectl?describe?secrets?lbssecret3??? 2.Name:?????????lbssecret3?? 3.Namespace:????default?? 4.Labels:???????<none>?? 5.Annotations:??<none>?? 6.?? 7.Type:??Opaque?? 8.?? 9.Data?? 10.====?? 11.class:?????3?bytes?? 12.password:??7?bytes?? 4)通过yaml配置文件的方式。(把需要保存的数据加密) echo?lbs?|?base64 echo?www.com?|?base64?? vim lbssecret4.yaml apiVersion: v1 kind: Secret metadata: name: mysecret4 data: class: #编译的lbs password: #编译的www.com 执行文件: kubectl?apply?-f?lbssecret4.yaml 1.kubectl?describe?secrets?lbhsecret4??? 2.Name:?????????lbhsecret4?? 3.Namespace:????default?? 4.Labels:???????<none>?? 5.Annotations:???? 6.Type:?????????Opaque?? 7.?? 8.Data?? 9.====?? 10.password:??8?bytes?? 11.class:?????4?bytes??
创建2个Pod,分别以挂载的方式,和以环境变量的方式去使用,secret2,和secret4.
1)以Volume挂载的方式:使用lbssecret2. vim pod1.yaml apiVersion: v1 kind: Pod metadata: name: lbspod1 spec: containers: - name: lbspod image: busybox args: - /bin/sh - -c - sleep 300000 volumeMounts: - name: secret-lbs mountPath: "/etc/secret-lbs" 挂在到pod容器内的路径 readOnly: true volumes: - name: secret-lbs secret: secretName: lbssecret2
执行yaml文件,查看Pod状态:
vim pod2.yaml apiVersion: v1 kind: Pod metadata: name: lbspod2 spec: containers: - name: lbspod image: busybox args: - /bin/sh - -c - sleep 300000 env: - name: SECRET_CLASS#容器内的变量名 valueFrom: secretKeyRef:#提取环境变量的值 name: lbssecret4#调用secret资源的lbssecret4 key: class#调用lbssecret4对应class的值 - name: SECRET_PASSWORD valueFrom: secretKeyRef: name: lbssecret2 key: password
执行yaml文件,查看Pod状态: