Google Distributed Cloud(GDC)エアギャップを使用すると、GDC 上の GKE を使用して、Kubernetes クラスタを作成した後に管理できます。このサービスを使用すると、次のワークフローでコンテナ ワークロードの要件の変化に対応し、既存のクラスタノードを維持できます。
共有クラスタをプロジェクトに接続して切断する: クラスタの作成後に共有クラスタを複数のプロジェクトに接続して切断し、共有クラスタのワークロードのスコープを変更します。
組織内のクラスタを表示する: 組織内のクラスタを一覧表示して、コンテナ ワークロードで使用可能なものを追跡します。
Kubernetes バージョンのリストを取得する: クラスタの Kubernetes バージョンを表示して、最新の Kubernetes リリースに対応するクラスタの機能を確認します。
更新可能なクラスタ プロパティを表示する:
Clusterカスタム リソース定義内で変更可能なプロパティを表示します。
このドキュメントは、複数のプロジェクトにまたがるクラスタでホストされているコンテナ ワークロードを管理するプラットフォーム管理者グループ内の IT 管理者と、単一のプロジェクト内でアプリケーション ワークロードの作成を担当するアプリケーション オペレーター グループ内のデベロッパーを対象としています。詳細については、GDC エアギャップの対象ユーザーに関するドキュメントをご覧ください。
始める前に
このドキュメントのタスクを完了するには、次のリソースとロールが必要です。
共有 Kubernetes クラスタでノードプールを表示して管理するには、組織の IAM 管理者に次のロールの付与を依頼してください。
- ユーザー クラスタ管理者(
user-cluster-admin) - ユーザー クラスタ ノード閲覧者(
user-cluster-node-viewer)
これらのロールはプロジェクト Namespace にバインドされていません。
- ユーザー クラスタ管理者(
標準 Kubernetes クラスタでノードプールを表示して管理するには、組織の IAM 管理者に Standard Cluster 管理者(
standard-cluster-admin)ロールの付与を依頼してください。このロールはプロジェクトの名前空間にバインドされます。Kubernetes クラスタに対してコマンドを実行するには、次のリソースがあることを確認してください。
Kubernetes クラスタ名を確認するか、プラットフォーム管理者グループのメンバーにクラスタ名を確認します。
まだ kubeconfig ファイルがない場合は、ログインして Kubernetes クラスタの kubeconfig ファイルを生成します。
これらの手順で
KUBERNETES_CLUSTER_KUBECONFIGを置き換えるには、Kubernetes クラスタの kubeconfig パスを使用します。
ゾーン API サーバーに対してコマンドを実行するには、クラスタをホストするゾーン API サーバーの kubeconfig ファイルを生成します。詳しくは、ログインするをご覧ください。環境変数
MANAGEMENT_API_SERVERを kubeconfig パスに設定します。
プロジェクト階層内のクラスタを移動する
プロジェクトは、サービス インスタンスの論理グループ化を提供します。共有 Kubernetes クラスタを GDC プロジェクト階層に追加または削除して、サービスを適切にグループ化できます。標準クラスタは単一のプロジェクトにのみスコープ設定されているため、プロジェクト階層内で移動することはできません。
プロジェクトを共有クラスタに接続する
GDC コンソールから共有クラスタを作成する場合は、コンテナ ワークロードを正常にデプロイする前に、少なくとも 1 つのプロジェクトを関連付ける必要があります。既存のクラスタにプロジェクトを追加する必要がある場合は、次の手順を行います。
コンソール
- ナビゲーション メニューで、[Kubernetes Engine] > [クラスタ] を選択します。
- クラスタのリストで、クラスタ名をクリックして [クラスタの詳細] ページを開きます。
- [プロジェクトを接続] を選択します。
- 使用可能なプロジェクトのリストで、クラスタにアタッチするプロジェクト名をクリックします。
- [保存] をクリックします。
API
クラスタの新しい
ProjectBindingカスタム リソースを作成します。kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: resourcemanager.gdc.goog/v1 kind: ProjectBinding metadata: name: CLUSTER_NAME-PROJECT_NAME namespace: platform labels: resourcemanager.gdc.goog/projectbinding-for-user-project: "true" spec: clusterRef: name: CLUSTER_NAME selector: nameSelector: matchNames: - PROJECT_NAME EOF次のように置き換えます。
MANAGEMENT_API_SERVER: ゾーン API サーバーの kubeconfig パス。CLUSTER_NAME: クラスタの名前。PROJECT_NAME: クラスタをバインドするプロジェクトの名前。各ProjectBindingリソースは 1 つのクラスタにのみマッピングできます。プロジェクトで複数のクラスタへのアクセスが必要な場合は、クラスタごとに一意のProjectBindingを作成する必要があります。
Terraform
Terraform 構成ファイルに次のコード スニペットを挿入して、
ProjectBindingカスタム リソースを作成します。provider "kubernetes" { config_path = "MANAGEMENT_API_SERVER" } resource "kubernetes_manifest" "PROJECT_BINDING_RESOURCE_NAME" { manifest = { "apiVersion" = "resourcemanager.gdc.goog/v1" "kind" = "ProjectBinding" "metadata" = { "name" = "CLUSTER_NAME-PROJECT_NAME" "namespace" = "platform" "labels" = { "resourcemanager.gdc.goog/projectbinding-for-user-project" = "true" } } "spec" = { "clusterRef" = { "name" = "CLUSTER_NAME" } "selector" = { "nameSelector" = { "matchNames" = [ "PROJECT_NAME", ] } } } } }次のように置き換えます。
MANAGEMENT_API_SERVER: ゾーン API サーバーの kubeconfig パス。PROJECT_BINDING_RESOURCE_NAME: プロジェクト バインディングの Terraform リソース名(CLUSTER_NAME-PROJECT_NAME-bindingなど)。この名前は、Terraform がプロジェクト バインディングを識別するために使用するもので、GDC では使用されません。CLUSTER_NAME: クラスタの名前。各ProjectBindingリソースは 1 つのクラスタにのみマッピングできます。プロジェクトで複数のクラスタへのアクセスが必要な場合は、クラスタごとに一意のProjectBindingを作成する必要があります。PROJECT_NAME: バインドするプロジェクトの名前。各ProjectBindingリソースは 1 つのクラスタにのみマッピングできます。プロジェクトで複数のクラスタへのアクセスが必要な場合は、クラスタごとに一意のProjectBindingを作成する必要があります。
新しいプロジェクト バインディングを適用します。
terraform apply
共有クラスタからプロジェクトを切り離す
プロジェクトを共有クラスタから切り離すと、クラスタで実行されているワークロードの削除など、大きな変更が発生する可能性があります。プロジェクトを共有クラスタから切り離す前に、その影響を必ず理解してください。
既存の共有クラスタからプロジェクトを切り離すには、次の操作を行います。
コンソール
- ナビゲーション メニューで、[Kubernetes Engine] > [クラスタ] を選択します。
- クラスタのリストでクラスタをクリックして、[クラスタの詳細] ページを開きます。
- クラスタから切り離すプロジェクトの delete [切り離し] をクリックします。
API
プロジェクトとクラスタをリンクする
ProjectBindingリソースを削除します。kubectl --kubeconfig MANAGEMENT_API_SERVER delete projectbinding \ CLUSTER_NAME-PROJECT_NAME -n platform次のように置き換えます。
MANAGEMENT_API_SERVER: ゾーン API サーバーの kubeconfig パス。CLUSTER_NAME: クラスタの名前。PROJECT_NAME: クラスタから切り離すプロジェクトの名前。
Terraform
プロジェクト バインディング リソースを削除します。
terraform destroy -target kubernetes_manifest.PROJECT_BINDING_RESOURCE_NAMEPROJECT_BINDING_RESOURCE_NAMEは、削除するプロジェクト バインディングの Terraform リソース名(CLUSTER_NAME-PROJECT_NAME-bindingなど)に置き換えます。この名前は、Terraform がプロジェクト バインディングを識別するために使用するもので、GDC では使用されません。
組織内のすべてのクラスタを表示する
組織で使用可能なすべての Kubernetes クラスタ(ステータス、Kubernetes バージョン、その他の詳細を含む)を表示できます。
Kubernetes クラスタはゾーン リソースであるため、ゾーンごとにクラスタを一覧表示することしかできません。
コンソール
ナビゲーション メニューで、[Kubernetes Engine] > [クラスタ] を選択します。
組織内の利用可能なすべての共有クラスタとそのステータスなどの情報が表示されます。

gdcloud
組織内のゾーンで使用可能な共有クラスタを一覧表示します。
gdcloud clusters list出力は次のようになります。
CLUSTERREF.NAME READINESS.STATE TYPE CURRENTVERSION.USERCLUSTERVERSION CURRENTVERSION.SUPPORT.STATUS user-vm-1 Ready user 1.15.0-gdch.394225-1.28.15-gke.1200 In Support user-vm-2 Ready user 1.15.0-gdch.394225-1.29.12-gke.800 In Support
API
組織内のゾーンで使用可能な Kubernetes クラスタを一覧表示します。
kubectl get clusters.cluster.gdc.goog -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVER次のように置き換えます。
MANAGEMENT_API_SERVER: ゾーン API サーバーの kubeconfig パス。KUBERNETES_CLUSTER_NAMESPACE: クラスタの Namespace。共有クラスタの場合は、platformNamespace を使用します。標準クラスタの場合は、クラスタのプロジェクト Namespace を使用します。
出力は次のようになります。
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
クラスタで使用可能な Kubernetes バージョンを一覧表示する
GDC ゾーンで使用可能な Kubernetes バージョンを一覧表示して、クラスタでアクセスできる Kubernetes 機能を検証できます。
ゾーンで使用可能な Kubernetes バージョンを一覧表示します。
kubectl get userclustermetadata.upgrade.private.gdc.goog \ -o=custom-columns=K8S-VERSION:.spec.kubernetesVersion \ --kubeconfig MANAGEMENT_API_SERVERMANAGEMENT_API_SERVERは、クラスタのゾーン API サーバーの kubeconfig ファイルに置き換えます。出力は次のようになります。
K8S-VERSION 1.25.10-gke.2100 1.26.5-gke.2100 1.27.4-gke.500
更新可能なプロパティを表示する
Kubernetes クラスタごとに、作成後に変更できるプロパティのセットがあります。変更できるのは、Cluster カスタム リソースの spec にある変更可能なプロパティのみです。spec のすべてのプロパティが、クラスタのプロビジョニング後に更新できるわけではありません。更新可能なプロパティを表示するには、次の操作を行います。
コンソール
ナビゲーション メニューで、[Kubernetes Engine] > [クラスタ] を選択します。
Kubernetes クラスタのリストで、クラスタ名をクリックしてプロパティを表示します。
編集可能なプロパティには、edit [編集] アイコンが表示されます。
API
Cluster仕様のプロパティのリストと、各プロパティに対応する有効な値を表示します。kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig MANAGEMENT_API_SERVERMANAGEMENT_API_SERVERは、ゾーン API サーバーの kubeconfig パスに置き換えます。出力は次のようになります。
KIND: Cluster VERSION: cluster.gdc.goog/v1 RESOURCE: spec <Object> DESCRIPTION: <empty> FIELDS: clusterNetwork <Object> The cluster network configuration. If unset, the default configurations with pod and service CIDR sizes are used. Optional. Mutable. initialVersion <Object> The GDC air-gapped version information of the user cluster during cluster creation. Optional. Default to use the latest applicable version. Immutable. loadBalancer <Object> The load balancer configuration. If unset, the default configuration with the ingress service IP address size is used. Optional. Mutable. nodePools <[]Object> The list of node pools for the cluster worker nodes. Optional. Mutable. releaseChannel <Object> The release channel a cluster is subscribed to. When a cluster is subscribed to a release channel, GDC maintains the cluster versions for users. Optional. Mutable.これらの設定を更新するには、GDC コンソールまたは kubectl CLI を使用します。たとえば、ノードプールのサイズを変更できます。