首页/云/Kubernetes 速查/kubernetes.io/tls 类型 Secret
配置与存储54 条

kubernetes.io/tls 类型 Secret

承载 TLS 证书与私钥的标准类型:键固定为 tls.crt 与 tls.key,供 Ingress 与网关引用;kubectl 可直接生成。

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

类型定位

kubernetes.io/tls 是承载证书与私钥的标准 Secret 类型,键固定为 tls.crt(证书,含链)与 tls.key(私钥)。适用平台是 Kubernetes,Ingress 的 spec.tls[].secretName 和各网关实现都引用它。用专用类型而不是 Opaque 的价值在于字段名被规范约束,消费方不必猜键名,创建命令也能直接校验文件是否为有效 PEM。

基本信息

适用平台Kubernetes,命名空间级 Secret 类型
固定键tls.crt、tls.key
创建方式kubectl create secret tls <名称> --cert=证书 --key=私钥
被谁引用Ingress 的 tls 段、网关实现、应用侧自定义挂载

典型使用场景

  • 域名 HTTPS:为 Ingress 提供证书,控制器据此终结 TLS
  • 证书续期:同名 Secret 覆盖新证书,控制器重载后生效
  • 多域名共用:一个证书含多个 SAN,tls.hosts 列出全部域名
  • 到期巡检:批量导出证书查看有效期,提前安排续期
  • 本地验证:把证书挂进容器,供应用自建 TLS 监听

创建与检查

创建与检查
kubectl create secret tls app-tls -n prod \
  --cert=fullchain.pem --key=privkey.pem
kubectl get secret app-tls -n prod -o jsonpath='{.type}'     # kubernetes.io/tls
kubectl get secret app-tls -n prod -o jsonpath='{.data}' | head -c 200
kubectl get secret app-tls -n prod -o jsonpath='{.data.tls\.crt}' | base64 -d | openssl x509 -noout -subject -dates
kubectl get secret app-tls -n prod -o jsonpath='{.data.tls\.crt}' | base64 -d | openssl crl2pkcs7 -nocrl -certfile /dev/stdin | openssl pkcs7 -print_certs -noout | head

检查项与含义

检查项命令要点异常表现
证书主题与 SANopenssl x509 -subject -ext subjectAltName域名不在 SAN 里,浏览器报不匹配
有效期openssl x509 -dates已过期,客户端直接拒绝连接
证书链查看 crt 里是否含中间证书部分客户端校链失败
键名jsonpath 取 tls.crt 与 tls.key键名写错,Ingress 引用无效
Ingress 侧通过 spec.tls[].secretName 引用;部分网关实现需要控制器重载后才生效,验证时用 curl -vk 看实际下发的证书。
证书文件是 PEM 文本,data 里存的是 base64 编码后的内容,排障时用 base64 -d 还原再交给 openssl 解析。

证书运维要点

  • 创建前先核对证书文件包含完整链:叶子证书在前、中间证书在后,私钥单独一个文件
  • 上线后用 openssl 检查主题与有效期,并把到期时间纳入告警,避免静默过期
  • 续期采用同名覆盖 + 控制器重载的方式,改动面最小且不影响 Ingress 引用
  • 多域名场景核对 SAN 列表与 tls.hosts 是否逐一对应,缺少任一项都会触发证书不匹配告警

易错点

  • 证书链要放全(含中间证书),否则部分客户端校链失败,表现为「部分设备能开、部分设备报错」
  • 换证书后确认网关已重读配置,个别实现需要重启控制器 Pod 才能加载新证书
  • 把证书与私钥写在同一个文件里再创建:--cert 与 --key 必须分开指定,混在一起会被拒绝
  • Secret 与 Ingress 不在同一命名空间:引用静默失效,访问仍是默认证书或报错

数据来源与参考

  • Kubernetes 官方文档 · Secret(TLS 类型)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌