目 录CONTENT

文章目录

k8s | 深入理解 Secret

RobKing
2023-07-19 / 0 评论 / 0 点赞 / 269 阅读 / 554 字

k8s | 深入理解 Secret

Secret 解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec 中。Secret 可以以 Volume 或者环境变量的方式使用。

Secret 与 ConfigMap 对比

相同点:

  • key/value 的形式
  • 属于某个特定的 namespace
  • 可以导出到环境变量
  • 可以通过目录 / 文件形式挂载 (支持挂载所有 key 和部分 key)

不同点:

  • Secret 可以被 ServerAccount 关联 (使用)
  • Secret 可以存储 register 的鉴权信息,用在 ImagePullSecret 参数中,用于拉取私有仓库的镜像
  • Secret 支持 Base64 加密
  • Secret 分为 Opaque,kubernetes.io/Service Account,kubernetes.io/dockerconfigjson 三种类型, Configmap 不区分类型
  • Secret 文件存储在 tmpfs 文件系统中,Pod 删除后 Secret 文件也会对应的删除

Secret的类型

Secret 有三种类型:

  • Opaque
  • kubernetes.io/dockerconfigjson
  • kubernetes.io/service-account-token

Opaque Secret

base64 编码格式的 Secret,用来存储密码、密钥等;但数据也通过 base64 --decode 解码得到原始数据,所有加密性很弱。

需要对数据进行 base64加密

创建 secret.yaml 文件

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  password: MWYyZDFlMmU2N2Rm
  username: YWRtaW4=
kubectl create -f secrets.yml

通过 kubectl get secret 查看

使用方式和ConfigMap基本相同,有两种方式来使用它:

  • 以 Volume 方式
  • 以环境变量方式

kubernetes.io/dockerconfigjson

用来存储私有 docker registry 的认证信息。

直接用 kubectl 命令来创建用于 docker registry 认证的 secret

$ kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL

查看

kubectl get secret myregistrykey  -o yaml

可以直接读取 ~/.dockercfg 的内容来创建

$ kubectl create secret docker-registry myregistrykey \
  --from-file="~/.dockercfg"

kubernetes.io/service-account-token

用于被 serviceaccount 引用。serviceaccout 创建时 Kubernetes 会默认创建对应的 secret。Pod 如果使用了 serviceaccount,对应的 secret 会自动挂载到 Pod 的 /run/secrets/kubernetes.io/serviceaccount 目录中。

$ kubectl run nginx --image nginx
deployment "nginx" created
$ kubectl get pods
NAME                     READY     STATUS    RESTARTS   AGE
nginx-3137573019-md1u2   1/1       Running   0          13s
$ kubectl exec nginx-3137573019-md1u2 ls /run/secrets/kubernetes.io/serviceaccount
ca.crt
namespace
token

参考链接

0

评论区