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

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

クラスタを更新する理由

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

  • クラスタの説明を更新する。
  • クラスタのアノテーションを更新する。
  • クラスタの管理ユーザーのリストを更新する。
  • クラスタのロギング構成を更新する。
  • 暗号鍵をローテーションする
  • クラスタ コントロール プレーンのセキュリティ グループを更新する。

上記以外の理由でクラスタを更新する場合もあります。更新可能なフィールドの詳細については、gcloud container aws clusters updateprojects.locations.awsClusters.patch のドキュメントをご覧ください。

前提条件

  • クラスタのフィールドを更新するには、gkemulticloud.googleapis.com/awsClusters.update の Identity and Access Management 権限が必要です。

  • クラスタのセキュリティ グループを更新するには、クラスタのコントロール プレーン ロールに ec2:ModifyNetworkInterfaceAttribute 権限が含まれている必要があります。詳細については、コントロール プレーン ロールを作成するをご覧ください。

  • また、クラスタのタグを更新するには、クラスタの API ロールに次の AWS 権限が必要です。

    • autoscaling:CreateOrUpdateTags
    • autoscaling:DeleteTags
    • ec2:CreateTags
    • ec2:DescribeLaunchTemplates
    • ec2:DescribeSecurityGroupRules
    • ec2:DeleteTags
    • elasticloadbalancing:AddTags
    • elasticloadbalancing:RemoveTags

    AWS IAM ロールを作成するで、クラスタの API ロールを作成して権限を追加する方法を確認してください。

更新プロセス

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

他の変更(Kubernetes バージョンの更新など)の場合は、コントロール プレーン ノードの再起動が必要になります。その場合、GKE on AWS はローリング アップデートを実行します。この更新は次のステップで構成されます。

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

更新に失敗した場合

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

gcloud container aws 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 AWS に指示する CLUSTER_NAME フィールドと GOOGLE_CLOUD_LOCATION フィールドを常に含める必要があります。次のコマンドには、更新するフィールドのみを含めます。コマンドを実行する前に、他のフィールドは削除します。

gcloud container aws clusters update CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --cluster-version=CLUSTER_VERSION \
    --admin-users=USERNAME_LIST \
    --root-volume-iops=ROOT_VOLUME_IOPS \
    --root-volume-size=ROOT_VOLUME_SIZE \
    --root-volume-type=ROOT_VOLUME_TYPE \
    --security-group-ids=SECURITY_GROUP_IDS

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

  • CLUSTER_NAME: クラスタの名前
  • GOOGLE_CLOUD_LOCATION(必須): クラスタを管理するサポート対象の Google Cloud リージョン(例: us-west1
  • CLUSTER_VERSION: 新しいサポート対象のクラスタ バージョン
  • USERNAME_LIST: ユーザー名のカンマ区切りのリスト(例: kai@example.com,hao@example.com,kalani@example.com)。これらは、このクラスタに対する管理者権限を付与するユーザーのメールアドレスです。クラスタの管理者ユーザーの以前のリストは、この設定の名前に置き換えられます。
  • ROOT_VOLUME_IOPS: ルート ボリュームの最大 I/O オペレーション/秒
  • ROOT_VOLUME_SIZE: ルート ボリュームのサイズ(GB)
  • ROOT_VOLUME_TYPE: ルート ボリュームの AWS EBS ボリューム タイプ
  • SECURITY_GROUP_IDS: クラスタ コントロール プレーン インスタンスに追加する AWS セキュリティ グループ ID
  • SECURITY_GROUP_IDS: クラスタ コントロール プレーン インスタンスに追加する AWS セキュリティ グループ ID

API

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

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

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

    {
        "controlPlane": {
           "version": "CLUSTER_VERSION",
        },
        "description": "CLUSTER_DESCRIPTION",
        "authorization": {
            "adminUsers": [
                {
                "username": USERNAME1,
                "username": USERNAME2,
                "username": USERNAME3
                }
            ]
        }
    }
    

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

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

    curl -d @cluster_update.json -X PATCH \
       ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/awsClusters/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

クラスタのセキュリティ グループを更新する

クラスタのセキュリティ グループを更新するには、クラスタのコントロール プレーン ロールに ec2:ModifyNetworkInterfaceAttribute 権限が含まれている必要があります。詳細については、コントロール プレーン ロールを作成するをご覧ください。

gcloud container aws clusters update コマンドを使用して、クラスタ コントロール プレーンに追加のセキュリティ グループを追加できます。

gcloud container aws clusters update CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --security-group-ids=SECURITY_GROUP_IDS

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

  • CLUSTER_NAME: クラスタの名前
  • GOOGLE_CLOUD_LOCATION: クラスタを管理するサポート対象の Google Cloud リージョン(例: us-west1
  • SECURITY_GROUP_IDS: クラスタ コントロール プレーン インスタンスに追加する AWS セキュリティ グループ ID

クラスタ セキュリティ グループを削除する

Google Cloud CLI を使用して、クラスタからデフォルト以外のセキュリティ グループをすべて削除できます。クラスタを更新するには、次のコマンドを実行します。

gcloud container aws clusters update CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --clear-security-group-ids

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

クラスタのボリューム情報を更新する

Google Cloud CLI を使用して、クラスタのコントロール プレーン ボリュームを更新できます。ボリュームの KMS 鍵を更新するには、鍵のローテーションをご覧ください。

ボリュームのサイズ、タイプ、または IOPS を更新するには、次のコマンドを実行します。

gcloud container aws clusters update CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --root-volume-iops=ROOT_VOLUME_IOPS
    --root-volume-size=ROOT_VOLUME_SIZE
    --root-volume-type=ROOT_VOLUME_TYPE

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

ロギング構成を更新する

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

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

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

次のステップ