适用于: ✔️具有中心群集的 Fleet Manager
平台管理员可以通过定义由阶段和组组成的分阶段更新策略来控制 Azure Kubernetes Fleet Manager 如何向机群管理的群集推出资源放置更新。 在每个阶段和组中,他们可以配置审批和计时暂停,以强制实施治理并降低推出风险。 由于策略定义为可重用资源,因此你可以独立于单个更新运行对其进行管理,并在不同的位置上一致地应用它。
本文介绍如何使用组和阶段创建和管理 Azure Kubernetes Fleet Manager 资源放置分阶段更新策略。
可以使用Azure门户或Azure CLI完成本文中的步骤。
注释
可以将 Fleet Manager 的资源放置功能与 AKS 和已启用 Azure Arc 的 Kubernetes 群集配合使用。
在您开始之前
- 如果你没有 Azure 试用订阅,请在开始之前创建一个试用订阅。
- 阅读 资源放置的概念概述 ,了解本文中使用的概念和术语。
- 需要包含一个中心群集和多个成员群集的舰队管理器。 如果你还没有,请参阅 创建 Azure Kubernetes Fleet Manager 资源并使用 Azure CLI 加入成员群集。 必须相应地标记成员群集。
- 需要访问中心群集的 Kubernetes API。 如果没有访问权限,请参阅访问 Azure Kubernetes 舰队管理器中心群集的 Kubernetes API。
创建分阶段更新策略
在本文中,创建一个集群范围的发布策略,该策略包含两个阶段:暂存和金丝雀。 预发布阶段后有一小时的等待时间,且金丝雀发布在该阶段开始前需要批准。
创建用于命名空间作用域放置(StagedUpdateStrategy)的命名空间作用域策略(ResourcePlacement)的过程类似,不同之处在于,您必须选择暂存资源从中分发的中枢集群命名空间。
为订阅 ID、资源组和 Kubernetes 舰队资源设置以下环境变量:
export SUBSCRIPTION_ID=<subscription-id> export GROUP=<resource-group-name> export FLEET=<fleet-name>使用
az account set命令设置默认Azure订阅:az account set \ --subscription ${SUBSCRIPTION_ID}使用
az fleet get-credentials命令获取 Kubernetes 舰队中心群集的 kubeconfig 文件:az fleet get-credentials \ --resource-group ${GROUP} \ --name ${FLEET}输出应如下所示。
Merged "hub" as current context in /home/fleet/.kube/config注释
如果您收到类型为
InvalidHubOperation的错误,且错误消息提示该 fleet 没有 hub,请添加一个 hub 集群。 有关详细信息,请参阅 升级中心群集类型。将以下 YAML 另存为
crp-two-stages-strategy.yaml。apiVersion: placement.kubernetes-fleet.io/v1 kind: ClusterStagedUpdateStrategy metadata: name: two-stages-strategy spec: stages: - name: staging labelSelector: matchLabels: environment: staging afterStageTasks: - type: TimedWait waitTime: 1h - name: canary labelSelector: matchLabels: environment: canary beforeStageTasks: - type: Approval将部署位置清单应用到 Fleet Manager 中心集群。
kubectl apply -f crp-two-stages-strategy.yaml检查策略资源的状态。
kubectl get clusterstagedupdatestrategy two-stages-strategy输出应如下所示。
NAME AGE two-stages-strategy 47m
在 Azure 门户中,转到你的车队管理器。
在服务菜单上的 “机群资源”下,选择 “资源放置>分阶段推出策略”,然后选择“ 创建”。
注释
如果未看到 “舰队资源”,则群管理器没有中心群集。 有关如何添加群集的详细信息,请参阅 升级中心群集类型。
输入策略的名称。
选择 策略范围,选择 群集范围 或 命名空间范围。
- 对于 命名空间级别,请选择 Fleet Manager 中心群集上现有的 命名空间,该命名空间用于暂存要分发的 Kubernetes 资源。
选择“创建阶段”并输入以下内容:
- 阶段名称 - 命名阶段 - 它在策略中的所有阶段名称中必须是唯一的。
- (可选) 阶段审批 - 如果要在此阶段开始之前或完成后等待审批,请选择此选项。
- (可选) 在阶段后等待 - 如果要在移动到下一阶段之前定义暂停,请选择此选项。
- (可选) 等待持续时间 - 选择预定义持续时间,或输入自定义值(以秒为单位)。
- 群集标签选择器 - 选择用于为此阶段选择群集的现有成员群集标签。
- (可选) 分类排序标签 - 选择用于在阶段中对群集进行排序的现有成员群集标签。
- (可选) 阶段并发 - 设置当前阶段中应并发更新的群集数。
注释
每个策略中的最大阶段数为 31。
重复操作,直到将所有阶段添加到策略。 选择“ 创建” 以创建策略。
页面将刷新,列表会显示新创建的策略。
后续步骤
本文介绍了如何为 Azure Kubernetes Fleet Manager 资源放置定义可重用的分阶段推出策略。 你配置了策略范围、创建了推出阶段,并添加了阶段控件,例如审批、等待时间、标签选择器、排序标签和并发设置。
若要详细了解如何控制资源推出和相关概念,请参阅以下资源:
- 控制资源放置的群集顺序
- 了解 Fleet Manager 资源放置的状态字段和条件
- 在 Azure Kubernetes Fleet Manager 中查看 代理日志