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

使用Terraform集成AGIC与AKS时的SSL配置方案对比及选型

AGIC与AKS集成的两种SSL配置方案对比及疑问解答

背景

我正在通过Terraform实现Azure应用网关(AGW)与AKS集群的AGIC集成,目前已完成基础AGW和带AGIC插件的AKS集群的创建。配置SSL时有两种方案:

方案一:Kubernetes Secret存储证书

将SSL证书存入K8s Secret,通过Ingress的tls段和AGIC注解让AGW自动配置证书:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: hello-app-ingress-tls
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  tls:
  - secretName: test-tls-secret
    hosts:
    - test.mydomain.com 

  rules:
  - host: test.mydomain.com
    http:
       paths:
       - path: /
         backend:
           service:
             name: hello-app-service-tls
             port:
               number: 80
         pathType: Exact

方案二:Azure应用网关直接托管证书

将证书转为PFX格式后手动上传到AGW(名称test-ssl-certs),通过Ingress注解指定使用该证书:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: hello-world
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/appgw-ssl-certificate: "test-ssl-certs"
spec:
  rules:
  - host: "test.mydomain.com"
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: hello-world
            port:
              number: 80 

疑问解答

1. 两种方案的差异是什么?

  • 证书存储与管理位置:
    • 方案一:证书以Secret形式存储在K8s集群内,生命周期(创建、更新、删除)完全通过K8s工具管控。
    • 方案二:证书需转为PFX格式后手动上传到AGW,由Azure门户/CLI等工具管理,K8s集群内不存储证书内容。
  • AGIC的作用逻辑:
    • 方案一:AGIC自动读取K8s Secret中的证书,将其导入AGW并完成监听器配置,全程无需手动操作AGW。
    • 方案二:AGIC仅需在Ingress中指定AGW已存在的证书名称,不会修改AGW的证书资产,仅做关联绑定。
  • 证书格式要求:
    • 方案一:支持K8s Secret标准的PEM格式,无需手动转换为PFX。
    • 方案二:必须转为AGW要求的PFX格式才能上传。
  • 扩展性与复用性:
    • 方案一:多个Ingress复用同一张证书时,只需引用同一个Secret,AGIC会自动在AGW中统一管理该证书。
    • 方案二:证书可在AGW的多个监听器、规则间复用,无需重复上传,但需手动维护AGW中的证书资产。

2. 两种方案中,SSL终止发生在K8s集群内还是Azure应用网关?

两种方案的SSL终止都发生在Azure应用网关(AGW)。无论证书存储在K8s还是AGW,AGW作为流量入口都会先完成SSL解密,再以HTTP明文形式将请求转发到AKS集群内的后端服务,集群内服务无需处理SSL逻辑。

3. 哪种方案更优?

没有绝对最优方案,需根据实际场景选择:

  • 优先选方案一的场景:
    • 习惯用K8s原生生态管理证书(比如配合cert-manager自动签发、更新证书);
    • 希望证书生命周期与K8s应用部署流程绑定,实现端到端自动化;
    • 不需要在AGW中复用证书到非K8s关联的资源。
  • 优先选方案二的场景:
    • 企业已有统一的Azure证书管理流程(比如用Azure Key Vault托管证书并同步到AGW);
    • 证书需要在AGW的多个非K8s相关资源(比如自定义监听器)中复用;
    • 不希望敏感证书内容出现在K8s集群的Secret中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:50:38