Kubernetes之Secret认识

Secret存在的意义

  • Secret的存在是为了解决密码、token、密钥等敏感信息数据的配置问题

  • 我们不再将这些敏感数据暴露到镜像或者pod中去,而是存放在etcd中

  • 镜像或者pod可以数据卷Volume或者环境变量的方式对进行读取访问

数据初始化

  • base64得到用户名和密码

  • 创建资源编排yaml

    • secret.yaml [提取码:6666]

    • 账号和密码我们使用刚刚我们base64加密的来的密文

创建Secret加密数据

  • kubectl create -f secret.yaml

Pod以环境变量名方式访问

定义pod的资源编排文件

  • secret-val.yaml [提取码:6666]

    • 这个pod如下左图所示,想读取secret中的数据需要配置secret相关的信息

  • env:表示读取secret中的数据载入到环境变量中

  • valueFrom:其下的属性都是用来定位敏感数据的

    • name:定位元数据名称空间

    • key:定位值

  • 上面的pod信息表示,从名为mysecret的元数据空间中取得key为username的值value,将这个value赋值给SECRET_USERNAME,并在环境变量中存在

  • password亦是同理

部署yaml,测试效果

  • 可以发现,我们在环境变量中成功取得了在Secret中定义的加密数据

Pod以挂载Volume方式访问

定义pod的资源编排文件

  • secret-vol.yaml [提取码:6666]

    • 这个pod如下左图所示,想读取secret中的数据需要配置数据卷的相关信息

  • 将Secret挂载到了数据卷Volume中

  • 然后在spec > containers中

    • 指定了会被容器挂载的数据卷的名称为:foo

    • 指定了被容器挂在的数据卷的路径

    • 设置了数据卷的读写模式,默认值为读写模式

    • 也就是说,容器挂载数据卷,数据卷挂载Secret,然后一条通道打通,在Pod中访问Secret中的数据

部署yaml,测试效果

  • 可以发现,我们已经在pod内部读取到了数据卷中的数据

.

原文地址:https://www.cnblogs.com/msi-chen/p/14336723.html