通过 P2S vpn 连接访问 Azure 内部容器应用程序

通过 P2S vpn 连接访问 Azure 内部容器应用程序

我对 Azure 网络还不太熟悉,所以这可能很明显,但我有点卡住了。

我创建了一个 Azure VNET。在其中我设置了一个 P2S 网关,它似乎工作正常。我可以连接到它,连接后我就可以访问我在 VNET 中创建的 VM,到目前为止一切顺利。然后我设置了一个容器应用程序和一个容器应用程序环境。容器应用程序本身只是 Azure 演示应用程序。容器应用程序环境设置为内部,以免将其暴露给互联网。但是,即使通过 VPN 连接到 P2S 网关,我仍然无法解析它。我理解需要进行更多设置才能使 DNS 解析正常工作,但是即使尝试浏览到容器应用程序的内部 IP 也不起作用,所以我假设有什么问题。当 VPN 未连接时,连接就会超时,但是当它连接时,它会给我一个 403,所以我假设它与容器应用环境负载均衡器不将请求转发到容器(确实启用了入口)有关。当我使用 curl 尝试从同一 VET 中的 VM 内部访问容器应用环境 IP 时,我也得到了 403。

关于通过 P2S VPN 连接访问内部 Azure 容器应用程序需要什么的任何建议或说明都将非常有用。

答案1

从高层次上看,内部容器应用程序环境使用 Azure 内部负载均衡器 (ILB),其 IP 来自相关子网和 Envoy Ingress 控制器,如下所述https://learn.microsoft.com/en-us/azure/container-apps/networking?tabs=workload-profiles-env%2Cazure-cli#custom-vnet-configuration

假设您的应用程序是 http(您说您使用的是 443),那么第一步就是尝试从您的 VM 访问默认应用程序,我假设它位于相邻子网中。我假设您没有会阻止流量的 NSG。为此,您需要在 VM 上提供本地主机记录,将 Az Container App ILB(内部 IP)映射到容器应用程序正在侦听的默认主机名,有关更多信息,请参见此处: https://learn.microsoft.com/en-us/azure/container-apps/ingress-overview#domain-names

一旦您可以从虚拟机获得访问权限,就应该可以直接通过 P2S 连接进行连接 - 根据您的问题,您已经可以通过这种方式访问​​您的虚拟机(大概是在虚拟机内部接口上),这证明 VPN 正在运行。然后,您还需要在本地虚拟机上有一个与容器应用的预期主机相匹配的本地主机条目

在生产环境中,您需要为 DNS 提供更强大的功能 - 要么使用 Az Public 和 private 区域的组合,要么根据以下情况使用您自己的自定义 DNS 服务器https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-vnet-plan-design-arm#name-resolution

最后说明:请将容器应用环境创建为工作负载配置文件类型,因为它支持两种类型的容器应用,而原始的“消耗”仅限于该类型。根据https://learn.microsoft.com/en-us/azure/container-apps/environment#types

希望这可以帮助

相关内容