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

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

クラスタを更新する理由

クラスタを更新する理由としては、次のようなものがあります。

  • クラスタの説明を更新する。
  • クラスタのアノテーションを更新する。
  • クラスタの管理ユーザーのリストを更新する。
  • クラスタのロギング構成を更新する。
  • クラスタの 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 でリソースを再起動したり、リソースを再作成することなく、クラスタを更新できることもあります(クラスタの説明を更新する場合など)。このような変更はすぐに反映されます。

他の変更(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. 更新するフィールドを含む JSON ファイルを cluster_update.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.version
    • description
    • authorization.admin_users
    • control_plane.vm_size
    • azure_client
    • azure_services_authentication.tenant_id
    • azure_services_authentication.application_id

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

ロギング構成を更新する

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

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

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

次のステップ