クラスタの更新

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

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

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

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

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

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

管理クラスタを更新すると、Google Distributed Cloud は 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 回目の更新を行う前に、最初の更新が正常に完了したことを確認します。

更新手順

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 ロールが付与されたユーザーです。このロールは、クラスタに対する完全な管理者権限を付与します。

us-west1 リージョンの cluster-1 というユーザー クラスタの管理者ユーザーが Alice と Bob のみであるとします。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 を使用した鍵と証明書の更新に関する詳細を説明しています。

次のステップ

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