首页 > kubernetes(k8s) > kubernetes之Secret
2019
08-06

kubernetes之Secret

Secret存在的意义

Secret 解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec中。

Secret 可以以 Volume 或 环境变量的方式使用,也就意味着,我们有一些密码要被我们的pod所使用的时候,完全可以先存储在我们的 secret中,当pod启动的时候挂载进去即可

Secret 有三种类型:

  • Service Account(SA):用来访问 Kubernetes API,由 Kubernetes 自动创建,并且会自动挂载到 Pod 的/run/secrets/kubernetes.io/serviceaccount 目录中
  • Opaque:base64编码格式的Secret,用来存储密码、密钥等
  • kubernetes.io/dockerconfigjson :用来存储私有 docker registry 的认证信息

1.Service Account (不常用)

访问任意一个pod查看

2.Opaque :base64编码格式的Secret,用来存储密码、密钥等 (常用)

Opaque 类型的数据是一个 map 类型,要求 value 是 base64 编码格式:
例如我们要把某个密码加密保存
那么先把这个密码转成base64位,然后再写入我们的配置文件中

创建一个secret

创建成功后查看

k8s会为每个命名空间下创建一个sa,用于pod的挂载

接下来将创建好的secret挂载到pod中

创建后查看pod /etc/secrets 目录下是否多了2个文件

查询已然多了2个文件,查看文件内容是解密后的,secret 用户名和密码,虽然创建时候用base64加密保存的,但是在使用中他会自动解密

接下来将 Secret 导出到环境变量中

创建成功后登录pod查看pod环境变量

3.kubernetes.io/dockerconfigjson:用来存储私有 docker registry 的认证信息(常用)

例如:docker去下载镜像,如果是私有镜像,那么需要输入仓库的账号密码,我们就可以用secret来事先设置好它登录私有仓库的账号和密码,其实就是认证秘钥。

使用 Kuberctl 创建 docker registry 认证 secret

最后编辑:
作者:shooter
这个作者貌似有点懒,什么都没有留下。