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

快速入门:将应用程序从代码存储库部署到新的 Azure Kubernetes 服务 (AKS) 自动版群集

适用于: ✔️ AKS 自动版

通过自动部署从代码存储库构建应用程序并将其部署到新的或现有的 AKS 自动版群集。 自动化部署简化了设置GitHub操作工作流以生成和部署代码的过程。 连接后,你进行的每次新提交都会触发管道。 自动部署基于 draft.sh 构建。创建新的部署工作流时,可以使用现有的 Dockerfile、生成 Dockerfile、使用现有的 Kubernetes 清单或生成 Kubernetes 清单。 生成的清单在创建时考虑了安全性和复原能力最佳做法。 AKS 自动化还包括一个Pod 就绪性 SLA,该 SLA 保证 99.9% 的符合条件的 Pod 就绪性操作在 5 分钟内完成,确保应用程序拥有可靠和自我修复的基础设施。

在此快速入门中,你将了解:

  • 连接到代码存储库。
  • 容器化应用程序。
  • 配置 Kubernetes 清单。
  • 创建 AKS 自动版群集。
  • 通过拉取请求部署应用程序。

在您开始之前

重要

从 AKS 1.36 开始,由于上游 Ingress NGINX 停用,新的 AKS 自动群集会默认启用通过应用程序路由加载项使用 Kubernetes 网关 API,而不是具有应用程序路由加载项的托管 NGINX Ingress

现有自动群集不受影响,但应 通过应用程序路由加载项开始迁移到 Kubernetes 网关 API

局限性

以下限制适用于 AKS 自动群集:

  • AKS Automatic 在以下区域正式可用:australiacentralnewzealandnorthbelgiumcentralaustriaeastbrazilsouthcanadacentralcanadaeastcentralindiacentralusaustraliasoutheastdenmarkeastchilecentraleastasiaeastuseastus2francecentralmalaysiawestkoreasouthmexicocentralkoreacentraljapanwestjapaneastnorthcentralusitalynorthisraelcentralindonesiacentralnortheuropeaustraliaeastuaenorthswitzerlandnorthgermanywestcentralsouthcentralussoutheastasiasouthafricanorthsouthindiapolandcentralspaincentralwestcentralusuksouthswedencentralnorwayeastwesteuropewestusukwestwestus3westus2
  • 默认情况下,新的 AKS 自动群集启用托管系统节点池和 LocalDNS。 不能在任何区域中创建没有托管系统节点池的 AKS 自动群集。
  • AKS 自动群集已节点资源组锁定预配置,不允许更改 MC_ 资源组,从而阻止默认专用 DNS区域中的虚拟网络链接。 对于跨 VNet 或自定义 DNS 场景,请使用自定义网络和专用 DNS,并遵循在自定义虚拟网络中创建专用 Azure Kubernetes 服务 (AKS) 自动群集
  • Azure CLI版本 2.86.0 或更高版本是必需的。 若要查找版本,请运行 az --version 命令。 如果需要进行安装或升级,请参阅安装 Azure CLI
  • 不支持以下扩展:
  • 不支持 Windows 节点。
  • 不支持从 AKS 基础 SKU 迁移到自动 SKU。
  • 在托管系统节点池已正式可用的区域中,支持以预览版方式将不含托管系统节点池的现有 AKS Automatic 群集迁移到具有托管系统节点池的 AKS Automatic 群集。 不支持从具有托管系统节点池的 AKS 自动迁移回 AKS 自动,而无需托管系统节点池。

提供应用程序源代码

若要从代码存储库部署应用程序,请从 Azure 门户主页开始。

显示在 Kubernetes 服务创建菜单上选择“部署应用程序”的屏幕截图。

  1. 在顶部搜索栏中搜索“Kubernetes 服务”。
  2. 在搜索结果中选择 Kubernetes 服务
  3. 选择“创建”按钮,然后选择“部署应用程序”。

连接到源代码存储库

创建和自动化部署工作流,并授权它连接到所需的源代码存储库。

  1. 在“基本信息”选项卡中,选择“部署应用程序”。
  2. Project details 下,选择 Subscriptionresource GroupRegion
  3. Repository details 下,输入工作流的名称,然后选择Authorize access以连接到所需的GitHub存储库。
  4. 选择“存储库”和“分支”。
  5. 选择“下一步”按钮。

选择容器映像配置

若要使应用程序为 Kubernetes 做好准备,需要将其构建到容器映像中,并存储在容器注册表中。 使用 Dockerfile 提供有关如何生成容器映像的说明。 如果源代码存储库还没有 Dockerfile,自动部署可以为你生成一个,否则可使用现有的 Dockerfile。

使用自动部署为多种语言和框架(如 Go、C#、Node.js、Python、Java、Gradle、Clojure、PHP、Ruby、Erlang、Swift 和 Rust)生成 Dockerfile。 语言支持基于 draft.sh 中提供的内容构建。

  1. 为容器配置选择“自动容器化(生成 Dockerfile)”。
  2. 在存储库中选择保存生成的 Dockerfile 的位置。
  3. 从支持的语言和框架列表中选择应用程序环境。
  4. 输入应用程序端口。
  5. 选择现有的Azure 容器注册表或创建一个新的Azure 容器注册表。 此注册表用于存储生成的应用程序映像。 AKS 自动版群集的 kubelet 标识 对该注册表拥有 AcrPull 权限。

选择 Kubernetes 清单配置

Kubernetes 上运行的应用程序包含许多 Kubernetes 基元组件。 这些组件描述了要使用的容器映像、要运行的副本数、是否有公共 IP 需要公开应用程序等等。有关详细信息,请参阅官方 Kubernetes 文档。 如果源代码存储库还没有要部署的基本 Kubernetes 清单,自动部署可以为你生成它们,否则你可使用一组现有清单。 此外,也可以选择现有 Helm chart。

使用自动部署生成一组基本的 Kubernetes 清单文件,让应用程序启动并运行。 目前,自动部署将创建一个 Deployment、一个 Service 和一个 ConfigMap

生成的清单旨在应用部署安全措施的建议,例如:

若要生成 Kubernetes 清单,请执行以下操作:

  1. 为部署选项选择“生成应用程序部署文件”。
  2. 输入应用程序端口。 此端口用在生成的 Service 上。
  3. 在存储库中选择保存生成的 Kubernetes 清单的位置。
  4. 选择“下一步”按钮。

选择要部署应用程序的位置

如果还没有群集,可以在此部署过程中创建新的 AKS 自动版群集。

  1. 为群集配置选择“创建自动 Kubernetes 群集”。
  2. 输入群集名称。
  3. 选择自动升级维护安排或保留选中默认值。
  4. 输入在其中部署应用程序的 Kubernetes 命名空间。
  5. 选择“监视和日志记录级别”或保留选中默认选项。
  6. 选择“下一步”按钮。

查看配置和部署

查看群集、应用程序和 Kubernetes 清单的配置,然后选择“部署”。 创建群集需要几分钟时间,不要离开部署页面。

显示部署应用程序的屏幕截图。

  1. 创建了新的 AKS 自动版群集或配置现有群集。
  2. 创建了容器注册表,或者为现有注册表配置了群集。
  3. 创建联合凭据以允许GitHub操作工作流部署到群集。
  4. 在代码存储库上创建了拉取请求,其中包含所有生成的文件和工作流。

查看和合并拉取请求

部署成功后,选择“查看拉取请求”按钮,查看代码存储库上生成的拉取请求的详细信息。

GitHub 上的拉取请求截图

  1. 查看“已更改的文件”下的更改,并进行任何所需的编辑。
  2. 选择“合并拉取请求”,将更改合并到代码存储库中。

合并更改将运行将应用程序生成到容器映像中的GitHub Actions工作流,将其存储在Azure 容器注册表中,并将其部署到群集。

屏幕截图显示 GitHub Actions 工作流正在进行中。

检查已部署的资源

管道完成后,可以在 Azure 门户中选择 Service 服务菜单下的 Services and ingresses,以查看创建的 Kubernetes

“服务和入口”窗格的屏幕截图。

如果选择外部 IP,应该会在浏览器中打开显示正在运行的应用程序的新页面。

显示正在运行的 Contoso Air 应用程序的屏幕截图。

删除资源

完成群集后,可以将其删除,以避免产生Azure费用。

  1. 在Azure门户中,导航到资源组。
  2. 选择“删除资源组”。
  3. 输入资源组的名称以确认删除,然后选择“删除”。
  4. 在“删除确认”对话框中,选择“删除”。

后续步骤

在本快速入门中,你已使用 AKS 自动版将应用程序部署到 Kubernetes 群集,并从代码存储库设置持续集成/持续部署 (CI/CD) 管道。

若要详细了解 AKS Automatic,请继续阅读简介。