具有公共 IP 的应用程序网关后面的 Azure 容器组

Posted

技术标签:

【中文标题】具有公共 IP 的应用程序网关后面的 Azure 容器组【英文标题】:Azure Container Group behind application gateway with public IP 【发布时间】:2021-07-18 23:19:48 【问题描述】:

我有一个具有前端公共 IP 地址的应用程序网关,通过其子网连接到 VNET,并使用指向同一 VNET 但不同子网中的容器组的单个后端池。

后端池指向容器组的 IP 地址。这行得通!

但我不想依赖在容器重启时可能随时更改的 IP 地址。我已经使用链接到 VNET 的私有 DNS 区域。由于我的私有 DNS 区域中的 A 记录,可以从 VNET 以“mycontainer.my-azure.com”的形式访问容器组。

但是将“mycontainer.my-azure.com”作为后端池的 FQDN 不起作用。它适用于 IP 地址“172.22.44.5”,但“mycontainer.my-azure.com”无法解析,后端运行状况显示“未知”。我尝试从 AZ CLI 重新启动 APP GW 无济于事。

有谁知道如何让 APP GW 在其后端池中使用 VNET 的私有 DNS 区域?

【问题讨论】:

【参考方案1】:

如果应用程序网关后端池包含内部可解析的 FQDN 或私有 IP 地址,应用程序网关将通过使用其实例私有 IP 地址将请求路由到后端服务器。确保后端池中的 FQDN 可以在内部解析。

您可以验证以下配置,它适用于我。我正在使用标准 V2 SKU 应用程序网关。应用程序网关和容器组部署到相同的 VNet 但不同的子网中,没有防火墙规则。我使用 this example 来部署 ACI。

后端池

HTTP 设置

听众

健康探测

私有 DNS 区域

【讨论】:

Holy s***....我根本无法让这个确切的例子起作用,几个小时后我就放弃了。唯一的区别是我们使用的是 WAF V2 AppGw。 VNET 也使用自定义 DNS IP 地址,但我在其中添加了 Azure DNS 服务器 168.63.129.16。我会像你一样用 Standard V2 试试这个。 为什么不在该 vnet 的 dns 服务器中使用默认值(Azure 提供)?这可能是问题所在。 “如果您在计划部署 ACI 的 VNET 中使用自定义 DNS 解析器,容器将不会继承该配置。”,请参阅 aztoso.com/aci/azure-container-instances-custom-dns 和 github.com/MicrosoftDocs/azure-docs/issues/61488 这是由我们的管理员设置的,它是 Azure 与本地连接解决方​​案的一部分。我现在发现自定义 DNS 不是问题,它仍然适用于标准 AppGw。但是 WAFv2 根本无法解析自定义 DNS。即使 VNET 使用 Azure 提供的 DNS。 等一下……它突然神奇地起作用了,和我昨天测试的设置一样。我不知道发生了什么。 嘿,我们发现自定义 DNS 是个问题,但弄清楚这一点令人困惑,因为 App Gw 即使在重新启动后也不会刷新其 DNS。所以,是的,我会接受你的回答。

以上是关于具有公共 IP 的应用程序网关后面的 Azure 容器组的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Terraform 公开具有公共 IP 地址的 Azure Kubernetes 集群

我应该在 Azure *** 中使用网关子网中的 IP 地址吗?

具有固定 IP 的 AWS 客户端 ***

仅具有私有 IP 的 Azure VM 的 Ansible 动态清单

azure 公共IP地址连不上

AZURE - 具有集线器和辐条架构的多个 S2S *** 网关