Azure クラスタ パラメータを更新する

このページでは、Azure クラスタの設定で GKE を更新する方法について説明します。以下の手順を使用すると、クラスタ内の更新可能な設定(Kubernetes バージョンなど)を更新できます。バージョンのアップグレードは、最もよく使用されるクラスタ更新操作の 1 つであるため、クラスタ バージョンのアップグレード方法については別ページのクラスタのアップグレードで説明します。

クラスタを更新する理由

クラスタは、次のいずれかの理由により更新することがあります。

  • クラスタの説明を更新する。
  • クラスタのアノテーションを更新する。
  • クラスタの管理ユーザーのリストを更新するため。
  • クラスタのロギング構成を更新するため。
  • クラスタの VM サイズを更新するため。
  • クラスタの AzureClient を更新するため。
  • AzureClient から Workload Identity 連携にクラスタの認証を更新するため。

クラスタのここに記載されていない他の項目を更新することもできます。更新できる項目の完全なリストについては、gcloud container azure clusters updateprojects.locations.azureClusters.patch のドキュメントをご覧ください。

前提条件

  • クラスタの項目を更新するには、gkemulticloud.googleapis.com/azureClusters.update の Identity and Access Management 権限が必要です。

更新プロセス

GKE on Azure がクラスタを更新するプロセスは、更新の種類によって異なります。中には、GKE on Azure でリソースを再起動することも、リソースを再作成したりすることもなく、クラスタを更新できる変更(クラスタの説明の更新など)もあります。GKE on Azure では、これらの変更がすぐに行われます。

他の変更(VM サイズや Kubernetes バージョンの更新など)では、コントロール プレーン ノードの再起動が必要です。このような更新を行うために、GKE on Azure では、次の手順で構成される「ローリング アップデート」が実行されます。

  1. 更新するコントロール プレーン インスタンスを 1 つ選択します。異常なインスタンスがある場合、GKE on Azure は、正常なインスタンスよりもそちらを先に更新します。
  2. インスタンスを削除します。GKE on Azure がインスタンスを再作成し、そのインスタンスが新しい構成で起動します。
  3. 新しいインスタンスでヘルスチェックを行います。
  4. ヘルスチェックが成功した場合は、別のインスタンスを選択して、同じ手順を実施します。すべてのインスタンスが再起動または再作成されるまで、このサイクルを繰り返します。ヘルスチェックが失敗した場合、GKE on Azure はクラスタを DEGRADED 状態にし、更新を停止します。詳しくは次のセクションをご覧ください。

更新に失敗した場合

更新後は、GKE on Azure がクラスタでヘルスチェックを実行します。ヘルスチェックに失敗した場合は、クラスタが DEGRADED とマークされます。クラスタのステータスは、次の Google Cloud CLI コマンドを使用して表示できます。

gcloud container azure clusters describe CLUSTER_NAME \
  --location=GOOGLE_CLOUD_LOCATION

以下を置き換えます。

  • CLUSTER_NAME: クラスタの名前。
  • GOOGLE_CLOUD_LOCATION: クラスタを管理する Google Cloud リージョン

クラスタを更新する

Google Cloud コンソール、Google Cloud CLI、または GKE Multi-Cloud API を使用して、複数のクラスタ フィールドを一度に更新できます。

更新方法を選択する

ほとんどのフィールドは、コンソール、gcloud CLI、GKE Multi-Cloud API のいずれかを使用して更新できます。中には、一方でのみ更新できる項目もあります。 コンソールを使用してクラスタを更新する場合は、まずクラスタにログインするための認証方法を選択して構成する必要があります。詳細については、クラスタに接続して認証するをご覧ください。

コンソール

  1. Google Cloud コンソールで、Google Kubernetes Engine クラスタの概要ページに移動します。

    GKE クラスタに移動

  2. クラスタが存在する Google Cloud プロジェクトを選択します。

  3. クラスタのリストでクラスタの名前を選択し、サイドパネルで [詳細を表示] を選択します。

  4. [詳細] タブで、変更するフィールドの [編集] を選択します。

    たとえば、他のユーザーにクラスタ管理者権限を付与するには、[管理者ユーザー] の横にある [編集] を選択し、ユーザーのメールアドレスを入力します。

  5. 変更が完了したら、[完了] を選択します。

gcloud

gcloud CLI を使用してクラスタを更新する場合は、更新するクラスタを GKE on Azure に指示する CLUSTER_NAME フィールドと GOOGLE_CLOUD_LOCATION フィールドを常に含める必要があります。次のコマンドには、更新するフィールドのみを含めます。コマンドを実行する前に、他のフィールドは削除します。

gcloud container azure clusters update CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --cluster-version=CLUSTER_VERSION \
    --admin-users=USERNAME_LIST \
    --client=CLIENT_NAME \
    --vm-size=VM_SIZE

以下を置き換えます。

  • CLUSTER_NAME: クラスタの名前。
  • GOOGLE_CLOUD_LOCATION(必須): クラスタを管理するサポートされている Google Cloud リージョン(例: us-west1
  • CLUSTER_VERSION: 新しいサポートされているクラスタ バージョン
  • USERNAME_LIST: ユーザー名のカンマ区切りのリスト(例: kai@example.com,hao@example.com,kalani@example.com)。これらは、このクラスタに対する管理者権限を付与するユーザーのメールアドレスです。クラスタの管理者ユーザーの以前のリストは、この設定の名前に置き換えられます。
  • CLIENT_NAME: AzureClient。
  • VM_SIZE: サポートされる新しい VM サイズ

AzureClient から Workload Identity 連携にクラスタの認証を更新するには、次のコマンドを実行します。

gcloud container azure clusters update CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --azure-tenant-id="${TENANT_ID}" \
    --azure-application-id="${APPLICATION_ID}" \
    --clear-client

API

GKE Multi-Cloud API を使用してクラスタを更新する場合は、HTTP リクエストに CLUSTER_NAME フィールドと GOOGLE_CLOUD_LOCATION フィールドを常に含める必要があります。これらのフィールドは、更新するクラスタを GKE on Azure に指示します。また、リクエストには API エンドポイントを含める必要もあります。更新するフィールドを含む JSON ファイルを作成します。更新するフィールドのみを JSON ファイルと UPDATE_MASK に含めます。

次の例は、API を使用してクラスタを更新する方法を示しています。更新可能なフィールドのリストなどの詳細については、projects.locations.azureClusters.patch メソッドのドキュメントをご覧ください。

  1. 更新するフィールドを含む cluster_update.json という名前の JSON ファイルを作成します。

    • Workload Identity 連携を使用する場合、JSON ファイルは次のようになります。
      {
        "description": "CLUSTER_DESCRIPTION",
        "controlPlane": {
          "version": "CLUSTER_VERSION",
          "vm_size": "VM_SIZE
        },
        "azureServicesAuthentication": {
          "tenantId": "TENANT_ID",
          "applicationId": "APPLICATION_ID"
        },
        "authorization": {
            "adminUsers": [
                {
                "username": USERNAME1,
                "username": USERNAME2,
                "username": USERNAME3
                }
            ]
        }
      }
      
    • Azure クライアントを使用する場合、JSON ファイルは次のようになります。
      {
        "description": "CLUSTER_DESCRIPTION",
        "controlPlane": {
          "version": "CLUSTER_VERSION",
          "vm_size": "VM_SIZE
        },
        "azureClient": "CLIENT_NAME",
        "authorization": {
            "adminUsers": [
                {
                "username": USERNAME1,
                "username": USERNAME2,
                "username": USERNAME3
                }
            ]
        }
      }
      

    以下を置き換えます。

    • CLUSTER_VERSION: 新しいサポートされているクラスタ バージョン。クラスタをアップグレードする場合は、すべてのマイナー バージョンをアップグレードする必要があります。
    • CLUSTER_DESCRIPTION: 新しいクラスタの説明
    • USERNAME1USERNAME2USERNAME3: このクラスタに対する管理者権限を付与するユーザーのメールアドレス。クラスタの管理者ユーザーの以前のリストは、これらのフィールドの名前に置き換えられます。
    • CLIENT_NAME: AzureClient 名。
    • TENANT_ID: Azure テナント ID
    • APPLICATION_ID: Azure Active Directory アプリケーションを作成するで作成した Azure アプリケーション ID
    • VM_SIZE: 新しい VM サイズ
  2. 次のコマンドで GKE Multi-Cloud API を使用してこれらの設定を更新します。

    curl -d @cluster_update.json -X PATCH \
       ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/azureClusters/CLUSTER_NAME?update_mask=UPDATE_MASK
    

次のように置き換えます。

  • ENDPOINT(必須): Google Cloud サービス エンドポイント
  • PROJECT_ID(必須): Google Cloud プロジェクト
  • GOOGLE_CLOUD_LOCATION(必須): クラスタを管理するサポートされている Google Cloud リージョン(例: us-west1
  • CLUSTER_NAME(必須): クラスタ名
  • UPDATE_MASK(必須): 更新するフィールドを示す、次の 1 つ以上のフラグのカンマ区切りリスト この例では、次の項目を指定します。
    • controlPlane のバージョン
    • 説明
    • authorization.admin_users
    • control_plane.vm_size
    • azure_client
    • azure_services_authentication.tenant_id
    • azure_services_authentication.application_id

AzureClient から Workload Identity 連携にクラスタの認証を更新するには、フィールド update_maskazure_clientazure_services_authentication.tenant_idazure_services_authentication.application_id を追加します。

Logging の構成を更新する

Google Cloud CLI を使用して、クラスタの Cloud Logging の構成設定を更新できます。ロギング構成を更新するには、次のコマンドを実行します。

gcloud container azure clusters update CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --logging=LOGGING_CONFIG \

以下を置き換えます。

次のステップ