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

如何通过HTTPS访问Azure Kubernetes(AKS)的Ingress Controller IP

解决AKS Ingress通过IP地址HTTPS访问的问题

核心原因

你当前使用的Let's Encrypt证书仅绑定了saurabh.com域名,不包含Ingress公网IP作为证书主体备用名称(SAN),因此通过IP访问HTTPS时会出现证书不匹配错误,导致无法正常访问。另外Let's Encrypt不支持为IP地址颁发证书,所以需要使用自签名证书适配IP访问场景。

解决方案步骤

1. 生成包含IP地址的自签名证书

使用openssl生成针对Ingress公网IP的自签名证书,替换<YOUR_INGRESS_PUBLIC_IP>为你的AKS Ingress Controller公网IP:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls-ip.key -out tls-ip.crt -subj "/CN=<YOUR_INGRESS_PUBLIC_IP>" -addext "subjectAltName=IP:<YOUR_INGRESS_PUBLIC_IP>"

2. 创建Kubernetes Secret存储自签名证书

将生成的证书和密钥存入K8s Secret:

kubectl create secret tls tls-ip-secret --cert=tls-ip.crt --key=tls-ip.key

3. 配置针对IP访问的Ingress规则

创建新的Ingress资源(或修改现有Ingress),专门处理IP的HTTPS访问:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: saurabh-ingress-ip
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  tls:
  - hosts:
      - <YOUR_INGRESS_PUBLIC_IP>
    secretName: tls-ip-secret
  rules:
  - host: <YOUR_INGRESS_PUBLIC_IP>
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: saurabh-ui
            port:
              number: 4200

应用配置:

kubectl apply -f <ingress-ip-yaml-file>.yaml

4. 验证访问

使用Ingress公网IP通过HTTPS访问应用时,浏览器会提示证书不受信任(自签证书的正常现象),选择继续访问即可进入应用。如果需要消除警告,可将生成的tls-ip.crt导入本地浏览器的信任列表。

补充说明

  • 若要同时支持域名和IP的HTTPS访问,可重新生成包含域名和IP的自签名证书,修改openssl命令的subjectAltName参数为:subjectAltName=DNS:saurabh.com,IP:<YOUR_INGRESS_PUBLIC_IP>,然后更新现有tls-secret内容,或用新证书创建Secret并修改原Ingress的TLS配置。
  • 确认AKS Ingress Controller的LoadBalancer服务已正确暴露443端口(你的域名HTTPS正常,此条件已满足)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:11:54