如何使用AGIC将主机名分配给Azure应用程序网关

问题描述

我正在使用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