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

在同一AKS集群中通过ingress控制器TLS终止运行多HTTPS应用方案咨询

多HTTPS应用共存实现方案

优先推荐使用单套Ingress控制器方案,资源开销更低,维护复杂度更小,以下是可直接复用的实现示例:

1. Nginx Ingress + cert-manager 实现示例

前置准备

  • 已部署单实例Nginx Ingress Controller
  • 已部署cert-manager并配置好Let's Encrypt签发者(优先使用全局可用的ClusterIssuer)

步骤1:部署跨命名空间的测试应用

分别在ns1、ns2命名空间部署应用,示例配置如下:

# ns1命名空间应用配置
apiVersion: v1
kind: Namespace
metadata:
  name: ns1
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app1
  namespace: ns1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app1
  template:
    metadata:
      labels:
        app: app1
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: app1-svc
  namespace: ns1
spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: app1

同理在ns2命名空间部署app2对应的Deployment和Service即可。

步骤2:配置Ingress规则实现多HTTPS路由

每个应用对应独立域名和独立证书,cert-manager会自动完成证书签发:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app1-ingress
  namespace: ns1
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod # 替换为你的ClusterIssuer名称
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - app1.yourdomain.com # 替换为app1的实际域名
    secretName: app1-tls
  rules:
  - host: app1.yourdomain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: app1-svc
            port:
              number: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app2-ingress
  namespace: ns2
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - app2.yourdomain.com # 替换为app2的实际域名
    secretName: app2-tls
  rules:
  - host: app2.yourdomain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: app2-svc
            port:
              number: 80

配置提交后等待1-2分钟,证书签发完成即可分别通过对应域名HTTPS访问两个应用。


2. Azure AGIC 实现示例

前置准备

  • 已创建Azure Application Gateway,且在AKS集群中部署完成AGIC组件
  • 已部署cert-manager并关联Azure DNS Zone(用于Let's Encrypt DNS01挑战签发公网证书)

示例Ingress配置

AGIC会自动将Ingress规则同步到Application Gateway的监听、路由配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: multi-app-ingress
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
    appgw.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  ingressClassName: azure-application-gateway
  tls:
  - hosts:
    - app1.yourdomain.com
    secretName: app1-tls
  - hosts:
    - app2.yourdomain.com
    secretName: app2-tls
  rules:
  - host: app1.yourdomain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: app1-svc
            port:
              number: 80
  - host: app2.yourdomain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: app2-svc
            port:
              number: 80

配置提交后Application Gateway会自动生成对应HTTPS监听,证书自动同步到网关侧,两个域名即可正常通过HTTPS访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:57:02