Azure Kubernetes Fleet Manager を使用して再利用可能な更新戦略を定義する

適用対象: ✔️ Fleet Manager ✔️ ハブ クラスターを持つFleet Manager

管理者は、一連のステージとグループを定義することで、フリート管理クラスターへの更新のシーケンスを制御できます。 これらのステージとグループ内で承認と一時停止を行うタイミングを構成できます。 構成全体を更新戦略として保存でき、更新プログラムの実行や自動アップグレードとは別に管理できるため、必要に応じて戦略を再利用できます。

この記事では、グループおよびステージを使用して更新戦略を定義する方法について説明します。

2 つの更新ステージを含む更新戦略の例を示す図。各更新ステージには、2 つの更新グループが含まれています。各更新グループには、2 つのメンバー クラスターが含まれています。

前提条件

  • Fleet 更新の概念の概要をお読みください。このガイドで参照する更新実行、ステージ、グループ、戦略について説明しています。

  • 1 つ以上のメンバー クラスターを持つフリート リソースが存在する必要があります。 そうでない場合は、クイックスタートに従って Fleet リソースを作成し、Azure Kubernetes Service (AKS) クラスターをメンバーとして参加させます。

  • 以下の環境変数を設定します。

    export GROUP=<resource-group>
    export FLEET=<fleet-name>
    export CLUSTERID=<aks-cluster-resource-id>
    export STRATEGY=<strategy-name>
    
  • この記事の Azure CLI の手順に従っている場合は、Azure CLI バージョン 2.70.0 以降がインストールされている必要があります。 インストールとアップグレードについては、「Azure CLI のインストール」を参照してください。

  • fleet Azure CLI 拡張機能バージョン 1.6.0 以降も必要です。これは、次のコマンドを実行してインストールできます。

    az extension add --name fleet
    

    リリースされている最新バージョンの拡張機能に更新するには、az extension update コマンドを実行します。

    az extension update --name fleet
    

更新グループを使用して更新戦略を作成する

クラスターは、1 つの更新グループに割り当てることで、更新戦略で選択できます。 これらの更新グループをステージに割り当てる更新戦略を定義できます。 更新ステージ内では、更新が各更新グループに並行して適用されます。 更新グループ内では、メンバー クラスターが順番に更新されます。

注意

フリート メンバーは 1 つの更新グループにしか所属できませんが、1 つの更新グループには複数のフリート メンバーを割り当てることができます。 更新グループ自体は、別のリソースの種類ではありません。 更新グループは、単にフリート メンバーからの参照を表す文字列です。 そのため、共通の更新グループを参照するすべてのフリート メンバーが削除されると、その特定の更新グループも存在しなくなります。

クラスターを更新グループに割り当てる

フリートにメンバー クラスターを追加するときにグループに割り当てる

  1. Azure portal で、Azure Kubernetes Fleet Manager リソースに移動します。

  2. サービス メニューの [設定] で、[メンバー クラスター]>[追加] を選びます。

    Azure Kubernetes Fleet Manager のメンバー クラスターを追加するための Azure portal のページのスクリーンショット。

  3. 追加するクラスターを選んでから、[次へ: 確認と追加] を選びます。

  4. クラスターを割り当てる更新グループの名前を入力してから、[追加] を選びます。

    Azure Kubernetes Fleet Manager のメンバー クラスターの [レビューと追加] 手順を示す Azure portal のページのスクリーンショット。

az fleet member create コマンドを使用してメンバー クラスターをフリートに追加するときに、--update-group パラメーターを更新グループの名前に設定して、メンバー クラスターを更新グループに割り当てます。

az fleet member create \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name member1 \
    --member-cluster-id $CLUSTERID \
    --update-group group-1a

既存のフリート メンバーを更新グループに割り当てる

  1. Azure portal で、Azure Kubernetes Fleet Manager リソースに移動します。

  2. サービス メニューの [設定] で、[メンバー クラスター] を選びます。

  3. 更新グループに割り当てるクラスターを選択し、[更新グループの割り当て] を選択します

    既存のメンバー クラスターをグループに割り当てるための Azure portal のページのスクリーンショット。

  4. クラスターを割り当てる更新グループの名前を入力してから、[割り当て] を選びます。

    メンバー クラスターのグループを更新するためのフォームが示されている、メンバー クラスターに関する Azure portal のページのスクリーンショット。

az fleet member update コマンドを使い、--update-group フラグを更新グループの名前に設定して、既存のフリート メンバーを更新グループに割り当てます。

az fleet member update \
 --resource-group $GROUP \
 --fleet-name $FLEET \
 --name member1 \
 --update-group group-1

更新戦略を作成する

更新戦略は 1 つ以上のステージで構成され、1 つのステージには、1 つ以上の更新グループを含めることができます。

  1. Azure portal で、Azure Kubernetes Fleet Manager リソースに移動します。

  2. サービス メニューの [設定] の下で、[複数クラスターの更新]>[戦略] の順に選択し、[作成] を選択します。

  3. 戦略の名前を入力します。

  4. ページを初めて表示したときに、更新戦略の説明図が表示されます。これは、戦略がどのように機能をするかを視覚化するのに役立ちます。

    更新戦略の作成を示す Azure portal のスクリーンショット。

  5. [ステージの作成] を選択し、次の情報を入力します。

    • ステージ名 - ステージに名前を付ける - 戦略内のすべてのステージ名で一意である必要があります。
    • (省略可能) ステージの承認 - このステージが開始される前または完了後に承認を待つ場合は、このオプションを選択します。 詳細については、「 グループとステージの更新に承認を追加する」を参照してください。
    • (省略可能) ステージ後の一時停止 - 次のステージに進む前に一時停止することを定義する場合、このオプションをオンにします。
    • (省略可能) 一時停止期間 - 定義済みの期間を選択するか、秒単位でカスタム値を入力します。

    Azure Kubernetes Fleet Manager 更新戦略のステージを作成する手順を示す Azure portal のスクリーンショット。

  6. ステージに 1 つ以上の 更新グループ を割り当て、[ 作成] を選択します。

    注意

    各更新ステージの更新グループの最大数は 50 です。

    含める更新グループを選択して、Azure Kubernetes Fleet Manager 更新戦略のステージを作成する手順を示す Azure portal のスクリーンショット。

このシナリオでは、Azure portal プロセスに使用される詳細と一致するステージとグループを作成します。

  1. 更新実行のステージとグループを定義する JSON ファイルを作成します。 ステージは、JSON ファイルに表示される順序で順番に実行されます。 グループは各ステージ内で並列に実行されるため、順序付けは重要ではありません。 次のサンプル ファイル (example-stages.json) は、2 つのステージを含む戦略を定義し、オプションの maxConcurrency 設定を含みます。

    {
        "stages": [
            {
                "name": "stage-1",
                "maxConcurrency": "7",
                "groups": [
                    {
                        "name": "group-1",
                        "maxConcurrency": "3"
                    },
                    {
                        "name": "group-2",
                        "maxConcurrency": "50%"
                    }
                ],
                "afterStageWaitInSeconds": 300
            },
            {
                "name": "stage-2",
                "maxConcurrency": "100%",
                "groups": [
                    {
                        "name": "group-3",
                        "maxConcurrency": "2"
                    }
                ]
            }
        ]
    }
    

    注意

    maxConcurrency フィールドは省略可能であり、ステージ レベルまたはグループ レベルで同時にアップグレードできるクラスターの数を制御します。 フリート全体でクラスターをより迅速にアップグレードするには大きな値を使用し、問題が発生した際の影響範囲を抑え、より制御されたロールアウトを行うには、小さな値を使用します。

    この例では、stage-1maxConcurrency"7" に設定します。これにより、このステージの最大"7" クラスターを同時にアップグレードできます。 stage-1内では、group-1はコンカレンシーを"3"クラスターに制限します。つまり、このグループ内の最大"3"を同時にアップグレードできます。 group-2 では、最大 "50%" のクラスターを同時にアップグレードできます (たとえば、グループに 4 つのクラスターが含まれている場合、最大 2 つを同時にアップグレードできます)。

    値には、固定整数 ( "3" など) またはパーセンテージ (たとえば、 "100%") を指定できます。 省略すると、既定値が適用されます。 これらの値の解決方法とその上限の詳細については、「 最大コンカレンシー (プレビュー)」を参照してください。

  2. az fleet updatestrategy create コマンドを使い、--stages フラグを JSON ファイルの名前に設定して、新しい更新戦略を作成します。

    az fleet updatestrategy create \
     --resource-group $GROUP \
     --fleet-name $FLEET \
     --name $STRATEGY \
     --stages example-stages.json
    

次のステップ

更新戦略は、手動による更新実行または自動アップグレード プロファイルの一部として使用できます。 参照: