如何使用 AGIC 将主机名分配给 Azure 应用程序网关
How to assign an hostname to an Azure Application Gateway with AGIC
我正在使用 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 日志中看到一切正常)但我无法在 URL my.hostname.com
,既不通过 HTTP 也不通过 HTTPS。
相反,如果我从 Ingress 定义中删除行 host: my.hostname.com
,我可以通过应用程序网关的私有 IP 访问应用程序。
您知道我在使用 AGIC 时是否必须执行一些特殊操作才能将主机名分配给我的应用程序网关吗?
好的,我找到了problem/solution。我只需要将 my.hostname.com
主机名分配给公司域控制器中的专用网络 IP。这样在公司网络中主机名可以解析为 IP
我正在使用 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 日志中看到一切正常)但我无法在 URL my.hostname.com
,既不通过 HTTP 也不通过 HTTPS。
相反,如果我从 Ingress 定义中删除行 host: my.hostname.com
,我可以通过应用程序网关的私有 IP 访问应用程序。
您知道我在使用 AGIC 时是否必须执行一些特殊操作才能将主机名分配给我的应用程序网关吗?
好的,我找到了problem/solution。我只需要将 my.hostname.com
主机名分配给公司域控制器中的专用网络 IP。这样在公司网络中主机名可以解析为 IP