你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
将 ASP.NET Web 应用现代化为 Azure Kubernetes 服务(预览版)
本文介绍如何使用 Azure Migrate 将 ASP.NET Web 应用大规模迁移到 Azure Kubernetes 服务。 目前,此流仅支持在 VMware 上运行 ASP.NET Web 应用。 对于其他环境,请按照以下步骤操作。
注意
教程中演示了方案的最简单部署路径,使你能够快速设置概念证明。 教程尽可能使用默认选项,不会演示所有可能的设置和路径。
本教程介绍以下操作:
- 使用 Azure Migrate 中的集成流,选择 ASP.NET Web 应用并将其大规模迁移到 Azure Kubernetes 服务。
- 配置目标设置,例如要运行和复制应用程序的应用程序实例数。
- 运行测试迁移,确保应用程序正确启动。
- 运行应用程序到 AKS 的完整迁移。
先决条件
在开始阅读本教程前,必须完成以下操作:
限制
- 可以迁移使用 Microsoft .NET Framework 3.5 或更高版本的 ASP.NET 应用程序。
- 可以迁移运行 Windows Server 2012 R2 或更高版本的应用程序服务器(应用程序服务器应运行 PowerShell 版本 5.1)。
- 应用程序应在 Internet Information Services (IIS) 7.5 或更高版本上运行。
启用复制
评估 Web 应用后,可以使用 Azure Migrate 中的集成迁移流迁移它们。 此过程的第一步是配置并开始复制 Web 应用。
指定意向
导航到 Azure Migrate 项目 >“服务器、数据库和 Web 应用”>“迁移工具”>“迁移和现代化”,选择“复制”。
在“指定意向”选项卡的“要迁移什么?”中,从下拉列表中选择“ASP.NET Web 应用”>。
在“要迁移到何处?”中,选择“Azure Kubernetes 服务(AKS)”。
在“虚拟化类型”中,选择“VMware vSphere”。
在“本地设备”中,选择在 vSphere 上发现了所需 Web 应用的设备。
选择“继续”。
从已发现的应用中进行选择
在“复制”>“Web 应用”中,可以看到环境中发现的 ASP.NET 应用列表。
选择应复制的一个或多个应用程序。
“现代化状态”列指示要在 AKS 上运行的应用程序的准备情况。 该列可能显示以下值:就绪、错误、正在复制。
选择应用程序,然后选择“应用配置”链接以打开“应用程序配置”选项卡。这会提供从发现的配置文件中检测到的属性列表。 输入所需的属性值,然后选择“保存”。 这些配置将作为机密直接存储在目标群集上,也可以使用 Azure Key Vault 装载。 在高级设置中可以对其进行配置。
选择应用程序,然后选择“应用目录”链接以打开“应用程序目录”选项卡。提供应用程序运行所需复制的文件夹/文件的路径,然后选择“保存”。 根据从下拉列表中选择的选项,这些项目要么直接复制到容器映像中,要么通过 Azure 文件共享作为永久性卷装载到群集上。 如果选择永久性卷,则可以在高级设置中配置目标。
对于使用 Windows 身份验证的应用程序(由“身份验证类型”指示),可以在目标 AKS 群集上配置 gMSA V2。
设置 评论 帐户名 要使用的 gMSA 帐户的名称。 如果该帐户不存在,则系统会自动创建一个具有该名称的新帐户。 帐户用户名 有权访问域控制器上配置的 gMSA 的标准域用户的用户名。 如果给定的用户名不存在,则系统会自动创建新的标准域用户。 帐户密码 上述用户的密码。 域 DNS 服务器 可以解析 Active Directory 域名的 DNS 服务器的 IP 地址。 域 FQDN Active Directory 域的完全限定域名。 域控制器地址 Active Directory 域控制器的 IP 地址。 建立连接以远程允许指定的域用户检索指定 gMSA 的凭据。 域管理员用户名 具有足够权限远程验证 gMSA 帐户和域用户的用户的用户名。 域管理员密码 上述管理员用户的密码。 选择下一步。
注意
应用配置和应用目录的源路径和属性值的长度不得超过 3000 个字符。 这大致相当于 15 个条目(包括配置和目录),每个条目长度约为 200 个字符。
配置目标设置
在“复制”>“目标设置”中,可以配置应用程序将迁移到的目标。
- 选择应用容器映像应推送到的订阅、资源组和容器注册表资源。
- 选择应部署应用的订阅、资源组和 AKS 群集资源。
- 选择“下一步”。
注意
仅列出具有 Windows 节点的 AKS 群集。
配置部署设置
在“复制”>“部署设置”中,可以在 AKS 群集上配置应用程序。
- 默认值根据应用的发现情况提供。
- 在“副本”选项中,选择每个应用对应的应用实例数。
- 如果需要通过 Internet 访问应用,请在“负载均衡器”选项中选择“外部”。 如果选择“内部”,则只能在 AKS 群集的虚拟网络中访问应用。
- 选择“下一步”。
配置高级设置
如果一个或多个应用在“复制”>“Web 应用”中更新了应用配置或目录,则“复制”>“高级”用于提供其他必需的配置。
- 如果提供了应用程序配置,请选择将其存储为本机 Kubernetes 机密或使用机密存储 CSI 驱动程序将其存储在 Azure Key Vault 上。 确保目标群集已启用机密存储驱动程序加载项。
- 如果为应用程序目录提供了永久性存储选项,请选择 Azure 文件共享来存储这些文件。
- 选择“下一步”。
查看并开始复制
导航到“复制”选项卡上的右侧选项卡,查看你的选择并进行任何其他必需的更改。查看后,选择“复制”。
准备迁移
开始复制后,Azure Migrate 会创建一个可从项目访问的复制作业。
导航到目标资源
导航到 Azure Migrate 项目 >“服务器、数据库和 Web 应用”>“迁移工具”>“迁移和现代化”,选择“概述”。
选择“Azure Migrate: 服务器迁移”中心>“现代化(预览版)”>“作业”。
选择“Azure Kubernetes 服务(AKS)”作为复制目标。 Azure Migrate 将为复制的每个 ASP.NET 应用创建一个复制作业。 选择“工作负载部署”类型的“创建或更新工作负载部署”作业。
选择“目标”资源。 在此处可配置所有迁移前步骤。
复制完成后,“复制状态”将为“已完成”,整体“状态”将为“映像生成挂起”。
查看容器映像和 Kubernetes 清单
“目标设置”选项卡中将提供指向 Docker 文件和 Kubernetes 清单的链接。
选择“Docker 文件”评审链接以打开编辑器。 根据需要查看并进行更改。 选择“保存”。
选择“部署规范”评审链接以打开编辑器。 该编辑器中存在 Kubernetes 清单文件,其中包含将部署的所有资源,包括
StatefulSet
、Service
、ServiceAccount
等。请根据需要查看并进行更改。 选择“保存”。在“概述”选项卡中,选择“生成容器映像”以生成容器映像并将其推送到提供的容器注册表。
生成映像后,整体“状态”将更改为“准备迁移”。
运行测试迁移
容器映像准备就绪后,运行测试迁移,以确保应用程序在 AKS 上正确启动。
- 在“概述”选项卡中,选择“测试迁移”,然后选择“是”进行确认。
- 测试迁移完成后,验证工作负载是否在 AKS 群集上运行。 如果在复制过程中选择了外部负载均衡器选项,则应通过类型为
loadbalancer
的服务以分配的公共 IP 地址向 Internet 公开应用程序。 - 验证应用程序是否正常工作后,选择“清理测试迁移”以清理测试迁移。
如果测试迁移失败:
导航到“Azure Migrate: 服务器迁移”中心>“现代化(预览版)”>“作业”。
选择失败的“启动测试迁移”作业。
选择失败的任务链接以查看可能的失败原因和建议。
将应用程序迁移到 AKS
应用程序终于准备好进行迁移:
在“概述”选项卡中,选择“迁移”,然后选择“是”进行确认。
与测试迁移工作流类似,请验证工作负载是否在 AKS 群集上运行。
应用程序现已成功迁移。 如果希望设备再次发现它并使它可以进行迁移,请选择“完成迁移”。
后续步骤
成功将应用程序迁移到 AKS 后,可以浏览以下文章来优化云应用:
- 使用 Azure Pipelines 或 GitHub Actions 或者通过 GitOps 设置 CI/CD。
- 使用 Azure Monitor 监视 AKS 和应用的运行状况和性能。
- 使用 Microsoft Defender for Containers 加强 AKS 群集和容器的安全。
- 优化 Windows Dockerfile。
- 查看并实施在 AKS 上生成和管理应用的最佳做法。