Container Apps 与其他 Azure 容器选项的比较

有许多选项可供团队在 Azure 上构建和部署云原生应用程序和容器化应用程序。 本文将帮助你了解哪些方案和用例最适合 Azure 容器应用,以及它与 Azure 上的其他容器选项(包括以下选项)相比的不同之处:

不存在适合每个用例和每个团队的完美解决方案。 以下说明提供了一般指南和建议作为起点,以帮助确定最适合你的团队和需求的解决方案。

容器选项比较

Azure Container Apps

使用 Azure 容器应用,可以基于容器生成无服务器微服务和作业。 Container Apps 的独特功能包括:

  • 针对运行常规用途容器进行了优化,特别是对于跨多个微服务(部署在容器中)的应用程序。
  • 由 Kubernetes 以及 DaprKEDAenvoy 等开放源技术提供支持。
  • 支持 Kubernetes 风格的应用,以及具有服务发现流量拆分等功能的微服务。
  • 通过支持基于流量的缩放(包括缩放到零),以及从队列等事件源拉取,实现事件驱动型应用程序体系结构。
  • 支持运行按需作业、计划的作业和事件驱动的作业

Azure Container Apps 不提供对基础 Kubernetes API 的直接访问。 如果需要访问 Kubernetes API 和控制平面,应使用 Azure Kubernetes 服务。 但是,如果要构建 Kubernetes 风格的应用程序,并且不需要直接访问所有原生 Kubernetes API 和群集管理,则 Container Apps 可提供基于最佳做法的完全托管体验。 出于这些原因,许多团队更喜欢使用 Azure 容器应用开始构建容器微服务。

可以使用快速入门开始生成第一个容器应用。

Azure 应用服务

Azure 应用服务为 Web 应用程序(包括网站和 Web API)提供完全托管的托管平台。 可以使用代码或容器部署这些 Web 应用程序。 Azure 应用服务针对 Web 应用程序进行了优化。 Azure 应用服务已与其他 Azure 服务(包括 Azure Container Apps 和 Azure Functions)集成。 构建 Web 应用时,Azure 应用服务是理想的选择。

Azure 容器实例

Azure 容器实例 (ACI) 按需提供 Hyper-v 隔离容器的单个 Pod。 与 Container Apps 相比,可以将其视为较低级别的“构建基块”选项。 缩放、负载均衡和证书等概念不随 ACI 容器一起提供。 例如,要扩展到五个容器实例,可以创建五个不同的容器实例。 Azure Container Apps 提供许多基于容器的、特定于应用程序的概念,包括证书、修订版、扩展和环境。 用户经常通过其他服务与 Azure 容器实例交互。 例如,Azure Kubernetes 服务可以通过虚拟节点,将业务流程分层,并基于 ACI 进行扩展。 如果你需要较不“固定的”构建基块,并且该构建基块不符合 Azure Container Apps 针对其进行了优化的方案,则 Azure 容器实例是理想的选择。

Azure Kubernetes 服务

Azure Kubernetes 服务 (AKS) 在 Azure 中提供完全托管的 Kubernetes 选项。 它支持直接访问 Kubernetes API,并且能够运行任何 Kubernetes 工作负载。 整个群集位于你的订阅中,群集配置和操作都由你控制和负责。 如果团队正在 Azure 中寻找 Kubernetes 的完全托管版本,则 Azure Kubernetes 服务是理想的选择。

Azure Functions

Azure Functions 是一种无服务器函数即服务 (FaaS) 解决方案。 它针对使用函数编程模型运行事件驱动型应用程序进行了优化。 在扩展以及与事件的集成方面,它与 Azure Container Apps 具有许多相同特性,但针对部署为代码或容器的临时函数进行了优化。 Azure Functions 编程模型为希望基于事件触发函数执行并绑定到其他数据源的团队提供了生产力优势。 生成 FaaS 样式的函数时,Azure Functions 是理想的选择。 Azure Functions 编程模型可用作基础容器映像,使其可移植到其他基于容器的计算平台,从而使团队可以在环境要求改变时重用代码。

Azure Spring Apps

Azure Spring Apps 是面向 Spring 开发人员的完全托管服务。 如果要在 Azure 上运行 Spring Boot、Spring Cloud 或任何其他 Spring 应用程序,Azure Spring Apps 是一个理想的选择。 该服务管理 Spring 应用程序的基础结构,让开发人员可以专注于代码。 Azure Spring Apps 可以通过以下方法提供生命周期管理:综合性监视和诊断、配置管理、服务发现、CI/CD 集成、蓝绿部署等。

Azure Red Hat OpenShift

Azure Red Hat OpenShift 由 Red Hat 和 Azure 联合设计、运营和支持,为运行 Kubernetes 驱动的 OpenShift 提供集成的产品和支持体验。 借助 Azure Red Hat OpenShift,团队可以选择自己的注册表、网络、存储和 CI/CD 解决方案,或将 OpenShift 内置解决方案用于自动化源代码管理、容器和应用程序生成、部署、缩放、运行状况管理等。 如果团队或组织正在使用 OpenShift,Azure Red Hat OpenShift 是一个理想的选择。

后续步骤