Secret存在的意义
Secret的存在是为了解决密码、token、密钥等敏感信息数据的配置问题
我们不再将这些敏感数据暴露到镜像或者pod中去,而是存放在etcd中
镜像或者pod可以数据卷Volume或者环境变量的方式对进行读取访问
数据初始化
-
base64得到用户名和密码
-
创建资源编排yaml
-
-
账号和密码我们使用刚刚我们base64加密的来的密文
-
创建Secret加密数据
-
kubectl create -f secret.yaml
Pod以环境变量名方式访问
定义pod的资源编排文件
-
-
这个pod如下左图所示,想读取secret中的数据需要配置secret相关的信息
-
env:表示读取secret中的数据载入到环境变量中
valueFrom:其下的属性都是用来定位敏感数据的
name:定位元数据名称空间
key:定位值
上面的pod信息表示,从名为mysecret的元数据空间中取得key为username的值value,将这个value赋值给SECRET_USERNAME,并在环境变量中存在
password亦是同理
部署yaml,测试效果
-
可以发现,我们在环境变量中成功取得了在Secret中定义的加密数据
Pod以挂载Volume方式访问
-
-
这个pod如下左图所示,想读取secret中的数据需要配置数据卷的相关信息
-
将Secret挂载到了数据卷Volume中
然后在spec > containers中
指定了会被容器挂载的数据卷的名称为:foo
指定了被容器挂在的数据卷的路径
设置了数据卷的读写模式,默认值为读写模式
也就是说,容器挂载数据卷,数据卷挂载Secret,然后一条通道打通,在Pod中访问Secret中的数据
部署yaml,测试效果