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

使用 Flux v2 配置和 Azure Policy 以一致的方式大规模部署应用程序

可以使用 Azure Policy 大规模地对已启用 Azure Arc 的 Kubernetes 群集 (Microsoft.Kubernetes/connectedClusters) 或 AKS (Microsoft.ContainerService/managedClusters) 群集应用 Flux v2 配置(Microsoft.KubernetesConfiguration/fluxConfigurations 资源类型)。 若要使用 Azure Policy,请选择内置策略定义并创建策略分配。

在分配创建 Flux 配置的策略之前,必须确保 Flux 扩展部署到群集。 为此,可以首先分配一个策略,将扩展部署到选定范围(订阅或管理组中的所有资源组,或特定资源组)内的所有群集。 然后,在创建策略分配以部署配置时,可以为将应用于该范围内的群集的 Flux 配置设置参数。

为了实现关注点分离,可以创建多个策略分配,每个策略分配都有一个指向不同源的不同 Flux v2 配置。 例如,群集管理员可以使用一个 Git 存储库,应用程序团队可以使用其他存储库。

内置策略定义

以下内置策略定义为这些方案提供支持:

说明 策略
Flux 扩展安装(所有方案都需要) Configure installation of Flux extension on Kubernetes cluster
使用公共 Git 存储库的 Flux 配置(通常是测试方案) Configure Kubernetes clusters with Flux v2 configuration using public Git repository
将专用 Git 存储库与 SSH 身份验证配合使用的 Flux 配置 Configure Kubernetes clusters with Flux v2 configuration using Git repository and SSH secrets
将专用 Git 存储库与 HTTPS 身份验证配合使用的 Flux 配置 Configure Kubernetes clusters with Flux v2 configuration using Git repository and HTTPS secrets
将专用 Git 存储库与 HTTPS CA 证书身份验证配合使用的 Flux 配置 Configure Kubernetes clusters with Flux v2 configuration using Git repository and HTTPS CA Certificate
将专用 Git 存储库与本地 K8s 机密配合使用的 Flux 配置 Configure Kubernetes clusters with Flux v2 configuration using Git repository and local secrets
将专用 Bucket 源与 KeyVault 机密配合使用的 Flux 配置 Configure Kubernetes clusters with Flux v2 configuration using Bucket source and secrets in KeyVault
将专用 Bucket 源与本地 K8s 机密配合使用的 Flux 配置 Configure Kubernetes clusters with specified Flux v2 Bucket source using local secrets

若要查找所有 Flux v2 策略定义,请搜索 flux。 有关详细信息,请参阅已启用 Azure Arc 的 Kubernetes 的 Azure Policy 内置定义

先决条件

  • 一个或多个已启用 Arc 的 Kubernetes 群集和/或 AKS 群集。
  • 对将在其中创建策略分配的范围(订阅或资源组)拥有 Microsoft.Authorization/policyAssignments/write 权限。

创建策略分配以安装 Flux 扩展

为了使策略将 Flux v2 配置应用到群集,必须先在群集上安装 Flux 扩展。 为了确保将该扩展程序安装到你的每个群集,请将在 Kubernetes 群集上配置 Flux 扩展程序安装策略定义分配到所需的范围。

  1. 在 Azure 门户中,导航到“策略”
  2. 在边栏的“创作”部分,选择“定义”
  3. 在“Kubernetes”类别中,选择“在 Kubernetes 群集上配置 Flux 扩展安装”内置策略定义。
  4. 选择“分配”。
  5. 将“范围”设置为将应用策略分配的管理组、订阅或资源组
    • 如果要从策略分配范围中排除任何资源,请设置“排除”。
  6. 为策略分配指定易于识别的“分配名称”和“描述”。
  7. 确保“策略实施”设置为“已启用”
  8. 依次选择“查看 + 创建”、“创建”。

创建策略分配以应用 Flux 配置

接下来,返回到“定义”列表(位于“策略”的“创作”部分),将配置策略定义应用到同一范围。

  1. 在“Kubernetes”类别中,选择“使用公共 Git 存储库通过 Flux v2 配置来配置 Kubernetes 群集”内置策略定义,或者其他策略定义之一以应用 Flux 配置。

  2. 选择分配

  3. 将“范围”设置为分配第一个策略时选择的同一范围,包括任何排除项。

  4. 为策略分配指定易于识别的“分配名称”和“描述”。

  5. 确保“策略实施”设置为“已启用”

  6. 选择“下一步”,然后再次选择“下一步”以打开“参数”选项卡。

  7. 设置要使用的参数值。

    • 有关参数的详细信息,请参阅教程:部署 Flux v2 配置
    • 创建 Flux 配置时,必须为以下参数中的一个(且仅一个)提供值:repositoryRefBranchrepositoryRefTagrepositoryRefSemverrepositoryRefCommit
  8. 选择“下一步”以打开“修正”任务。

  9. 启用“创建修正任务”

  10. 确认已选中“创建托管标识”,该标识将具有“参与者”权限。 有关详细信息,请参阅快速入门:创建策略分配以识别不合规的资源使用 Azure Policy 修正不合规的资源

  11. 依次选择“查看 + 创建”、“创建”。

然后,配置将应用于在策略分配范围内新建的已启用 Azure Arc 的 Kubernetes 群集或已创建的 AKS 群集。

对于现有群集,可能需要手动运行修正任务。 此任务通常需要 10 到 20 分钟,策略分配才能生效。

验证策略分配

  1. 在 Azure 门户中,导航到已启用 Azure Arc 的 Kubernetes 或 AKS 群集之一。

  2. 在边栏的“设置”部分中,选择“GitOps”

    在配置列表中,应会看到策略分配创建的配置。

  3. 在边栏的“Kubernetes 资源”部分,选择“命名空间”和“工作负载”

    应显示 Flux 配置创建的命名空间和项目。 还应看到群集上部署的 Git 存储库中的清单所描述的对象。

自定义策略

内置策略涵盖了在 Kubernetes 群集中将 GitOps 与 Flux v2 配合使用的主要方案。 但是,由于 Azure Policy 分配中允许的参数数量存在限制(最多 20 个),因此并非所有参数都存在于内置策略中。 此外,为了符合 20 个参数的限制,只能使用内置策略创建一个 kustomization。

如果你的方案与内置策略不同,则可以通过使用内置策略作为模板创建自定义策略来克服这些限制。 可以创建只包含所需参数的自定义策略,并对其余参数进行硬编码,因此可以绕过 20 个参数的限制。

后续步骤