Azure Kubernetes Fleet Manager を使用して、複数のクラスター間で Kubernetes とノード イメージのアップグレードを自動化する

適用対象: ✔️ Fleet Manager ✔️ ハブクラスターを備えたFleet Manager

クラスターをタイムリーかつ安全な方法で更新することは、プラットフォーム管理者の重要な懸念事項です。 Azure Kubernetes Fleet Manager の Update RunsStrategies を採用すると、自動アップグレード プロファイルを使用して、新しい Kubernetes またはノード イメージのバージョンがリリースされた際に、更新実行の実施を自動化できます。

この記事では、自動アップグレード プロファイルを使用して、Azure Kubernetes Service (AKS)が新しい Kubernetes またはノード イメージ バージョンをリリースしたときに、更新プログラムの実行を自動的に作成して実行する方法について説明します。

注釈

自動アップグレードでトリガーされる更新実行では、ユーザーが AKS クラスター レベルで設定した計画メンテナンス期間が優先されます。 詳細については、計画メンテナンスウィンドウが設定されたメンバークラスターを更新実行がどのように処理するかについて学ぶために、複数のメンバークラスター間の計画メンテナンスを参照してください。

開始する前に

  • 自動アップグレード プロファイルの概念の概要を確認します。このガイドで参照されている構成について説明します。
  • 1 つ以上のメンバー クラスターを使用して Fleet Manager を設定します。 お持ちでない場合は、 クイックスタート に従って Fleet Manager を作成し、AKS クラスターをメンバーとして参加してください。
  • 更新戦略を構成します。 更新プログラムの実行方法に関する記事の手順を使用します。 Azure CLI を使用する場合は、自動アップグレード プロファイルで使用する更新戦略リソース識別子が必要です。
  • Azure CLI コマンドで使用する次の環境変数を設定します。

    export GROUP=<resource-group>
    export FLEET=<fleet-name>
    export AUTOUPGRADEPROFILE=<upgrade-profile-name>
    # Optional
    export STRATEGYID=<strategy-id>
    export CLUSTER=<aks-cluster-name>
    
  • 最新のAzure CLIバージョンをインストールします。 インストールとアップグレードについては、「Azure CLI のインストール」を参照してください。

  • 最新のfleet Azure CLI拡張機能をインストールします。 az extension add コマンドを使用して拡張機能をインストールします。

    az extension add --name fleet
    

    az extension update コマンドを使用して、拡張機能の最新バージョンに更新します。

    az extension update --name fleet
    

注釈

ノード プール スナップショットから作成されたエージェント プールを含むクラスターは、選択した自動アップグレード チャネルとノード イメージ オプションに基づいて、次のように影響を受けます。

  • ノード イメージ チャネル: ノード イメージは、Fleet Manager によって決定されたバージョンにアップグレードされます。 スナップショット (creationData) への参照がエージェント プールから削除されます。
  • 安定版迅速版、またはターゲット版の Kubernetes マイナー バージョン チャネル。ノード イメージは次のいずれかに設定されます。
    • 一貫性のあるイメージ: ノード イメージは、Fleet Manager によって決定されるバージョンにアップグレードされます。 スナップショット (creationData) への参照がエージェント プールから削除されます。
    • 最新のイメージ: エージェント プールはスナップショット (creationData) への参照を保持し、ノード イメージは変更されません。

詳細については、 ノード イメージのアップグレードとスナップショットについてを参照してください。

自動アップグレード プロファイルを作成する

az fleet autoupgradeprofile create コマンドを使用して、自動アップグレード プロファイルを作成します。

--disabled コマンドでaz fleet autoupgradeprofile create フラグを含めることで、自動アップグレード プロファイルを無効にすることができます。 無効になっている自動アップグレード プロファイルを再度有効にするには、--disabled フラグを指定せずに az fleet autoupgradeprofile create コマンドを再実行します。

注釈

自動アップグレード プロファイルを無効にしても、進行中の更新プログラムの実行には影響しません。 ただし、プロファイルを再び有効化するまで、プロセスは新しい更新実行の生成を停止します。

安定チャネルの Kubernetes 更新

マイナー バージョン N-1 でサポートされている最新の Kubernetes パッチ リリースに更新します。 N は、サポートされている最新のマイナー バージョンです。

メンバー クラスターを 1 つずつ更新する

az fleet autoupgradeprofile create コマンドを使用して、メンバー クラスターを順番に更新します。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --channel Stable

既存の更新戦略を使用してメンバー クラスターを更新する

既存の更新戦略を使用してメンバー クラスターを更新します。 az fleet autoupgradeprofile create コマンドは、--update-strategy-id パラメーターを既存の更新戦略の ID に設定して使用します。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --update-strategy-id $STRATEGYID \
  --channel Stable

一貫性のあるノード イメージを使用して既存の更新戦略を使用してメンバー クラスターを更新する

既存の更新戦略を使用してメンバー クラスターを更新し、すべてのAzureリージョンで同じノード イメージ バージョンが使用されていることを確認します。 --node-image-selection パラメーターを Consistent に設定して、az fleet autoupgradeprofile create コマンドを使用します。 すべてのメンバー クラスターは、同じノード イメージ バージョンを実行します。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --update-strategy-id $STRATEGYID \
  --channel Stable \
  --node-image-selection Consistent

最新のノード イメージで既存の更新戦略を使用してメンバー クラスターを更新する

既存の更新戦略を使用してメンバー クラスターを更新し、Azureリージョンごとに使用可能な最新のノード イメージ バージョンが使用されていることを確認します。 --node-image-selection パラメーターを Latest に設定して、az fleet autoupgradeprofile create コマンドを使用します。 メンバー クラスターでは、複数のノード イメージ バージョンを実行できます。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --update-strategy-id $STRATEGYID \
  --channel Stable \
  --node-image-selection Latest

ノード イメージ チャネルの更新

セキュリティ修正とバグ修正を含む、新しく修正プログラムが適用されたマシン イメージでノードを更新します。

ノード イメージを 1 つずつ更新する

az fleet autoupgradeprofile create コマンドを使用して、メンバー クラスターのノード イメージを順番に更新します。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --channel NodeImage

既存の更新戦略を使用してノード イメージを更新する

既存の更新戦略を使用して、メンバー クラスターのノード イメージを更新します。 az fleet autoupgradeprofile create コマンドを使用し、--update-strategy-id パラメーターを既存の更新戦略の ID に設定します。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --update-strategy-id $STRATEGYID \
  --channel NodeImage 

ターゲット Kubernetes のマイナー バージョンの更新

--target-kubernetes-version パラメーターを使用して、定義済みのターゲット Kubernetes マイナー バージョンに更新します。 {メジャー バージョン}でバージョンを指定します。{マイナー バージョン} 形式 (例: 1.33)。 Fleet Manager の自動アップグレードでは、修正プログラムが利用可能になると、指定されたターゲット バージョンの最新のパッチ リリースにメンバー クラスターが自動的にアップグレードされます。

Important

ターゲット Kubernetes マイナー バージョン チャネルを使用する場合は、次の情報に注意してください。

  • --target-kubernetes-version パラメーターを指定してください。 このパラメーターは、他の自動アップグレード チャネル (Rapid、Stable、Node image、Security patch) ではサポートされていません。
  • 長期サポート (LTS) フラグ ( --long-term-support) は、 ターゲット Kubernetes マイナー バージョン チャネルを使用している場合にのみ使用できます。 他のチャネルの場合は、このフラグを False に設定します。
  • フラグを持つ自動アップグレード プロファイルには、LTS Kubernetes バージョン (--long-term-support) のみを選択できます。 このシナリオでフリートの自動アップグレードが機能し続ける場合は、生成された更新実行のクラスターがすべて LTS で有効になっていることを確認します。 LTS 以外のクラスターでは、最初の LTS 以外のクラスターが検出されると、更新プログラムの実行が失敗します。
  • ターゲットの Kubernetes バージョンを、AKS がリリースしていない将来の Kubernetes バージョンに設定することはできません。

メンバー クラスターを特定の Kubernetes マイナー バージョンに更新する

--target-kubernetes-version パラメーターを目的のバージョンに設定して、az fleet autoupgradeprofile create コマンドを使用して、メンバー クラスターを特定の Kubernetes マイナー バージョンに更新します。 次の例では、メンバー クラスターを Kubernetes バージョン 1.33 に更新します。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --channel TargetKubernetesVersion \
  --target-kubernetes-version "1.33"

LTS が有効になっているメンバー クラスターを特定の Kubernetes マイナー バージョンに更新する

--target-kubernetes-version パラメーターを目的のバージョンに設定し、--long-term-support フラグを有効にして、az fleet autoupgradeprofile create コマンドを使用して、LTS が有効になっているメンバー クラスターを特定の Kubernetes マイナー バージョンに更新します。 次の例では、LTS を有効にしてメンバー クラスターを Kubernetes バージョン 1.29 に更新します。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --channel TargetKubernetesVersion \
  --target-kubernetes-version "1.29" \
  --long-term-support

セキュリティパッチ チャネルの更新

セキュリティ修正プログラムを使用して Linux ノードを更新します。 可能な場合は、ライブ 修正プログラムを使用して更新プログラムを適用します。 それ以外の場合は、セキュリティ修正プログラムを含む新しく修正プログラムが適用されたマシン イメージをデプロイします。

セキュリティ パッチを使用してノードを 1 つずつ更新する

az fleet autoupgradeprofile create コマンドを使用して、メンバー クラスターのノード イメージを順番に更新します。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --channel SecurityPatch

既存の更新戦略を使用して、セキュリティ パッチを使用してノードを更新する

既存の更新戦略を使用して、メンバー クラスターのノード イメージを更新します。 az fleet autoupgradeprofile create コマンドを使用し、--update-strategy-id パラメーターを既存の更新戦略の ID に設定します。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --update-strategy-id $STRATEGYID \
  --channel SecurityPatch 

自動アップグレード プロファイルを表示する

自動アップグレードプロファイルは、フリートレベルのリソースです。 これらは、個々の AKS クラスターに直接接続されません。 AKS クラスターを更新できるプロファイルを決定するには、まず Fleet メンバーを一覧表示し、クラスターが Fleet のメンバーであることを確認します。

az fleet member list \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --query "[].{memberName:name,clusterResourceId:clusterResourceId}" \
  --output table

az fleet autoupgradeprofile list コマンドを使用して、Fleet のすべての自動アップグレード プロファイルを一覧表示します。

az fleet autoupgradeprofile list \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --output table

az fleet autoupgradeprofile show コマンドを使用して、Fleet の特定の自動アップグレードプロファイルを表示します。 出力内のチャネル、状態、および updateStrategyId を確認します。

az fleet autoupgradeprofile show \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE

updateStrategyIdが空の場合、プロファイルは 1 つずつ更新シーケンスを使用し、フリートのメンバー クラスターを順番に含めます。 updateStrategyIdにリソース ID が含まれている場合は、生成された更新プログラムの実行に含まれる Fleet メンバーを決定するステージ、グループ、またはメンバー セレクターを確認するための参照先の戦略を示します。

PROFILE_STRATEGY_ID=$(az fleet autoupgradeprofile show \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --query updateStrategyId \
  --output tsv)

if [[ -n "$PROFILE_STRATEGY_ID" ]]; then
  az fleet updatestrategy show \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name "${PROFILE_STRATEGY_ID##*/}"
fi

自動アップグレード プロファイルを削除する

az fleet autoupgradeprofile delete コマンドを使用して、既存の自動アップグレード プロファイルを削除します。 このコマンドを実行すると、削除の確認を求められます。 確認をバイパスしてプロファイルを直ちに削除するには、コマンドに --yes を含めます。

az fleet autoupgradeprofile delete \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE

注釈

自動アップグレード プロファイルを削除しても、進行中の更新プログラムの実行には影響しません。

自動アップグレード プロファイルを作成する

マイナー バージョン N-1 でサポートされている最新の Kubernetes パッチ リリースに更新します。 N は、サポートされている最新のマイナー バージョンです。

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

  2. サービス メニューの [設定] で、[マルチクラスター更新]>[自動アップグレード プロファイル]>[+ 作成] を選択します。

  3. [ 自動アップグレード プロファイルの作成] で、次のオプションを構成します。

    • [ 自動アップグレードの詳細] で、次の手順を実行します
      • 自動アップグレード プロファイル名: 自動アップグレード プロファイルの名前を入力します。
      • 状態: [有効] または [無効] を選択します。 無効になっている自動アップグレード プロファイルは、新しいバージョンがリリースされたときにトリガーされません。
      • 更新シーケンス: [ステージ] または [1 つずつ] を選択します
    • [自動アップグレード トリガー]:
      • チャネル: [安定] を選択します。
      • ノード イメージ: 最新のイメージ または 一貫性のあるイメージを選択します。
    • [ 戦略の詳細] で、次の手順を実行します
      • ステージを使用して更新シーケンスを選択した場合は、既存の戦略を選択するか、新しい戦略を作成します。
  4. [作成] を選択して、自動アップグレード プロファイルを作成します。

    Stable チャネルを使用して自動アップグレード プロファイルを作成するための Azure Kubernetes Fleet Manager Azure portal ペインのスクリーンショット。

自動アップグレード プロファイルを表示する

自動アップグレードプロファイルは、フリートレベルのリソースです。 これらは、個々の AKS クラスターに直接接続されません。 AKS クラスターを更新できるプロファイルを判断するには、まずクラスターが Fleet のメンバーであることを確認し、次に Fleet のプロファイルとその更新シーケンスを確認します。

  1. Azure portal で、Azure Kubernetes Fleet Manager リソースに移動します。
  2. サービス メニューから [Fleet メンバー] を選択し、AKS クラスターがメンバー一覧に表示されることを確認します。
  3. 設定 で、マルチクラスター更新>自動アップグレード プロファイル を選択します。
  4. 自動アップグレード プロファイルを選択して、そのチャネル、状態、および更新シーケンスを表示します。
  5. 更新シーケンスが 1 つずつの場合、プロファイルにはフリートのメンバー クラスターが順番に含まれます。 更新シーケンスで ステージが使用されている場合は、関連する戦略のステージ、グループ、およびメンバー セレクターを確認して、生成された更新実行に含まれる Fleet メンバーを決定します。

自動アップグレード プロファイルを削除する

  1. Azure portal で、Azure Kubernetes Fleet Manager リソースに移動します。
  2. サービス メニューの [設定] から、[Multicluster update]>と[Auto-upgrade profiles] を選択します。
  3. 削除するプロファイルを選択し、[ 削除>Yes ] を選択して確定します。

注釈

自動アップグレード プロファイルを削除しても、進行中の更新プログラムの実行には影響しません。

自動アップグレードの検証

自動アップグレードは、新しい Kubernetes またはノード イメージが使用可能な場合にのみ発生します。 自動アップグレードがトリガーされると、リンクされた更新プログラムの実行が作成されるため、[更新プログラムの実行] を管理して、自動アップグレードの結果を確認できます。

既存のバージョンをベースラインとして確認することもできます。

--query パラメーターを指定して az aks show コマンドを使用して、メンバー クラスターの現在の Kubernetes バージョンを取得し、currentKubernetesVersion プロパティの出力をフィルター処理します。

az aks show \
  --resource-group $GROUP \
  --name $CLUSTER \
  --query currentKubernetesVersion

メンバー クラスターの現在のノード イメージ バージョンを取得するには、 az aks show コマンドと --query パラメーターを使用して、 nodeImageVersion プロパティの出力をフィルター処理します。

az aks show \
  --resource-group $GROUP \
  --name $CLUSTER \
  --query "agentPoolProfiles[].{name:name,mode:mode, nodeImageVersion:nodeImageVersion, osSku:osSku, osType:osType}"

更新プログラムの実行が完了したら、これらのコマンドを再実行し、展開されている更新されたバージョンを表示できます。

自動アップグレードプロファイルから更新実行を生成する

自動アップグレード プロファイルを作成した後、新しい Kubernetes またはノード イメージ バージョンが自動アップグレードをトリガーして更新プログラムの実行を作成して実行するまでに、しばらく時間がかかる場合があります。 自動アップグレードでは、 az fleet autoupgradeprofile generate-update-run コマンドを使用して、いつでも新しい更新プログラムの実行を生成できます。 結果の更新プログラムの実行は、現在 AKS で公開されている Kubernetes またはノード イメージのバージョンに基づいています。

自動アップグレード プロファイルからオンデマンド更新プログラムの実行を作成する方法の詳細については、「自動アップグレード プロファイル から更新プログラムの実行を生成する」を参照してください。