首页/云/Kubernetes 速查/Secret 创建方式(generic/tls/docker-registry)
配置与存储54 条

Secret 创建方式(generic/tls/docker-registry)

按用途选择创建子命令:generic 存任意键值、tls 直接吃证书文件、docker-registry 生成镜像仓库凭据;也可用 YAML 声明。

Kubernetes 速查云更新于 2026-10-13

创建密钥对象是什么

密钥对象用来存放需要控制读取范围的内容:口令、令牌、证书与私钥、镜像仓库凭据。按用途分为几类创建方式:通用的键值类、证书类、镜像仓库类,创建出来的对象类型不同,被使用的方式也不同。它与配置对象的关键差别是内容不进入容器日志与描述信息,且读取权限可以单独控制。

它并不等于加密

内容在对象里只是编码存放,不是加密存放:有读取权限的主体就能还原出明文。真正的保护来自访问控制、加密存储配置以及避免把内容写进命令行与代码仓库。创建时尤其要注意,直接在命令里写口令会留在命令历史与进程信息中。

基本信息

适用环境任何 Kubernetes 发行版
常见类型通用键值、证书类、镜像仓库凭据类
内容状态编码存放,不是加密,依赖权限与存储加密保护
作用范围按命名空间隔离,不能被其他命名空间直接引用
常见引用作为环境变量注入、以文件挂载、或作为拉取镜像的凭据
命令行风险明文口令会留在历史与进程信息中

典型使用场景

  • 应用凭据:数据库口令、消息队列账号这类需要保密的内容
  • 证书托管:为入口层提供证书与私钥
  • 镜像拉取:私有仓库的用户名口令,供节点拉取镜像使用
  • 令牌管理:访问外部服务所需的访问令牌
  • 证书文件挂载:应用需要按文件路径读取证书的场景
  • 轮换流程:凭据换新后重建使用它的实例

三类创建方式

三类创建方式
kubectl create secret generic db-pass --from-literal=password=<占位> -n prod   # 通用键值
kubectl create secret tls app-tls --cert=tls.crt --key=tls.key -n prod          # 证书类
kubectl create secret docker-registry regcred \                                 # 镜像仓库类
  --docker-server=registry.example.com --docker-username=ci \
  --docker-password=<占位> -n prod
kubectl create secret generic app-cert --from-file=./tls.crt -n prod            # 从文件创建

三类用途与引用方式

类型典型内容引用方式
通用键值类口令、令牌、普通配置密钥注入环境变量或以文件挂载
证书类证书与私钥入口规则或应用挂载使用
镜像仓库类仓库地址与凭据在对象模板里作为拉取凭据引用
来源形式字面量或文件从文件创建可避免命令行留痕
从文件创建时,文件末尾的换行会被一并保存,程序读取后需要自行清理空白字符。
把凭据写在命令行参数里会残留在命令历史与进程列表中;优先使用文件或标准输入方式创建。

易错点

  • 把口令写在命令行:残留在历史记录与进程信息中,等于公开
  • 以为对象内容已加密:只是编码存放,依赖权限与存储层加密保护
  • 凭据建在别的命名空间:引用不到,现象与未配置凭据相同
  • 镜像仓库地址与凭据里的服务器地址不一致:包含端口或前缀时必须完全对应,否则认证失败
  • 只更新对象不重建实例:以环境变量注入的凭据不会自动生效

数据来源与参考

  • Kubernetes 官方文档 · kubectl create secret
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌