【问题标题】:What is the proper way to expose an Azure Container Instance that is inside a vnet?公开 vnet 内的 Azure 容器实例的正确方法是什么?
【发布时间】:2021-03-05 18:17:53
【问题描述】:

我有一个运行 REST API 的 ACI,该 API 需要公开,但需要访问 vnet 内的资源。

由于某种原因,与普通 VM 不同,如果 ACI 在 vnet 内,则它不能有公共 IP 地址。如果您尝试给它一个 DNS 名称,它会失败。

唯一的选择似乎是使用应用程序网关,如下所述: https://docs.microsoft.com/en-us/azure/container-instances/container-instances-application-gateway

还有这里:Assign Static Public Address to Azure Container Instance deployment

但是这种方法有一个致命的缺陷,正如文档本身所指出的那样:“如果容器组停止、启动或重新启动,容器组的私有 IP 可能会发生变化。如果发生这种情况,您将需要更新应用程序网关配置。”

应用程序网关可以选择按资源名称选择后端池,但这仅适用于普通虚拟机。另一种选择是直接输入IP地址。

ACI 很容易在不知情的情况下重新启动。根据经验,主机杀死它并重新启动它的情况相对经常发生,可能采用不同的 IP。

在互联网上公开在 ACI 实例上运行的服务并同时让其访问 vnet 后面的资源的正确方法是什么?应用程序网关方法显然不是正确的方法。

我需要一个可以轻松使用 Azure CLI 的解决方案,因为我正在通过 Bitbucket Pipes 部署我的 ACI。

更新:

Azure 容器实例只是一堆垃圾。从 vnet 中公开它们的唯一方法是使用应用程序网关,在运行一个月后,它的成本最终超过了容器实例本身!此外,Azure 容器实例在某些地区非常不稳定(在西欧它们不断被杀死),支持不了解发生了什么(显然这是多个客户的问题)。因此,每次实例重新启动时,它都会获得一个不同的 IP 地址,而昂贵的应用程序网关(每月可能花费超过 100 美元)甚至不会知道 IP 地址发生了变化。

【问题讨论】:

    标签: azure azure-application-gateway azure-container-service azure-container-instances


    【解决方案1】:

    如果你只想使用ACI,那是没有办法解决的。您发现的是访问 VNet 内的 ACI 的唯一方法。但如果你不介意,也许你可以使用 AKS,然后启用虚拟节点,然后你也可以在 VNet 中运行 ACI 并在外部访问它。当然,您可以只使用 AKS,它还可以帮助您在 VNet 中运行应用程序并在外部访问。

    【讨论】:

    • 感谢您的回复。但似乎 AKS 有点矫枉过正?
    • @jbx 这只是建议。 AKS 比 ACI 重,但是当 ACI 不能达到你的目的时,AKS 是一个不错的选择。
    • 谢谢。令人沮丧的是,对于如此明显的简单要求,我必须寻求复杂的解决方案。侧面咆哮:Azure 中的东西似乎总是半成品!
    • @jbx 那么它是否解决了您的问题或有关此问题的任何其他问题?
    • 将您的答案标记为正确只是因为 ACI 只是垃圾并且没有办法支持这一点。刚刚发现,最重要的是,应用程序网关每月的成本比它公开的容器实例要高!最后我只是离开了 ACI。
    猜你喜欢
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 2012-05-16
    相关资源
    最近更新 更多