你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 应用服务直接迁移到容器

Microsoft Entra ID
Azure 容器注册表
Azure 应用服务

解决方案构想

本文是一种解决方案构想。 如果你希望我们在内容中扩充更多信息,例如潜在用例、备用服务、实现注意事项或定价指南,请通过提供 GitHub 反馈来告知我们。

本解决方案将现有 Web 应用迁移到部署在应用服务中的容器,让你可以专注于编写容器,而无需考虑如何管理容器业务流程。

体系结构

此体系结构图显示了使用 Open Service Broker for Azure 将现有应用程序迁移到 Azure Kubernetes 服务中的容器以访问 Azure 数据库。

下载此体系结构的 Visio 文件

数据流

  1. 开发人员将现有 Web 应用程序转换为容器。
  2. 开发人员将容器映像发布到:
    1. 专用注册表或 Docker Hub。
    2. 或 Azure 容器注册表。
  3. 应用服务通过以下方式拉取映像:
    1. 专用注册表或 Docker Hub 的凭据(如果使用)。
    2. 或者,使用 Microsoft Entra 安全主体访问 Azure 容器注册表的托管标识。
  4. 服务连接器,以访问其他 Azure 资源。
  5. 开发人员将新映像推送到容器注册表,这会在启用持续部署时触发应用服务更新。

组件

用于容器的 Web 应用:使用应用服务,可以在 Windows 和 Linux 上部署和运行容器化 Web 应用。 用于容器的 Web 应用为想要利用完全托管的平台,同时想要单个包含应用及其所有依赖项的可部署项目的开发人员提供了方便的入口。 另一种目标方案是可让开发人员使用自定义的框架或版本,而不是 Azure 应用服务平台中内置的默认框架或版本。 Azure 应用服务上的容器化 Web 应用可按需缩放,并将简化的 CI/CD 工作流与 Docker Hub、Azure 容器注册表和 GitHub 配合使用。

Azure 容器注册表:Docker 和开放容器计划 (OCI) 映像的注册表,支持所有 OCI 项目。 在应用服务、机器学习和 Batch 等 Azure 服务中使用容器映像。 例如,在为 Web 应用配置用于容器的 Web 应用时,可以从 Azure 容器注册表中指定容器映像。

Azure Cosmos DB:完全托管的 NoSQL 数据库服务,用于构建和现代化可缩放的高性能应用程序。 Azure Cosmos DB 与重要的 Azure 服务集成,这些服务包括 Azure Functions、IoT 中心、AKS(Azure Kubernetes 服务)、应用服务等。 可以从多个数据库 API 中进行选择,包括原生的 Azure Cosmos DB for NoSQL、Azure Cosmos DB for MongoDB、Azure Cosmos DB for Apache Cassandra、Azure Cosmos DB for Apache Gremlin 和 Azure Cosmos DB for Table。

Azure SQL 数据库:一项具有内置智能的完全托管关系数据库。 Azure SQL 数据库可帮助你在本地或云中的流行平台和框架上构建应用程序,并为最常用语言提供驱动程序支持。 SQL 数据库使你能够通过原生对 Azure 应用服务中运行的网站的支持来简化开发。

Azure 存储:Azure 存储提供持久、高度可用、可大规模缩放的云存储解决方案,包括对象、文件、磁盘、队列和表存储。 Azure 存储包括用于对象、块和文件存储的服务,可满足网站的需求。 例如,网站可以轻松使用 Azure Blob 存储作为照片和视频等网站媒体的可缩放且安全的块存储。

Azure Monitor:Application Insights,提供对运行状况和性能的监视,以及诊断。 Azure Monitor 可与用于容器的 Web 应用(应用服务)配合使用,以监视网站指标,例如连接数以及生成 HTTP 状态代码的请求计数。

Azure 服务连接器:服务连接器可帮助你将 Azure 计算服务连接到其他支持性服务。 例如,在 Azure 应用服务与 Azure Database for MySQL 或 Azure Database for PostgreSQL、Azure 存储和 Azure 密钥保管库之间使用服务连接器。 有关受支持服务的完整列表,请参阅服务连接器支持的服务

方案详细信息

轻松将现有 Web 应用程序迁移到容器,并在 Azure 应用服务中运行用于容器的 Web 应用中的容器化 Web 应用。 用于容器的 Web 应用让你可以专注于编写容器,而无需考虑如何管理和维护基础容器业务流程协调程序。 当你构建 Web 应用时,用于容器的 Web 应用是帮助你处理容器准备工作的理想选择。 容器可以轻松集成其他 Azure 资源,例如存储和数据库服务。

将现有 Web 应用与 Azure 资源集成后,还可以利用 Azure 服务的无密码连接。 无密码连接是跨多个 Azure 服务的语言无关特性。 使用无密码连接时,你的 Web 应用将连接到基于 Azure 的服务,而无需轮换密码。 你只需配置 - 无需新代码。

可能的用例

此解决方案思路非常适合将当前 Web 应用程序迁移到在 Azure 上运行的容器。 存在以下情况时,可以使用此解决方案思路来创建网站:

  • 使用用于创建代码部署的网站的现有编程体验来创建容器部署的网站。 将现有 Web 应用直接迁移到应用服务上的容器。

  • 使用 Visual Studio、Visual Studio Code、Azure CLI 和 Azure Cloud Shell 等工具来简化开发和部署。

  • 在从开发到生产的不同环境与不同云之间实现可移植性。 可以在不同的平台(而不是为生产部署的平台)上本地测试。

  • 应用服务的可伸缩性意味着可以按需横向扩展所要使用的工作器数量。

  • 将来网站的模块化适用于应用服务,或者 Azure 容器应用和 Azure Kubernetes 服务等其他服务。 用于容器的 Web 应用可能是迁移到容器的合理第一步。

  • 部署在用于容器的 Web 应用中的容器已准备好进行持续集成和持续部署 (CI/CD)。 使用 CI/CD 功能可以更快地交付更新。

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

若要查看非公开领英个人资料,请登录领英。

后续步骤

应用服务中的容器的示例语言部署:

相关体系结构指导: