备注
基本标准计划于 2025 年 3 月 17 日进入退休期。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
标准消耗和专用计划于 2024 年 9 月 30 日进入停用期,并将在 2025 年 3 月底之前完全关闭。
Azure Spring Apps 和 Azure 容器应用都是 Azure 上的托管平台,旨在简化应用程序的运行,而无需管理复杂的基础结构。 这两项服务都使开发人员能够专注于其应用程序,而不用担心基础系统的设置和维护。 它们以本机方式与 Azure 生态系统集成,可轻松地连接到 Azure Monitor、Key Vault 和 Azure DevOps 等服务来进行监视、保护和部署。
由于 Azure Spring Apps 的停用,我们建议将 Azure 容器应用作为迁移在 Azure Spring Apps 上运行的工作负载的主要服务。 Azure 容器应用为容器化应用程序提供了新式、灵活且可缩放的基础,确保工作负载为未来做好准备且与 Azure 生态系统无缝集成。
本文提供了详细的指南,可帮助你将工作负载从 Azure Spring Apps 迁移到 Azure 容器应用,最大程度地减少中断,并帮助你最大限度地利用新平台的优势。
下面的概念映射表突出了 Azure Spring Apps 和 Azure 容器应用之间的相似之处。 它可帮助你了解 Azure Spring Apps 中熟悉的概念如何转换为 Azure 容器应用中的等效功能。
Azure Spring Apps 服务 | Azure 容器应用服务 |
---|---|
服务实例为应用和其他资源提供托管和保护边界,并支持自定义虚拟网络。 | 环境为容器应用程序建立安全边界,并支持自定义虚拟网络。 |
应用是一种商业应用程序,用作服务实例中的子资源。 | 容器应用是一种商业应用程序,定义为连接到托管环境的独立 Azure 资源。 |
“部署”是应用的版本。 应用可以有一个生产部署和一个过渡部署。 | “修订版”是容器应用各个版本的不可变快照。 容器应用可以有一个或多个修订版。 |
应用程序实例是由服务管理的最小运行时单元。 | 容器(副本)是一组容器和最小的运行时单元。 可以同时配置多个容器(包括 sidecar 和 init 容器),以便为一个容器应用提供服务。 |
Azure Spring Apps 和 Azure 容器应用都支持 Azure 基于角色的访问控制 (RBAC) 设置。 但是,它们的资源层次结构不同,因此它们的体验不同。
在 Azure Spring Apps 中,资源层次结构以服务实例为中心。 角色分配适用于实例,并自动传播到应用和部署等子资源。 这种设计提供了集中管理。 但是,如果用户需要访问特定应用或部署,而不是服务实例,则必须授予这些资源的特定权限。
从 API 的角度来看,Azure 容器应用将环境和容器应用的资源类型设计为位于同一分层级别的独立实体。 可以在托管环境或单个容器应用级别分配角色。 这种结构可实现对特定应用程序的精确控制。 例如,你可以为不同的团队或个人授予对不同容器应用的访问权限。 这种灵活性使在共享环境中独立管理资源变得更加容易。 它还与你熟悉的、用于管理其他 Azure 资源的体验保持一致。
从 Azure Spring Apps 迁移到 Azure 容器应用的方法涉及到下面关键步骤:
评估和计划:评估 Azure Spring Apps 上的当前工作负载,包括依赖项、配置和网络设置。
实现应用程序容器化:尽管 Azure 容器应用支持从 JAR 或源代码进行部署,但我们建议将应用程序容器化为具有更佳可移植性和效率的 Docker 容器。 可以使用 Azure 容器注册表或 Docker Hub 等工具创建 Dockerfile 和生成容器映像,从而实现应用程序容器化。 还可以在本地通过 buildpack 来生成容器映像。 若要了解如何实现应用程序容器化并生成类似于在 Azure Spring Apps 中运行的容器映像,请参阅容器化概述。
设置 Azure 容器应用环境:在 Azure 容器应用中预配托管环境(包括配置虚拟网络、子网和任何必要的安全设置),以匹配 Azure Spring Apps 中之前的网络配置。 有关详细信息,请参阅预配 Azure 容器应用或迁移自定义虚拟网络。
在 Azure 容器应用中创建和配置 Java 组件:启用和配置 Eureka 服务器、Config Server、网关和管理控制台。这些组件对于 Spring 应用程序中的微服务业务流程和管理至关重要。 确保它们已正确配置,以便无缝转换。
如果使用标准计划,请参阅以下文章:
部署容器:将容器化应用程序部署到 Azure 容器应用环境。 根据要求设置应用程序修订、缩放策略和网络配置。 有关详细信息,请参阅应用程序迁移概述。
监视:在迁移期间,使用 Azure Monitor 持续监视应用程序性能,并根据需要调整配置来进行优化,例如调整缩放设置或资源分配。 有关详细信息,请参阅 Azure 容器应用中的日志和指标。
测试和验证:运行彻底的测试,确保容器化应用程序在新环境中按预期运行。 验证网络连接、扩展性以及与其他服务的集成。
客户端和自动化工具:若要简化日常开发和操作任务,请利用客户端工具和自动化解决方案。 这些工具包括客户端工具或 IDE 中的 Azure CLI、Azure DevOps、GitHub Actions 和扩展。 这些工具可帮助自动执行部署、监视性能和有效地管理资源,从而减少手动工作量并提高操作敏捷性。 若要了解常用工具,请参阅适用于 Azure 容器应用客户端或自动化工具。
为了加快迁移速度并帮助评估 Azure 容器应用中的功能,我们在 Azure CLI 中提供了一个新命令。 此命令根据服务实例的资源 ID 检索现有 Azure Spring Apps 资源的配置。 然后,它将这些配置转换为 Azure 容器应用资源的 Bicep 文件。 此方法使你能够快速设置 Azure 容器应用托管环境和应用资源,同时应用与现有 Azure Spring Apps 资源中的设置类似的基本设置。 有关详细信息,请参阅 az spring export。
若要创建与现有 Azure Spring Apps 资源的配置匹配的 Azure 容器应用资源,请使用以下步骤:
使用
az extension add --name spring
命令安装 Azure CLI 2.45.0 或更高版本和最新版本的 Azure Spring Apps 扩展。使用以下命令生成 Bicep 文件以创建相应的 Azure 容器应用资源:
az spring export \ --resource-group <resource-group-name> \ --target aca \ --subscription <subscription-id> \ --service <service-name> \ --output-folder <output-folder-name>
上一个命令使用详细说明生成 README.md 文件。 请遵循以下说明更新 Bicep 文件中的必需参数。
备注
Azure 容器应用需要容器化映像 URL。 如果还没有应用程序的容器化映像 URL,则可以将快速入门映像 URL 保留在参数中保持不变,稍后部署自己的应用程序。 有关获取容器映像的详细信息,请参阅 容器化概述
如果资源组不存在,请使用以下命令创建该资源组:
az group create \ --name <resource-group-name> \ --subscription <subscription-id> \ --location <location>
使用以下命令将 Azure 容器应用资源部署到资源组:
备注
可能需要多次运行命令,并根据响应消息调整配置。
az deployment group create \ --resource-group <resource-group-name> \ --template-file main.bicep \ --parameters param.bicepparam \ --subscription <subscription-id>
按照 README.md 文件中的说明更新高级功能的资源。 这些功能包括上传证书、启用自定义域、将角色分配添加到系统分配的托管标识等。
如果需要这些资源的 Terraform 配置,请使用 Azure Terraform 资源提供程序的导出工作流导出这些资源。 有关详细信息,请参阅 Azure Terraform 资源提供程序概述。
我们提供了一个教程,演示在 Azure 容器应用中运行 ACME Fitness Store 应用程序的端到端体验。 有关详细信息,请参阅 acme-fitness-store/azure-container-apps。 本教程提供动手指导,帮助你快速获得在平台上部署和管理容器化应用程序的实际见解和信心。