使用 GitOps 配置已启用 Azure Arc 的 Kubernetes 群集

已完成

Azure Arc 的主要好处是促进 DevOps 原则的实现,这些原则将已建立的开发做法应用于作。 DevOps 可提高敏捷性,而不会危及 IT 环境的稳定性。

已启用 Azure Arc 的 Kubernetes 支持 GitOps,这是一种 DevOps 做法,通过减少手动部署工作量来简化应用程序发布。

在本单元中,你将了解 GitOps 以及如何为已启用 Azure Arc 的 Kubernetes 群集配置它。

适用于已启用 Arc 的 Kubernetes 的 GitOps

通过 GitOps,可以更轻松地标准化整个组织的 Kubernetes 配置,包括已启用 Arc 的 Kubernetes。 存储库或其他文件源托管表示资源的预期状态的配置文件。 例如,基线配置可能包括委派模型、监视和日志记录设置以及群集范围服务的特征。

Kubernetes 群集上运行的代理监视存储库的状态。 发生配置更改时,代理会将更新的文件拉取到群集并应用新配置,确保群集保持所需状态。

已启用 Azure Arc 的 Kubernetes 群集依赖于 Flux,这是一种常用的开源 GitOps 部署作员,可自动将配置部署自动化到群集。 Flux 支持常见的文件源,如 Git 存储库、Helm 存储库和存储桶,并支持 YAML、Helm 和 Kustomize 配置模板类型。

下图显示了使用 Flux 部署群集配置和应用程序更新的 GitOps 流。

显示应用程序更新的 GitOps 流示意图。

配置 GitOps

GitOps 将已启用 Arc 的 Kubernetes 群集与一个或多个文件源(例如 Git 存储库)相关联。 每个存储库可以包含任何有效的 Kubernetes 资源的配置,例如命名空间或部署(以清单文件的形式)。

下图显示了将基于 GitOps 的配置应用到多个已启用 Azure Arc 的群集的过程。

显示将基于 GitOps 的配置应用到多个已启用 Azure Arc 的群集的过程的关系图。

GitOps 在 Kubernetes 群集 Microsoft.KubernetesConfiguration/extensions/microsoft.flux 中作为群集扩展资源启用。 若要创建 fluxConfigurations,必须在 microsoft.flux 群集中安装扩展。 在群集中创建第一个 Microsoft.KubernetesConfiguration/fluxConfigurations 实例时,扩展会自动安装。 也可以在创建配置之前手动安装扩展。

已启用 Azure Arc 的 Kubernetes 群集配置与其相应的 GitOps 存储库之间的每个关联都驻留在 Azure 中,作为已启用 Azure Arc 的 Kubernetes 群集 Azure 资源的一部分。 可以使用 Azure 管理接口(例如 Azure 门户或 Azure CLI)配置关联。

使用以下高级步骤通过已启用 Azure Arc 的 Kubernetes 群集实现 GitOps。

  1. 使用 k8s-configuration Azure CLI 扩展来应用 Flux 配置,并在启用 Arc 的 Kubernetes 群集中启用 GitOps。
  2. 验证配置以确认成功创建。 配置资源使用符合性状态、消息和调试信息进行更新。

应用配置后,可以使用 Azure 门户查看符合性详细信息。 还可以使用 Azure 门户创建、更新和删除 GitOps 配置。

使用 Azure Policy 自动配置

可以使用 Azure Policy 自动执行配置过程,以便可以大规模应用它。 在分配策略以配置群集之前,必须确保在群集上创建了 Flux 扩展。 为此,可以首先在 Kubernetes 群集策略定义上分配 Flux 扩展的“配置安装 ”,以确保已安装该扩展。

在 Azure 门户中创建 Azure Policy 分配包括以下高级步骤:

  1. 在 Azure 门户中,通过搜索并选择“策略”来查看所有策略定义,然后在“策略”页的左侧菜单中选择“定义”。
  2. 搜索“使用指定的 GitOps 配置来配置 Kubernetes 群集”,然后选择一个内置策略定义。
  3. 选择 “分配”,然后通过指定范围、参数和修正的设置来创建策略分配。
  4. 选择“查看 + 创建”,然后选择“创建”。

策略分配会自动为分配范围内创建的每个已启用 Azure Arc 的 Kubernetes 群集启用 GitOps。 对于现有群集,需要手动运行修正任务。

在下一单元中,你将了解有关 Azure Policy 的详细信息。