2022年10月更文挑战22-k8s中的secret

117 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第22天,点击查看活动详情

k8s中的secret

前文

本文内容为关于k8s中secret加密信息相关知识的总结与整理,其中的内容属于个人总结类型的记录,可能包含不全面或不完整之处。

什么是k8s中的secret

k8s中的secret可以认为是保密字典。与配置字典相似,主要是用于存储一些需要在容器中引用的内容。但与常规的配置文件有所区别的是,保密字典主要会用于存储一些需要加密的信息,例如密码信息等等。就像在kubesphere中创建保密字典时的类型选项一样,保密字典主要用于一些不想被看到的信息,以加密的形式进行存储。而加密的方式是直接采用base64加密。

image.png

保密字典的创建与使用

kind: Secret
apiVersion: v1
metadata:
  name: harbor
  namespace: test-cloud
  annotations:
    kubesphere.io/creator: admin
    secret.kubesphere.io/force-insecure: 'true'
data:
  .dockerconfigjson: >-
    eyJhdXRocyI6eyJodHRwOi8vMTAuMjExLjU1LjEwOjMwMDAyIjp7InVzZXJuYW1lIjoiYWRtaW4iLCJwYXNzd29yZCI6IkhhcmJvcjEyMzQ1IiwiZW1haWwiOiIiLCJhdXRoIjoiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9In19fQ==
type: kubernetes.io/dockerconfigjson

如上面的配置文件所示,这是一个创建镜像访问时的保密字典。主要是在pod创建时,我们指定了选择我们自建仓库中的镜像。而想要在自建仓库中拉取镜像,我们需要提前进行保密字典的创建。将仓库的用户名及密码存储到保密字典之中。如上面的configjson中也就存储了实际我们访问镜像的认证信息。这样当我们直接在pod中选择自己的镜像进行拉取时,会直接采用保密字典中存储的账号密码信息拉取。而如果不是存储为镜像信息的加密字典,例如存储账号信息、账号密码等等其他形式的密码,我们在使用时直接按照配置字典的使用方式使用即可。也就是直接通过secretKeyRef去关联我们实际的加密字典进行数据获取。

后记

  • 千古兴亡多少事?悠悠。不尽长江滚滚流。