定义可重用Azure Kubernetes Fleet Manager 资源放置部署策略

适用于: ✔️具有中心群集的 Fleet Manager

平台管理员可以通过定义由阶段和组组成的分阶段更新策略来控制 Azure Kubernetes Fleet Manager 如何向机群管理的群集推出资源放置更新。 在每个阶段和组中,他们可以配置审批和计时暂停,以强制实施治理并降低推出风险。 由于策略定义为可重用资源,因此你可以独立于单个更新运行对其进行管理,并在不同的位置上一致地应用它。

本文介绍如何使用组和阶段创建和管理 Azure Kubernetes Fleet Manager 资源放置分阶段更新策略。

可以使用Azure门户或Azure CLI完成本文中的步骤。

注释

可以将 Fleet Manager 的资源放置功能与 AKS 和已启用 Azure Arc 的 Kubernetes 群集配合使用。

在您开始之前

创建分阶段更新策略

在本文中,创建一个集群范围的发布策略,该策略包含两个阶段:暂存和金丝雀。 预发布阶段后有一小时的等待时间,且金丝雀发布在该阶段开始前需要批准。

创建用于命名空间作用域放置(StagedUpdateStrategy)的命名空间作用域策略(ResourcePlacement)的过程类似,不同之处在于,您必须选择暂存资源从中分发的中枢集群命名空间。

  1. 为订阅 ID、资源组和 Kubernetes 舰队资源设置以下环境变量:

    export SUBSCRIPTION_ID=<subscription-id>
    export GROUP=<resource-group-name>
    export FLEET=<fleet-name>
    
  2. 使用 az account set 命令设置默认Azure订阅:

    az account set \
        --subscription ${SUBSCRIPTION_ID}
    
  3. 使用 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 集群。 有关详细信息,请参阅 升级中心群集类型

  4. 将以下 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
    
  5. 将部署位置清单应用到 Fleet Manager 中心集群。

    kubectl apply -f crp-two-stages-strategy.yaml
    
  6. 检查策略资源的状态。

    kubectl get clusterstagedupdatestrategy two-stages-strategy
    

    输出应如下所示。

    NAME                  AGE
    two-stages-strategy   47m
    
  1. 在 Azure 门户中,转到你的车队管理器。

  2. 在服务菜单上的 “机群资源”下,选择 “资源放置>分阶段推出策略”,然后选择“ 创建”。

    注释

    如果未看到 “舰队资源”,则群管理器没有中心群集。 有关如何添加群集的详细信息,请参阅 升级中心群集类型

  3. 输入策略的名称。

  4. 选择 策略范围,选择 群集范围命名空间范围

    • 对于 命名空间级别,请选择 Fleet Manager 中心群集上现有的 命名空间,该命名空间用于暂存要分发的 Kubernetes 资源。
  5. 选择“创建阶段”并输入以下内容:

    • 阶段名称 - 命名阶段 - 它在策略中的所有阶段名称中必须是唯一的。
    • (可选) 阶段审批 - 如果要在此阶段开始之前或完成后等待审批,请选择此选项。
    • (可选) 在阶段后等待 - 如果要在移动到下一阶段之前定义暂停,请选择此选项。
    • (可选) 等待持续时间 - 选择预定义持续时间,或输入自定义值(以秒为单位)。
    • 群集标签选择器 - 选择用于为此阶段选择群集的现有成员群集标签。
    • (可选) 分类排序标签 - 选择用于在阶段中对群集进行排序的现有成员群集标签。
    • (可选) 阶段并发 - 设置当前阶段中应并发更新的群集数。

    Azure 门户的屏幕截图,显示正在向 Azure Kubernetes Fleet Manager 放置分阶段发布策略添加一个新阶段。

    注释

    每个策略中的最大阶段数为 31

  6. 重复操作,直到将所有阶段添加到策略。 选择“ 创建” 以创建策略。

    Azure 门户的屏幕截图,显示了一个具有两个阶段且尚待创建的 Azure Kubernetes Fleet Manager 放置分阶段发布策略。

  7. 页面将刷新,列表会显示新创建的策略。

    Azure门户的屏幕截图,其中显示了 Azure Kubernetes Fleet Manager 放置分阶段推出策略的列表。

后续步骤

本文介绍了如何为 Azure Kubernetes Fleet Manager 资源放置定义可重用的分阶段推出策略。 你配置了策略范围、创建了推出阶段,并添加了阶段控件,例如审批、等待时间、标签选择器、排序标签和并发设置。

若要详细了解如何控制资源推出和相关概念,请参阅以下资源: