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

Istio Ingress结合cert-manager实现多主机TLS passthrough配置咨询

方案实现步骤

PASSTHROUGH模式下Istio Ingress Gateway不会处理TLS终止,仅通过SNI字段匹配路由规则,加密流量会直接透传给后端服务,因此证书由后端服务自行持有即可,结合cert-manager的配置逻辑非常简便,步骤如下:

  • 第一步:通过cert-manager统一签发证书
    为每个后端服务(或一组同域名后缀的服务)申请对应域名的证书,支持单域名、多SAN域名、通配符域名三种形式,cert-manager会自动将签发后的证书存储为Kubernetes Secret,只需保证Secret和后端服务在同一Namespace下即可。
  • 第二步:后端服务挂载证书
    • 普通服务:将cert-manager生成的Secret直接挂载到Pod的指定路径,服务端程序从对应路径读取证书文件完成TLS配置。
    • Strimzi管理的Kafka集群:直接在Kafka自定义资源的spec.listeners配置段中,给需要对外暴露的TLS监听器配置certManagerRef字段关联cert-manager生成的Secret,Strimzi会自动完成证书挂载、Kafka服务端TLS配置,无需手动操作。
  • 第三步:配置Istio路由规则
    无需在网关侧配置任何证书相关参数,仅需通过Gateway和VirtualService定义SNI匹配规则即可,多主机场景直接在hosts字段添加对应域名即可:
    Gateway示例配置:
    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: passthrough-gateway
    spec:
      selector:
        istio: ingressgateway # 对应你的Istio Ingress Gateway标签
      servers:
      - port:
          number: 443
          name: tls-passthrough
          protocol: TLS
        tls:
          mode: PASSTHROUGH
        hosts:
        - kafka1.example.com
        - kafka2.example.com
        - other-app.example.com
    
    单域名路由VirtualService示例:
    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: kafka1-passthrough-vs
    spec:
      hosts:
      - kafka1.example.com
      gateways:
      - passthrough-gateway
      tls:
      - match:
        - port: 443
          sniHosts:
          - kafka1.example.com
        route:
        - destination:
            host: kafka-bootstrap-service # 对应后端Kafka的服务名
            port:
              number: 9093 # 对应后端Kafka TLS监听器端口
    

优化建议

如果对外暴露的域名数量较多,可以按业务线拆分多个Gateway资源分别管理不同域名组,避免单Gateway配置过长难以维护;同一一级域名下的子域名可以统一使用cert-manager签发通配符证书,减少证书申请、维护的工作量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:57:03