使用 Azure Policy 大规模应用 Flux v1 配置

可以使用 Azure Policy 大规模地对已启用 Azure Arc 的 Kubernetes 群集 (Microsoft.Kubernetes/connectedclusters) 应用 Flux v1 配置(Microsoft.KubernetesConfiguration/sourceControlConfigurations 资源类型)。

重要

本文适用于带 Flux v1 的 GitOps。 现在可在已启用 Azure Arc 的 Kubernetes 和 Azure Kubernetes 服务 (AKS) 群集中使用 GitOps with Flux v2。 建议尽快迁移到 Flux v2

2025 年 5 月 24 日起,将不再支持 2024 年 1 月 1 日之前创建的基于 Flux v1 的群集配置资源。 从 2024 年 1 月 1 日开始,你将无法创建新的基于 Flux v1 的群集配置资源。

若要使用 Azure Policy,请选择内置 GitOps 策略定义并创建策略分配。 创建策略分配时:

  1. 设置分配的范围。
    • 范围将是订阅或管理组中的所有资源组或特定的资源组。
  2. 为将创建的 GitOps 配置设置参数。

创建分配后,Azure Policy 引擎会标识范围内所有已启用 Azure Arc 的 Kubernetes 群集,并将 GitOps 配置应用到每个群集。

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

提示

我们针对这些方案提供了内置策略定义:

  • 公用存储库或专用存储库,使用 Flux 创建的 SSH 密钥:Configure Kubernetes clusters with specified GitOps configuration using no secrets
  • 专用存储库,使用用户提供的 SSH 密钥:Configure Kubernetes clusters with specified GitOps configuration using SSH secrets
  • 专用存储库,使用用户提供的 HTTPS 密钥:Configure Kubernetes clusters with specified GitOps configuration using HTTPS secrets

先决条件

验证你对要创建此策略分配的范围(订阅或资源组)具有 Microsoft.Authorization/policyAssignments/write 权限。

创建策略分配

  1. 在 Azure 门户中,导航到“策略”
  2. 在边栏的“创作”部分,选择“定义”
  3. 在“Kubernetes”类别中,选择“为 Kubernetes 群集配置指定的 GitOps 配置(不使用机密)”内置策略定义。
  4. 选择“分配”。
  5. 将“范围”设置为将应用策略分配的管理组、订阅或资源组
    • 如果要从策略分配范围中排除任何资源,请设置“排除”。
  6. 为策略分配指定易于识别的“名称”和“描述”
  7. 确保“策略实施”设置为“已启用”
  8. 选择下一步
  9. 设置在创建 sourceControlConfigurations 资源时要使用的参数值。
  10. 选择下一步
  11. 启用“创建修正任务”
  12. 验证已选中“创建托管标识”,并确保标识具有“参与者”权限
  13. 选择“查看 + 创建”。

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

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

验证策略分配

  1. 在 Azure 门户中,导航到已启用 Azure Arc 的 Kubernetes 群集之一。
  2. 在边栏的“设置”部分中,选择“策略”
    • 在列表中,应会看到之前创建的策略分配,并且“符合性状态”应设为“符合”。
  3. 在边栏的“设置”部分中,选择“GitOps”
    • 在配置列表中,应会看到策略分配创建的配置。
  4. 在边栏的“Kubernetes 资源”部分,选择“命名空间”和“工作负载”
    • 应显示 Flux 配置创建的命名空间和项目。
    • 应看到群集上部署的 Git 存储库中的清单所描述的对象。

后续步骤

使用已启用 Azure Arc 的 Kubernetes 群集设置适用于容器的 Azure Monitor