概述
Kubernetes Secret
对象可以用来储存敏感信息,例如:密码、OAuth token、ssh 密钥等。如果不使用 Secret
,此类信息可能被放置在 Pod 定义中或者容器镜像中。将此类敏感信息存储到 Secret
中,可以更好地:
- 控制其使用
- 降低信息泄露的风险
用户可以直接创建 Secret,Kubernetes 系统也会创建一些 Secret。
Secret有如下几种使用方式:
- 作为 Pod 的数据卷挂载
- 作为 Pod 的环境变量
- kubelet 在抓取容器镜像时,作为 docker 镜像仓库的用户名密码
内建Secret
Service Account 将自动创建 Secret
Kubernetes 自动创建包含访问 Kubernetes APIServer 身份信息的 Secret,并自动修改 Pod 使其引用这类 Secret。
如果需要,可以禁用或者自定义自动创建并使用 Kubernetes APIServer 身份信息的特性。然而,如果您期望安全地访问 Kubernetes APIServer,您应该使用默认的 Secret 创建使用过程。
自建Secret
您可以使用如下方式创建自己的 Secret:
-
使用 kubectl 创建 Secret
-
手动创建 Secret
-
使用 Generator 创建 Secret
解码和编辑
Kubenetes 中,Secret 使用 base64 编码存储,您可以将其 解码获得对应信息的原文,创建 Secret 之后,您也可以再次 编辑Secret