クラスタの更新

このドキュメントでは、バージョンの変更を含まないクラスタ更新の実行方法について説明します。

クラスタの更新とは、クラスタの構成を変更することを意味します。

クラスタのアップグレードは、コントロール プレーン バージョンの変更やノードプール バージョンの変更を含むクラスタ更新の特殊なケースです。アップグレードの詳細については、GKE on VMware のアップグレードをご覧ください。

ファイアウォール ルールを確認する

バージョン 1.29 以降では、サーバーサイドのプリフライト チェックはデフォルトで有効になっています。サーバー側のプリフライト チェックには、追加のファイアウォール ルールが必要です。管理クラスタのファイアウォール ルールで「プリフライト チェック」を検索し、必要なすべてのファイアウォール ルールが構成されていることを確認します。

サーバーサイドのプリフライト チェックでは、gkectl を使用してユーザー クラスタを更新すると、プリフライト チェックは、管理ワークステーションでローカルではなく、管理クラスタで実行されます。Google Cloud コンソール、Google Cloud CLI、または Terraform を使用してクラスタを更新すると、管理クラスタでサーバー側のプリフライト チェックが実行されます。

管理クラスタを更新すると、GKE on VMware は Docker の Kubernetes(kind)クラスタをデプロイして、管理クラスタの更新に必要な Kubernetes コントローラを一時的にホストします。この一時的なクラスタは、ブートストラップ クラスタと呼ばれます。管理クラスタを更新すると、ブートストラップ クラスタでサーバー側のプリフライト チェックが実行されます。

更新できる内容

一部のクラスタ機能と設定は更新できますが、クラスタの作成後に他の機能と設定を更新することはできません。更新できる機能については、管理クラスタ構成ファイルユーザー クラスタ構成ファイルのリファレンス ページをご覧ください。 更新できるフィールドは可変とマークされ、更新できないフィールドは不変とマークされます。

gkectl コマンドを実行して、更新できる機能と設定を確認することもできます。

管理クラスタで更新できる内容を確認するには:

gkectl update admin --help

出力例:

Update the admin cluster. Only the following updates are supported and they can
only be updated one at a time:
- Enabling/Disabling Vsphere Resource Metrics
- Adding static IPs
- Updating vCenter CA certificate
- Registering Admin Cluster
- Enabling/Disabling Cloud Audit Logging
- Enabling/Disabling Stackdriver
- Enabling/Disabling Auto Repair
- Enabling/Disabling Auto Resize for Addon Nodes
- Enabling/Disabling GKE OnPrem API
- Updating OS Image Type
- Enabling/Disabling AntiAffinityGroups
- Update Secrets Encryption Configuration
- [Preview] Enabling/Disabling Cluster Backup
- [Preview] Update Cluster Backup configs

ユーザー クラスタで更新できる内容を確認するには:

gkectl update cluster --help

出力例:

Update a GKE On-Prem cluster. Only the following updates are supported and they
can only be updated one at a time:
- Adding static IPs
- Updating node pool
- Updating user master cpu and memory
- Enabling/Disabling Vsphere Resource Metrics
- Enabling/Disabling vSphere CSI deployment
- Enabling/Disabling Auto Repair
- Enabling/Disabling Cloud Audit Logging
- Enabling/Disabling Stackdriver
- Enabling/Disabling GKE OnPrem API
- Registering User Cluster
- Updating vCenter CA certificate
- Updating MetalLB Address Pools
- Enabling/Disabling Auto Resizing on user master
- Updating NodePoolUpdatePolicy
- Enabling/Disabling AntiAffinityGroups
- [Preview] Enabling/Disabling Node Network Policy
- Updating Secrets Encryption
- Enabling/Disabling DataplaneV2 forwardMode

一度に 1 つずつ更新する

一度に 1 つの機能または設定のみを更新します。たとえば、マスター CPU とメモリを更新し、自動修復も無効にするとします。

この場合、2 つの個別の更新を行います。1 つはマスター CPU とメモリ用、もう 1 つは自動修復です。2 番目の更新を行う前に、1 番目の更新が成功したことを確認します。

更新手順

ユーザー クラスタを更新するには、gkectl、Google Cloud コンソール、または Google Cloud CLI を使用します。Terraform を使用してユーザー クラスタを作成した場合は、Terraform を使用してクラスタを更新できます。ほとんどの場合、gkectl を使用して管理クラスタを更新する必要があります。

次の例は、クラスタを更新する方法を示しています。

gkectl

gkectl update コマンドは、次のいずれかの形式をとります。

管理クラスタの例(gkectl update admin

管理クラスタで gkeOnPremAPI.enabled の値を false から true に変更する場合について考えてみましょう。まず、管理クラスタの構成ファイルを編集し、値を true に設定します。

gkeOnPremAPI:
  enabled: true

次に、管理クラスタを更新します。

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG

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

  • ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス

  • ADMIN_CLUSTER_CONFIG: 管理クラスタの構成ファイルのパス

ユーザー クラスタの例(gkectl update cluster

ユーザー クラスタで stackdriver.vSphereDisableResourceMetrics の値を false から true に変更する場合について考えてみましょう。まず、ユーザー クラスタの構成ファイルを編集し、値を true に設定します。

stackdriver:
  disableVsphereResourceMetrics: true

次に、ユーザー クラスタを更新します。

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

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

  • ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス

  • USER_CLUSTER_CONFIG: ユーザー クラスタの構成ファイルのパス

ユーザー クラスタの例(gkectl update credentials

ユーザー クラスタが vCenter Server の呼び出しに使用する認証情報を変更する場合について考えてみましょう。

ユーザー クラスタの構成ファイルには、認証情報構成ファイルを指す vCenter.credentials.fileRef.path フィールドがあります。認証情報の構成ファイルで、usernamepassword の値を更新します。次に例を示します。

items:
- name: "vcenter-creds"
  username: "new-vcenter-account"
  password: "U$icUKEW#INE"

次に、認証情報を更新します。

gkectl update credentials vsphere \
    --config USER_CLUSTER_CONFIG \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG

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

  • USER_CLUSTER_CONFIG: ユーザー クラスタの構成ファイルのパス

  • ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス

コンソール

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

    [GKE クラスタ] に移動

  2. Google Cloud プロジェクトを選択し、更新するクラスタを選択します。

  3. [詳細] パネルで、[詳細] をクリックします。

  4. Google Cloud コンソールで更新できるフィールドには、鉛筆アイコンがあります。鉛筆アイコンをクリックします。表示されたボックスで、必要に応じてフィールド値を変更し、[完了] をクリックします。

  5. ページ上部の進行状況バーで [詳細を表示] をクリックします。更新が完了するまで待ちます。

gcloud CLI

該当する以下の更新コマンドを実行します。変更する構成のフラグのみを指定します。

ユーザー クラスタの管理者ユーザーを更新する

各クラスタの Kubernetes API サーバーは、受信したリクエストを承認できる必要があります。認可を構成するには、クラスタごとに Kubernetes のロールベース アクセス制御(RBAC)ポリシーを構成する必要があります。管理者ユーザーは、ユーザー クラスタで cluster-admin ロールが付与されたユーザーです。このロールは、クラスタに対する完全な管理者権限を付与します。

Alice と Bob が、us-west1 リージョンの cluster-1 というユーザー クラスタ上の唯一の管理者ユーザーであるとします。ここで、Alice が追加の管理者ユーザーとして Trent を追加する場合について考えてみましょう。Alice は次のコマンドを実行できます。

gcloud container vmware clusters update cluster-1 \
    --project example-project-id-12345 \
    --location us-west1 \
    --admin-users alice@example.com \
    --admin-users bob@example.com \
    --admin-users trent@example.com

上記のコマンドにより、Alice と Bob が管理者ユーザーのリストに保持され、管理者ユーザーのリストに Trent が追加されます。このコマンドは、管理者ユーザーの現在のリストをコマンドで指定されたリストで上書きするため、コマンドで Alice と Bob がリストされている必要があります。また、各 --admin-users フラグは 1 人のユーザーのみを指定することに注意してください。1 つのフラグに複数のユーザーを指定することはできません。

Terraform

  1. クラスタまたはノードプールの作成に使用した Terraform 構成ファイル内の該当する以下のフィールドの値を変更します。フィールドの詳細については、Terraform のリファレンス ドキュメントをご覧ください。

  2. terraform apply を実行して、構成を更新します。

ユーザー クラスタの管理者ユーザーを更新する

各クラスタの Kubernetes API サーバーは、受信したリクエストを承認できる必要があります。認可を構成するには、クラスタごとに Kubernetes のロールベース アクセス制御(RBAC)ポリシーを構成する必要があります。管理者ユーザーは、ユーザー クラスタで cluster-admin ロールが付与されたユーザーです。このロールは、クラスタに対する完全な管理者権限を付与します。

Alice と Bob が、特定のユーザー クラスタ内の唯一の管理者ユーザーであるとします。Alice が追加の管理者ユーザーとして Trent を追加するとします。Alice は次のように Terraform 構成を調整してから terraform apply を実行します。

authorization {
  admin_users {
    username = "alice@example.com"
    username = "bob@example.com"
    username = "trent@example.com"
  }
}

上記の調整により、Alice と Bob が管理者ユーザーのリストに保持され、管理者ユーザーのリストに Trent が追加されます。terraform apply コマンドは、管理者ユーザーの現在のリストを構成で指定されているリストで上書きするため、新しい構成に Alice と Bob がリストされている必要があります。

詳細

このセクションで説明するドキュメントでは、クラスタの更新に関する詳細について説明します。

クラスタ / 管理者の更新

以下のドキュメントでは、gkectl update admingkectl update cluster を使用した機能と設定の更新に関する詳細について説明します。

認証情報を更新する

次のドキュメントでは、gkectl update credentials を使用した鍵と証明書の更新に関する詳細を説明します。

次のステップ

クラスタをアップグレードする