NoN*_*ded 7 nat azure azure-virtual-network azure-container-instances
我必须通过静态出站 IP 同步一些数据,我需要事先将这些数据列入数据提供商的白名单。因此,我想为 ACI(Azure 容器实例)配置静态出站 IP 地址。如果没有经济高效的方法来执行此操作,我也可以决定将其配置为应用服务 Web 应用程序,但是,由于资源隔离,ACI 是首选。(因此,一名行为不端的工人无法让整个工人池瘫痪。)
作为参考,这里是我想要实现的目标的简单图表。为简单起见,我将 Web Apps 和 ACI 添加到映像中,但我只需要其中之一,最好是 ACI。
我在过去几天阅读了相关的微软文档,所以我知道有多种方法可以做到这一点,但是,令我惊讶的是官方解决方案比我想象的要复杂和昂贵得多。
我尝试过的事情
为应用服务 Web 应用配置 NAT
这可行,但不是所需的解决方案。我可以将 Web 应用程序放入 vNet 中的子网中,然后使用该子网的静态 IP 地址配置NAT 网关。这按预期工作,运行
curl api.ipify.org.
Run Code Online (Sandbox Code Playgroud)
Web 应用程序内将返回我在 NAT 网关中配置的静态 IP 地址。此方法的问题在于,它使用的 Web 应用程序在同一应用程序服务计划上的应用程序之间没有资源使用隔离。
使用 ACI 在 vNet 前面部署防火墙
这是文档中建议的“官方方法”。(顺便说一句,我永远无法按照指南使其工作,但这不是主要问题。)我的主要问题是复杂性和价格。我们不需要防火墙,添加一个防火墙和管理它的负担是我们在这个特定项目中不需要的额外复杂性。价格也很荒谬,我们想要配置一个静态出站 IP,而建议的方式所带来的价格涨幅比我们为应用程序的其余部分支付的价格还要大。(我们每月支付约 400 美元,防火墙起价约 600 美元。)
所以这不是首选。
在包含 ACI 的 vNet 前面配置 NAT
他们的文档明确指出此方案不起作用:
虚拟网络 NAT - 部署到虚拟网络的容器组当前不支持使用 NAT 网关资源进行出站 Internet 连接。
但实际上它确实有效。为容器实例所在的子网配置 NAT 将使 ACI 使用给定的出站 IP。
我也会向 Azure Docs 团队提出一个关于此问题的问题,但我也在此处询问。我是否误解了文档?这是受支持的场景吗?
所以问题
TL;DR; 问题是:如何在不使用 Azure 防火墙的情况下为 Azure 容器实例配置静态出站 IP?
我是否正确地处理问题?有没有不同的方法来解决这个问题?我一般不是网络专家,也不是 Azure 方面的专家,所以我很确定我错过了解决此问题的多种可能的解决方案。我对任何相对简单且不会增加大量成本开销的解决方案感兴趣。
| 归档时间: |
|
| 查看次数: |
1486 次 |
| 最近记录: |