问题描述
我正在使用Azure Kubernetes服务在k8s上部署Web应用程序,并且正在使用Application Gateway Ingress Controller来转发来自k8s集群外部的请求。
我以这种方式定义了Ingress:
apiVersion: extensions/v1beta1
kind: Ingress
Metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/backend-path-prefix: /
appgw.ingress.kubernetes.io/use-private-ip: "true"
appgw.ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
- hosts:
- my.hostname.com
secretName: my-cert
rules:
- host: my.hostname.com
http:
paths:
- backend:
serviceName: my-backend
servicePort: 80
my-cert
是我创建的秘密,其中包含我公司不久前购买的SSL证书,该证书对所有名称*.hostname.com
有效(示例)。
现在,如果我应用此YAML,则会为AGIC配置秘密(我可以从AGIC的pod日志中看到一切正常),但是我无法通过HTTP或URL访问my.hostname.com
上的应用程序通过HTTPS。
相反,如果我从Ingress定义中删除行host: my.hostname.com
,则可以通过应用程序网关的专用IP访问该应用程序。
您知道在使用AGIC时是否需要执行一些特殊操作才能将主机名分配给Application Gateway吗?
解决方法
好的,我找到了问题/解决方案。我只需要将my.hostname.com
主机名分配给公司Domain Controller中的专用网络的IP。这样,在公司网络中,主机名可以解析为IP