配置管理系列(一) Secret
一、简介
Secret对象类型用来保存敏感信息,解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod中。Secret 可以以两种方式来进行使用:
- 数据卷(Volume)
- 环境变量
敏感信息以base64编码格式存储,之后Pod会自动读取明文。
二、Secret的创建与使用
(一)创建Secret加密数据
一般数据加密使用base64编码,所以可以先使用base64编码对用户名和密码进行加密:
# 对用户名root 密码123进行加密 [root@k8smaster ~]# echo -n "root" | base64 cm9vdA== [root@k8smaster ~]# echo -n "123" | base64 MTIz
secret.yaml文件创建:
apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: username: cm9vdA== password: MTIz
执行:
[root@k8smaster ~]# kubectl create -f secret.yaml
查看:
[root@k8smaster ~]# kubectl get Secret NAME TYPE DATA AGE default-token-mtnzx kubernetes.io/service-account-token 3 66d mysecret Opaque 2 8m35s
(二)使用
1、以环境变量的形式使用
secret_var.yaml
apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: nginx image: nginx env: - name: SECRET_USERNAME valueFrom: secretKeyRef: name: mysecret key: username - name: SECRET_PASSWORD valueFrom: secretKeyRef: name: mysecret key: password
其中:
- 声明了两个环境变量 SECRET_USERNAME、SECRET_PASSWORD
- secretKeyRef 中的name是之前创建的Secret名称
- key 是之前创建Secret中的username和password
执行:
[root@k8smaster ~]# kubectl create -f secret_var.yaml
查看:
[root@k8smaster ~]# kubectl get pods NAME READY STATUS RESTARTS AGE mypod 1/1 Running 0 4m4s
此时可以进入Pod中使用环境变量:
# 自动将base64密码进行反解 [root@k8smaster ~]# kubectl exec -it mypod bash kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead. root@mypod:/# echo $SECRET_USERNAME root root@mypod:/# echo $SECRET_PASSWORD 123
2、以数据卷形式使用
基于secret.yaml文件之上进行操作,创建secret_volume.yaml文件:
apiVersion: v1 kind: Pod metadata: name: volpod spec: containers: - name: nginx image: nginx volumeMounts: - name: foo mountPath: "/etc/foo" readOnly: true volumes: - name: foo secret: secretName: mysecret
使用:
[root@k8smaster ~]# kubectl exec -it volpod bash ... root@volpod:/# ls /etc/foo password username root@volpod:/# cat /etc/foo/username root root@volpod:/# cat /etc/foo/password 123
作者:iveBoy
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。