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

如何在GCP中将DigiCert SSL证书添加到Kubernetes Secrets?

DigiCert证书部署到GKE供Ingress使用操作流程

1. 提前校验与证书文件准备

  • 先确认私钥和域名证书匹配,避免后续无效操作:
    执行以下两条命令,对比输出的MD5值,完全一致才是匹配的,不匹配就联系DigiCert重新下发对应文件
    openssl x509 -noout -modulus -in {domain-name.crt} | openssl md5
    openssl rsa -noout -modulus -in privatekey.pem | openssl md5
    
  • 拼接完整证书链,K8s TLS Secret要求证书文件包含完整信任链,不然部分客户端会报证书不可信。严格按域名证书→中间CA证书→根证书的顺序拼接,顺序不能乱:
    cat {domain-name.crt} DigiCertca.crt Trustedroot.crt > fullchain.pem
    
  • 检查私钥是否带密码:如果执行上面的openssl rsa命令时提示输入密码,说明私钥是加密的,先执行下面的命令导出无密码版本,不然Ingress控制器无法读取:
    openssl rsa -in privatekey.pem -out decrypted-privatekey.pem
    # 后续创建Secret时用解密后的decrypted-privatekey.pem替换privatekey.pem即可
    

2. 连接目标GKE集群并创建TLS Secret

  • 先把本地kubectl上下文切到要部署的GKE集群,替换命令里的占位参数为实际的GCP资源信息:
    gcloud container clusters get-credentials <你的GKE集群名称> --zone <集群所在可用区> --project <GCP项目ID>
    
  • 创建标准TLS类型的Secret,必须和后续要引用它的Ingress在同一个K8s命名空间,新手不要尝试跨命名空间引用,会触发权限问题:
    kubectl create secret tls digicert-prod-ssl --cert=fullchain.pem --key=privatekey.pem -n <Ingress所在的命名空间>
    
  • 校验Secret创建结果:执行下面的命令,看到输出里包含tls.crt、tls.key两个base64编码的字段就说明创建成功
    kubectl get secret digicert-prod-ssl -n <对应命名空间> -o yaml
    

3. 配置Ingress引用Secret

不管用GKE自带的GCE Ingress(对接谷歌云负载均衡)还是自行部署的Nginx Ingress,都可以用标准的TLS配置块引用刚才创建的Secret,参考配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: prod-service-ingress
  namespace: <和Secret相同的命名空间>
  annotations:
    # 根据你用的Ingress控制器放开对应注解,二选一
    # kubernetes.io/ingress.class: "gce" # 用GCE原生Ingress时放开
    # kubernetes.io/ingress.class: "nginx" # 用Nginx Ingress时放开
spec:
  tls:
  - hosts:
    - <你的业务域名,比如example.com、www.example.com>
    secretName: digicert-prod-ssl # 这里填刚才创建的Secret名称,不要拼错
  rules:
  - host: <你的业务域名>
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: <后端业务Service名称>
            port:
              number: <后端Service暴露的端口>

把上面的占位符替换成实际信息后,用kubectl apply -f 你的ingress配置文件名.yaml提交即可。

常见踩坑说明

  • 证书链顺序拼反会导致部分老版本浏览器、移动端设备报证书不信任,拼接时严格按域名证书在前、中间证书居中、根证书在后的顺序
  • GCE原生Ingress配置生效需要5-10分钟,因为谷歌云负载均衡要同步下发证书和转发规则,刚apply完访问报错不用急,等几分钟再测
  • 排查问题直接看Ingress事件:kubectl describe ingress prod-service-ingress -n <命名空间>,证书加载失败、后端不通这类问题都会在事件里直接报原因
  • 验证生效可以用curl -vI https://你的业务域名,看返回的证书链路是否完整,有没有SSL校验相关的报错即可

内容的提问来源于stack exchange,提问作者Jae

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:33:19