You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GKE Ingress场景下kubectl TLS Secret自动化部署方案咨询

你当前编写的YAML无法生效是因为Kubernetes Secret的data字段要求所有值必须是Base64编码后的字符串,不能直接填写本地文件名,可通过以下两种方式实现需求:

方法1:手动编码生成静态YAML

适合本地测试、单次部署场景:

  • 第一步:对证书和私钥文件执行Base64编码,输出时移除所有换行符
# Linux 环境执行
tls_crt=$(base64 -w 0 fullchain.pem)
tls_key=$(base64 -w 0 private.pem)

# macOS 环境执行
tls_crt=$(base64 -b 0 fullchain.pem)
tls_key=$(base64 -b 0 private.pem)
  • 第二步:将编码后的字符串替换到YAML配置的对应位置,最终可用配置如下:
---
apiVersion: v1
kind: Secret
metadata:
  name: wildcard-cert
type: kubernetes.io/tls
data:
  tls.crt: <替换为上一步得到的tls_crt编码值>
  tls.key: <替换为上一步得到的tls_key编码值>
  • 执行kubectl apply -f <你的yaml文件名>即可完成Secret创建。
方法2:自动化流水线动态生成YAML

适配你从密钥引擎拉取证书、自动化部署的场景,无需提前做Base64编码,使用Secret的stringData字段直接传入明文内容,Kubernetes会自动完成编码存储:

  • 首先从你的密钥引擎中拉取fullchain.pem和private.pem的完整明文内容
  • 动态生成以下格式的YAML配置:
---
apiVersion: v1
kind: Secret
metadata:
  name: wildcard-cert
type: kubernetes.io/tls
stringData:
  tls.crt: |
    -----BEGIN CERTIFICATE-----
    此处完整粘贴fullchain.pem的明文内容,和原始文件完全一致即可
    -----END CERTIFICATE-----
  tls.key: |
    -----BEGIN PRIVATE KEY-----
    此处完整粘贴private.pem的明文内容,和原始文件完全一致即可
    -----END PRIVATE KEY-----
  • 流水线中直接执行kubectl apply -f -传入动态生成的YAML即可完成部署。
注意事项
  • 证书和私钥内容不要有多余的空格、换行,否则会导致TLS握手失败
  • 禁止将明文证书、私钥硬编码到YAML文件存入代码仓库,必须通过密钥引擎在流水线运行时动态注入,避免敏感信息泄露
  • 部署完成后可执行kubectl get secret wildcard-cert -o jsonpath='{.data.tls\.crt}' | base64 -d校验证书内容是否正确

内容的提问来源于stack exchange,提问作者night-gold

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:45:03