概述
作用:对数据进行加密,存在etcd中,让Pod容器以挂载Volume方式(变量或Volume形式)进行访问
Secret 解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec 中。Secret 可以以 Volume 或者环境变量的方式使用
使用场景:凭证
base64编码
如下:便是对admin进行base64编码后的结果
使用
第一步:创建secret加密数据
编写下面的配置文件(secret.yaml):其里面的数据都是加密后的内容
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
username: YWRtaW4=
password: MWYyZDFlMmU2N2Rm
将上面的配置文件进行创建并执行
查看:如此便完成了创建
第二步:以变量的形式挂载到pod容器中
创建如下的yaml文件(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
如下图:便是以变量形式挂载,分别将mysecret中的username和password挂载过来,然后赋值给最外层红框中的name
创建并执行上面的yaml文件
查看pod,等待pod镜像下载完成
进入pod并查看变量的值:之前的值被成功导入了
第二步:以Volume形式挂载到Pod
创建如下的yaml(secret-vol.yaml)文件,内容如下
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: foo
mountPath: "/etc/foo"
readOnly: true
volumes:
- name: foo
secret:
secretName: mysecret
下面的secretName要和之前配置的名字一样,将其挂载到etc/foo目录下,文件类型是只读
将之前的重复的pod给删除掉
创建并执行上面的yaml文件
等待容器创建成功,进入pod查看:便可以发现之前挂载的目录下还有两个目录
进入对应的目录进行查看:之前的值都被存入了