近年来,微服务架构模式在软件行业中越来越受欢迎。Azure 提供了多种服务来打包、部署和管理云原生应用程序,每种服务都有其特定用途和优缺点。本文将比较 Azure 中托管和管理云原生容器化应用程序的不同服务。
根据个人经验,在 Azure Kubernetes Service (AKS) 和 RedHat OpenShift 上构建并部署了云原生应用程序,这需要一定的学习曲线,包括创建和配置集群、配置微服务之间的网络、服务发现、证书配置以及管理应用程序生命周期内的集群。
本详细教程将重点介绍 Microsoft Azure 提供的新容器化服务——Azure Container Apps (ACA)。Microsoft 在 2021 年 11 月宣布了 Azure Container Apps 的公开预览,并在 2022 年 5 月宣布了 Azure Container Apps 的正式发布。简而言之,Azure Container Apps 是一个完全托管的无服务器容器运行时,用于构建和运行云原生应用程序,它专注于应用程序的业务逻辑,而不是云基础设施管理。
本教程的源代码可在 GitHub 上获得,也可以查看演示应用程序。
Azure Container Apps 提供了一个基于 AKS 的无服务器托管服务,允许开发人员部署多个容器而无需处理底层基础设施。Azure Container Apps 的一些显著特点包括:
与 Dapr 构建微服务应用程序:Azure Container Apps 提供了与 Microsoft 赞助的开源项目 Dapr (Distributed Application Runtime) 的内置兼容性。一旦启用 Dapr,它将允许构建具有弹性和可扩展性的松散耦合应用程序。
Azure Container Apps 中的自动缩放:Azure Container Apps 支持根据需求自动缩放应用程序,从零实例扩展到配置的最大实例数。这意味着在某些服务中,如果没有触发任何事件或接收到任何请求,它可以降至 0 个副本,这意味着不会产生任何成本。
Azure Container Apps 支持不同的缩放触发器,例如:
带有 Envoy Proxy 的网络功能:所有进入 Azure Container Apps 的 HTTP 请求都通过 Envoy Proxy 路由,这个高级代理提供了高级功能,例如在容器应用的不同版本之间进行流量分割,以启用 A/B 测试和蓝绿部署等功能。
在本教程中,将构建一个任务管理应用程序,遵循微服务架构模式,该应用程序将由三个微服务组成,每个微服务都有一定的功能,以展示 Azure Container Apps 和 Dapr 如何简化微服务应用程序的构建。以下是即将在本教程中构建的应用程序的架构图:
使用 Dapr 构建微服务的 Azure Container Apps 架构
使用 Azure Container Registry 构建和托管容器镜像,并将镜像从 ACR 部署到 Azure Container Apps。
Dapr 提供了一组 API,简化了微服务应用程序的编写。一旦在 Azure Container Apps 中启用 Dapr,它通过 sidecar(与每个 Azure Container App 一起运行的过程)公开其 API。本教程中使用的 Dapr API/构建块包括:
Azure Container Apps 的主要组件包括: