このドキュメントでは、バージョンの変更を含まないクラスタ更新を行う方法について説明します。
クラスタの更新とは、クラスタの構成を変更することを意味します。
クラスタのアップグレードは、コントロール プレーン バージョンの変更やノードプール バージョンの変更を含むクラスタ更新の特殊なケースです。アップグレードについては、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 credentials
- これを使用してクラスタの認証情報を更新します。gkectl update admin
- 管理クラスタの構成ファイルで変更した後、このコマンドを実行します。gkectl update cluster
- ユーザー クラスタの構成ファイルで変更した後、このコマンドを実行します。
管理クラスタの例(gkectl update admin
)
管理クラスタで gkeOnPremAPI.enabled
の値を false
から true
に変更するとします。まず、管理クラスタの構成ファイルを編集して、値を true
に設定します。
gkeOnPremAPI: enabled: true
次に、管理クラスタを更新します。
gkectl update admin --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 フィールドがあります。認証情報構成ファイルで、username
と password
の値を更新します。例:
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 ファイルのパス
コンソール
コンソールで、Google Kubernetes Engine クラスタの概要ページに移動します。
Google Cloud プロジェクトを選択して、更新するクラスタを選択します。
[詳細] パネルで、[詳細] をクリックします。
Google Cloud コンソールで更新できるフィールドには、鉛筆アイコンが表示されます。鉛筆アイコンのいずれかをクリックします。表示されたボックスで、必要に応じてフィールド値を変更し、[完了] をクリックします。
ページ上部の進行状況バーで [詳細を表示] をクリックします。更新が完了するまで待ちます。
gcloud CLI
該当する更新コマンドを実行します。変更する構成のフラグのみを指定します。
ユーザー クラスタ:
gcloud container vmware clusters update
ユーザー クラスタ上のノードプール:
gcloud container vmware node-pools update
ユーザー クラスタの管理ユーザーを更新する
各クラスタの 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
クラスタまたはノードプールの作成に使用した Terraform 構成ファイルで、該当する以下のフィールドの値を変更します。フィールドの詳細な説明については、Terraform リファレンス ドキュメントをご覧ください。
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 admin
と gkectl update cluster
を使用した機能と設定の更新に関する詳細について説明しています。
認証情報を更新する
次のドキュメントは、gkectl update credentials
を使用した鍵と証明書の更新に関する詳細を説明しています。