Azure Kubernetes 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
    

戦略に合わせてクラスターを選択する

更新シーケンスを制御するために、更新戦略の各ステージとグループに含めるクラスターを選択する方法は 2 つあります。

  • メンバー ラベル (推奨): 各フリート メンバーにラベルを割り当て、 memberSelector を使用してそれらのラベルでメンバーを選択します。 各メンバーは複数のラベルを持つことができます。
  • 更新グループ: 各フリート メンバーに更新グループを割り当て、それらのグループ名に一致するグループを戦略で定義します。 各メンバーは、1 つのグループにのみ属できます。

メンバー セレクターを使用して更新戦略を作成する (プレビュー)

メンバー ラベルは、柔軟性が高いため、更新戦略でクラスターを選択する場合に推奨されるアプローチです。 概念の詳細については、「 メンバー ラベルを使用してクラスターをグループ化する」を参照してください。

Important

Azure Kubernetes Fleet Manager のプレビュー機能は、セルフサービス、オプトイン ベースで利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 Azure Kubernetes Fleet Manager のプレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は運用環境での使用を目的としていません。

メンバー クラスターにラベルを適用する

メンバー クラスターをフリートに追加するときにラベルを適用する

az fleet member create コマンドを使って、フリートメンバーにラベルを適用します。 次の例では、メンバー クラスターに 2 つのラベル ( env=stagingtier=frontend) を適用します。

az fleet member create \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name member1 \
    --member-cluster-id $CLUSTERID \
    --labels "env=staging tier=frontend"

既存のフリート メンバーにラベルを適用する

az fleet member update コマンドを使用してフリート メンバーにラベルを適用する

az fleet member update \
 --resource-group $GROUP \
 --fleet-name $FLEET \
 --name member1 \
 --labels "env=staging tier=frontend"

更新戦略を作成する

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

  1. 更新実行のステージとグループを定義する JSON ファイルを作成します。 ステージは、JSON ファイルに表示される順序で順番に実行されます。 グループは各ステージ内で並列に実行されます。 次のサンプル ファイル (example-labels-strategy.json) では、 memberSelector を使用してラベルでクラスターを選択し、オプションの maxConcurrency 設定を含む 2 つのステージを含む戦略を定義します。

    • staging ステージでは、ステージ レベルのmemberSelectorを使用して、ラベルがenv=stagingされているすべてのクラスターを選択し、1 つの暗黙的なグループを作成します。
    • production ステージでは、ステージ レベルのmemberSelectorを使用して、ラベル env=productionを使用してすべてのクラスターを事前フィルター処理し、それぞれ独自のmemberSelectorを持つ 2 つのグループを定義して、tier ラベルでクラスターを選択します。

    グループに memberSelector が設定されている場合、グループの name フィールドは状態レポートとログ記録の表示識別子としてのみ使用され、フリート メンバーの更新グループ ベースの選択には使用されなくなります。

    {
        "stages": [
            {
                "name": "staging",
                "memberSelector": { "byLabel": "env=staging" },
                "maxConcurrency": "1",
                "afterStageWaitInSeconds": 600
            },
            {
                "name": "production",
                "memberSelector": { "byLabel": "env=production" },
                "maxConcurrency": "4",
                "groups": [
                    {
                        "name": "frontend",
                        "memberSelector": { "byLabel": "tier=frontend" },
                        "maxConcurrency": "3"
                    },
                    {
                        "name": "backend",
                        "memberSelector": { "byLabel": "tier=backend" },
                        "maxConcurrency": "3"
                    }
                ]
            }
        ]
    }
    

注意

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

ステージでグループのない memberSelector ( staging など) を使用すると、一致するすべてのメンバーが 1 つの暗黙的なグループを形成し、ステージの maxConcurrency がコンカレンシーを直接制御します。 グループが定義されている場合 ( productionなど)、ステージ レベルの maxConcurrency はすべてのグループ全体の上限として機能します。

この例では、 staging ステージは maxConcurrency"1"に設定するため、ステージング クラスターは一度に 1 つずつアップグレードします。 production ステージでは、最大"4"クラスターを同時に使用でき、frontendグループとbackend グループはそれぞれ"3"に制限されます。

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

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

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

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

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

注意

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

更新戦略を作成する

更新戦略は 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 のスクリーンショット。

次のステップ

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