Kubernetes: Resource: Secrets

 5th June 2021 at 11:39am

Secrets 非常类似 ConfigMaps。但是相比 ConfigMaps 多了加密能力。

安全

假如不 配置加密算法和密钥,Secrets 中的 K-V 对会以明文形式存在 etcd 中。如果配置了,则 etcd 中的数据会被加密,密码和密钥会以文件形式(未验证)保存在 master 的机器上。

kube-apiserver 可以获取和设置加密算法,因此它的权限控制也要做。

有能力创建 pod 的人也可以隐式地看到 Secrets 的值。

Pod 中的 secret volumn 会是个 tmpfs,避免落盘带来的安全问题。

拉私有 Docker Registry 镜像

也用到了 Secrets 的能力。建一个 docker-registry 类型的 secret:

$ kubectl create secret docker-registry mydockerhubsecret \
--docker-username=myusername --docker-password=mypassword \
--docker-email=my.email@provider.com

在 Pod 中配置 imagePullSecrets

apiVersion: v1
kind: Pod
metadata:
  name: private-pod
spec:
  imagePullSecrets:
  - name: mydockerhubsecret
  containers:
  - image: username/private:tag
    name: main

用 Service Account 可以避免每个 pod 都加 imagePullSecrets