基本クラスタを作成する

このページは、GKE on VMware の小規模な概念実証のインストールについて説明するガイドのパート 2 です。パート 1 は、最小限のインフラストラクチャの設定に関するもので、IP アドレスの計画方法と、デプロイに必要な vSphere と Google Cloud インフラストラクチャの設定方法を説明しています。このドキュメントは、前のセクションで行った設定と計画に基づいており、このドキュメントで入力できるシンプルなテンプレートを使用して、vSphere 環境で管理ワークステーション、管理クラスタ、ユーザー クラスタを作成する方法について説明します。その後は、アプリケーションのデプロイに進みます。

このシンプルなインストールのインフラストラクチャ設定のように、このドキュメントを使用して設定したクラスタは、実際の本番環境のニーズやユースケースには適していない可能性があります。本番環境へのインストールに関するその他の情報、ベスト プラクティス、手順については、インストール ガイドをご覧ください。

準備

  1. 最小限のインフラストラクチャを設定するの説明に沿って、vSphere と Google Cloud の環境を設定できていることを確認します。

  2. Terraform を使用してユーザー クラスタを作成する場合は、管理ワークステーションか別のパソコンに Terraform が必要です。

手順の概要

この設定における主な手順は次の通りです。

  1. サービス アカウントの作成に必要な権限を持つアカウントを使用して、Google Cloud CLI にログインします。

  2. vCenter のユーザー名とパスワード、および前のセクションで準備した IP アドレスなど、GKE on VMware の構成に必要な情報を収集します。

  3. 管理クラスタとユーザー クラスタの作成に必要なリソースとツールを備えた管理ワークステーションを作成します。これには、設定を完了するために必要な追加のサービス アカウントも含まれます。

  4. ユーザー クラスタを管理および更新するための管理クラスタを作成します。

  5. ワークロードを実行するためのユーザー クラスタを作成します。

1. Google Cloud CLI にログインします。

GKE on VMware を設定するには、権限が異なる複数のサービス アカウントが必要です。手動でコンポーネント アクセス サービス アカウントを作成する必要がありますが、gkeadm コマンドライン ツールを使用して、管理ワークステーションを作成する一環として、残りのアカウントを作成し構成できます。ただし、設定の際 gkeadm は、現在の gcloud CLI の account プロパティを使用するため、これを行うには、サービス アカウントの作成と構成に必要な権限のあるアカウントを使用して Google Cloud CLI にログインする必要があります。

  1. gcloud CLI にログインします。どの Google アカウントも使用できますが、必要な権限が必要です。 このガイドの前のパートに沿って操作した場合は、すでにコンポーネント アクセス サービス アカウントを作成するための適切なアカウントでログインしている可能性があります。

    gcloud auth login
    
  2. gcloud CLI の account プロパティが正しく設定されていることを確認します。

    gcloud config list
    

    出力には、SDK account プロパティの値が表示されます。次に例を示します。

    [core]
    account = my-name@google.com
    disable_usage_reporting = False
    Your active configuration is: [default]
    
  3. 最新の gcloud CLI コンポーネントがインストールされていることを確認します。

    gcloud components update
    

    gcloud CLI のインストール方法によっては、「このインストールで Google Cloud CLI コンポーネント マネージャーが無効になっているため、この操作を実行できません。次のコマンドを実行して、このインストールで同じ結果を得ることができます」というメッセージが表示される場合があります。手順に沿って、コマンドをコピーして貼り付け、コンポーネントを更新してください。

2. 情報を収集する

最小限のインフラストラクチャを設定するで準備した情報を使用して、次の表のプレースホルダを編集します。

vSphere の詳細
vCenter アカウントのユーザー名 USERNAME
vCenter アカウントのパスワード PASSWORD
vCenter Server のアドレス ADDRESS
管理ワークステーションの作成に使用するマシン上の vCenter Server のルート CA 証明書のパス CA_CERT_PATH
vSphere データセンターの名前 DATA_CENTER
vSphere クラスタの名前 VSPHERE_CLUSTER
vSphere リソースプールの名前またはパス。詳細については、vcenter.resourcePool をご覧ください。 RESOURCE_POOL
vSphere データストアの名前 DATASTORE
vSphere ネットワークの名前 NETWORK
IP アドレス
管理ワークステーション用の 1 つの IP アドレス ADMIN_WS_IP
管理クラスタ ノード用の 4 つの IP アドレス。これには、アップグレードと更新に使用できる追加のノードのアドレスが含まれます。 ADMIN_CONTROL_PLANE_NODE_IP_1
ADMIN_CONTROL_PLANE_NODE_IP_2
ADMIN_CONTROL_PLANE_NODE_IP_3
ユーザー クラスタ内のコントロール プレーン ノードの IP アドレス。 USER_CONTROL_PLANE_NODE_IP
ユーザー クラスタ ノード用の 4 つの IP アドレス。これには、アップグレードと更新に使用できる追加のノードのアドレスが含まれます。 USER_NODE_IP_1
USER_NODE_IP_2
USER_NODE_IP_3
USER_NODE_IP_4
管理クラスタの Kubernetes API サーバーの仮想 IP アドレス(VIP) ADMIN_CONTROL_PLANE_VIP
ユーザー クラスタ Kubernetes API サーバーの VIP USER_CONTROL_PLANE_VIP
ユーザー クラスタの Ingress VIP USER_INGRESS_VIP
ユーザー クラスタ内の LoadBalancer タイプの Service 用の 2 つの VIP。 SERVICE_VIP_1
SERVICE_VIP_2
管理ワークステーションとクラスタノードから到達可能な DNS サーバーの IP アドレス DNS_SERVER_IP
管理ワークステーションとクラスタノードから到達可能な NTP サーバーの IP アドレス NTP_SERVER_IP
管理ワークステーションとクラスタノードを持つサブネットのデフォルト ゲートウェイの IP アドレス DEFAULT_GATEWAY_IP
管理ワークステーションとクラスタノードを持つサブネットのネットマスク
例: 255.255.255.0
NETMASK
ネットワークがプロキシ サーバーの背後にある場合は、プロキシ サーバーの URL。 詳細については、プロキシをご覧ください。必要に応じて、管理ワークステーションの構成ファイルに手動で入力します PROXY_URL
Service とポッドの CIDR 範囲
管理クラスタとユーザー クラスタには、それぞれ Service の CIDR 範囲と Pod の CIDR 範囲が必要です。 ネットワーク内の他の要素と重複しないように変更する必要がない限り、次の事前入力値を使用します。
管理クラスタ内の Service の CIDR 範囲 10.96.232.0/24
管理クラスタ内の Pod の CIDR 範囲 192.168.0.0/16
ユーザー クラスタ内の Service の CIDR 範囲 10.96.0.0/20
ユーザー クラスタ内の Pod の CIDR 範囲 192.168.0.0/16
Google Cloud の詳細
選択した Cloud プロジェクトの ID PROJECT_ID
管理ワークステーションの作成に使用するマシンで、前のセクションで設定したコンポーネント アクセス サービス アカウントの JSON キーファイルのパス。 COMPONENT_ACCESS_SA_KEY_PATH
Google Cloud アカウントに関連付けられているメールアドレス。例: alex@example.com GOOGLE_ACCOUNT_EMAIL

3. 管理ワークステーションを作成する

クラスタを作成する前に、管理ワークステーションを作成して SSH で接続する必要があります。管理ワークステーションは、vSphere 環境で GKE Enterprise クラスタを作成するために必要なツールとリソースを備えたスタンドアロンの VM です。gkeadm コマンドライン ツールを使用して管理者ワークステーションを作成します。

gkeadm をダウンロードする

現在のディレクトリに gkeadm をダウンロードします。

gsutil cp gs://gke-on-prem-release/gkeadm/1.28.200-gke.111/linux/gkeadm ./
chmod +x gkeadm

管理クラスタとユーザー クラスタの構成ファイルを作成するには、gkeadm バージョン(GKE on VMware のバージョン)が必要です。gkeadm のバージョンを確認するには、次のコマンドを実行します。

./gkeadm version

次の出力例はバージョンを示しています。

gkeadm 1.28.300 (1.28.200-gke.111)

gkeadm の別のバージョンをダウンロードできますが、このガイドでは、1.28.200-gke.111 をインストールすることを想定しており、すべての構成ファイルとコマンドでそのバージョンを使用します。

認証情報ファイルを作成する

現在のディレクトリに credential.yaml という名前のファイルを作成し、次の内容を保存します。

apiVersion: v1
kind: CredentialFile
items:
- name: vCenter
  username: "USERNAME"
  password: "PASSWORD"

管理ワークステーションの構成ファイルを作成する

再度、現在のディレクトリに admin-ws-config.yaml という名前のファイルを作成し、次の内容を保存します。

gcp:
  componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY_PATH"
vCenter:
  credentials:
    address: "ADDRESS"
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
  datacenter: "DATA_CENTER"
  datastore: "DATASTORE"
  cluster: "VSPHERE_CLUSTER"
  network: "NETWORK"
  resourcePool: "RESOURCE_POOL"
  caCertPath: "CA_CERT_PATH"
proxyUrl: ""
adminWorkstation:
  name: "minimal-installation-admin-workstation"
  cpus: 4
  memoryMB: 8192
  diskGB: 50
  dataDiskName: gke-on-prem-admin-workstation-data-disk/minimal-installation-data-disk.vmdk
  dataDiskMB: 512
  network:
    ipAllocationMode: "static"
    hostConfig:
      ip: "ADMIN_WS_IP"
      gateway: "DEFAULT_GATEWAY_IP"
      netmask: "NETMASK"
      dns:
      - "DNS_SERVER_IP"
  proxyUrl: ""
  ntpServer: ntp.ubuntu.com

管理ワークステーションを作成する

次のコマンドを使用して、管理ワークステーションを作成します。

./gkeadm create admin-workstation --auto-create-service-accounts

このコマンドを実行することで:

  • 管理ワークステーションが作成されます
  • インストールに必要な追加のサービス アカウントが自動的に作成されます
  • 管理クラスタとユーザー クラスタのテンプレート構成ファイルが作成されます

出力には、管理ワークステーションの作成に関する詳細情報が含まれ、管理ワークステーションへの SSH 接続の取得に使用できるコマンドが表示されます。

...
Admin workstation is ready to use.
Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation
This file is required for future upgrades
SSH into the admin workstation with the following command:
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49
********************************************************************

管理ワークステーションの作成の詳細については、管理ワークステーションを作成するをご覧ください。

管理ワークステーションに接続する

上の出力に表示されたコマンドを使用して、管理ワークステーションへの SSH 接続を確立します。次に例を示します。

ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49

このコマンドを再度探す必要がある場合は、gkeadm で、gkeadm create admin-workstation を実行するローカルマシン上のディレクトリに gke-admin-ws-... という名前のファイルを作成します。 これには、SSH コマンドを含む管理ワークステーションの詳細が含まれます。

管理ワークステーションで、「exit」と入力して SSH 接続を終了し、ローカルマシンに戻ります。

監査ロギングキーを管理ワークステーションにコピーする

前のセクションでは、監査ロギング サービス アカウント用の JSON キーファイルを作成しました。

管理ワークステーションのホーム ディレクトリに JSON キーファイルをコピーします。たとえば、ローカルマシン上の場所は次のように指定します。

scp -i /usr/local/google/home/me/.ssh/gke-admin-workstation audit-logging-key.json ubuntu@172.16.20.49:~

管理ワークステーション上のファイルを表示する

ここでも、管理ワークステーションへの SSH 接続を確立します。

管理ワークステーションで、ホーム ディレクトリ内のファイルを一覧表示します。

ls -1

出力は次のようになります。

  • admin-cluster.yaml。管理クラスタを作成するためのテンプレート構成ファイルです。
  • user-cluster.yaml。ユーザー クラスタを作成するためのテンプレート構成ファイルです。
  • 管理ワークステーションの構成で指定した vCenter 証明書ファイル
  • 管理ワークステーションの構成で指定した credential.yaml ファイル。
  • 監査ログのサービス アカウントの JSON キーファイル。
  • gkeadm が作成した 2 つのサービス アカウント(connect-register サービス アカウントと logging-monitoring サービス アカウント)の JSON キーファイル、および以前に作成したコンポーネント アクセス サービス アカウントのキーファイル。

次に例を示します。

admin-cluster.yaml
admin-ws-config.yaml
audit-logging-key.json
sa-key.json
connect-register-sa-2203040617.json
credential.yaml
log-mon-sa-2203040617.json
logs
vc01-cert.pem
user-cluster.yaml

クラスタを作成するには、構成ファイルでこれらのファイル名の一部を指定する必要があります。次の表のプレースホルダの値としてファイル名を使用します。

connect-register サービス アカウント キーのファイル名
例: connect-register-sa-2203040617.json
CONNECT_REGISTER_SA_KEY
logging-monitoring サービス アカウント キーのファイル名
例: log-mon-sa-2203040617.json
LOG_MON_SA_KEY
監査ログのサービス アカウント キー ファイル名
例: audit-logging-key.json
AUDIT_LOG_SA_KEY
コンポーネント アクセス サービス アカウント キーのファイル名
例: sa-key.json
COMPONENT_ACCESS_SA_KEY
vCenter 証明書のファイル名
例: vc01-cert.pem
CA_CERT_FILE

4. 管理クラスタを作成する

vCenter と他の詳細情報で管理ワークステーションを構成したので、それを使用して vSphere 環境に管理クラスタを作成できます。この手順を開始する前に、前記のとおり、管理ワークステーションに SSH 接続されていることを確認してください。次のコマンドはすべて管理ワークステーションで実行されます。

管理クラスタ構成ファイルを作成する

admin-cluster.yaml を開き、内容を次のように置き換えます。

apiVersion: v1
kind: AdminCluster
name: "minimal-installation-admin-cluster"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.28.200-gke.111-full.tgz"
vCenter:
  address: "ADDRESS"
  datacenter: "DATA_CENTER"
  cluster: "VSPHERE_CLUSTER"
  resourcePool: "RESOURCE_POOL"
  datastore: "DATASTORE"
  caCertPath: "CA_CERT_FILE"
  credentials:
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
network:
  hostConfig:
    dnsServers:
    - "DNS_SERVER_IP"
    ntpServers:
    - "NTP_SERVER_IP"
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  vCenter:
    networkName: "NETWORK"
  controlPlaneIPBlock:
    netmask: "NETMASK"
    gateway: "DEFAULT_GATEWAY_IP"
    ips:
    - ip: "ADMIN_CONTROL_PLANE_NODE_IP_1"
      hostname: "admin-cp-vm-1"
    - ip: "ADMIN_CONTROL_PLANE_NODE_IP_2"
      hostname: "admin-cp-vm-2"
    - ip: "ADMIN_CONTROL_PLANE_NODE_IP_3"
      hostname: "admin-cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "ADMIN_CONTROL_PLANE_VIP"
  kind: "MetalLB"
adminMaster:
  cpus: 4
  memoryMB: 16384
  replicas: 3
antiAffinityGroups:
  enabled: false
componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY"
gkeConnect:
  projectID: "PROJECT_ID"
  registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY"
stackdriver:
  projectID: "PROJECT_ID"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "LOG_MON_SA_KEY"
  disableVsphereResourceMetrics: false
cloudAuditLogging:
  projectID: "PROJECT_ID"
  clusterLocation: us-central1
  serviceAccountKeyPath: "AUDIT_LOG_SA_KEY"

管理クラスタ構成ファイルを検証する

管理クラスタ構成ファイルが有効であり、クラスタの作成に使用できることを確認します。

gkectl check-config --config admin-cluster.yaml

OS イメージを vSphere にインポートする

完成した構成ファイルを使用して gkectl prepare を実行し、ノードの OS イメージを vSphere にインポートします。

gkectl prepare --config admin-cluster.yaml --skip-validation-all

このコマンドの実行により、イメージが vSphere にインポートされ、管理クラスタのイメージを含む VM テンプレートとしてマークされます。

このコマンドが返されるまで数分かかることがあります。

管理クラスタを作成する

管理クラスタを作成します。

gkectl create admin --config admin-cluster.yaml

障害発生後に管理クラスタの作成を再開する

管理クラスタの作成が失敗またはキャンセルされた場合は、create コマンドを再度実行してください。

gkectl create admin --config admin-cluster.yaml

管理クラスタの kubeconfig ファイルを見つける

gkectl create admin コマンドで、現在のディレクトリに kubeconfig という名前の kubeconfig ファイルが作成されます。この kubeconfig ファイルは後で管理クラスタとやり取りする際に必要になります。

管理クラスタが実行されていることを確認する

管理クラスタが実行されていることを確認します。

kubectl get nodes --kubeconfig kubeconfig

出力には、管理クラスタノードが表示されます。次に例を示します。

gke-admin-master-hdn4z            Ready    control-plane,master ...
gke-admin-node-7f46cc8c47-g7w2c   Ready ...
gke-admin-node-7f46cc8c47-kwlrs   Ready ...

RBAC 認証を有効にする

ユーザー アカウントにクラスタの Kubernetes clusterrole/cluster-admin ロールを付与するには、次のコマンドを実行します。

gcloud container fleet memberships generate-gateway-rbac \
    --membership=minimal-installation-admin-cluster \
    --role=clusterrole/cluster-admin \
    --users=GOOGLE_ACCOUNT_EMAIL \
    --project=PROJECT_ID \
    --kubeconfig=kubeconfig \
    --context=minimal-installation-admin-cluster \
    --apply

このコマンドの出力は次のようになります(読みやすくするために省略しています)。

Validating input arguments.
Specified Cluster Role is: clusterrole/cluster-admin
Generated RBAC policy is:
--------------------------------------------
...
Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster
Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
Successfully applied the RBAC policy to cluster.

特に RBAC ポリシーを使用すると、Google Cloud コンソールで Google ID を使用してクラスタにログインすることで、クラスタの詳細を確認できます。

GKE On-Prem API の自動登録

プロジェクトで GKE On-Prem API が有効になっているため、クラスタは自動的に GKE On-Prem API に登録されます。GKE On-Prem API に管理クラスタを登録すると、Google Cloud コンソール、Google Cloud CLI または Terraform といった標準的なツールを使用して、管理クラスタが管理するユーザー クラスタを作成、アップグレード、更新、削除できます。クラスタを登録すると、gcloud コマンドを実行してクラスタに関する情報を取得することもできます。

5. ユーザー クラスタの作成

このセクションでは、コンソール、gkectl、Terraform、または gcloud CLI を使用してユーザー クラスタを作成する手順について説明します。

gkectl

この手順を開始する前に、前記のとおり、管理ワークステーションに SSH 接続されていることを確認してください。次のコマンドはすべて管理ワークステーションで実行されます。

ユーザー クラスタの IP ブロック ファイルを作成する

  1. user-ipblock.yaml という名前のファイルを作成します。

  2. 次の内容をコピーして user-ipblock.yaml に貼り付け、ファイルを保存します。

    blocks:
      - netmask: "NETMASK"
        gateway: "DEFAULT_GATEWAY_IP"
        ips:
        - ip: "USER_NODE_IP_1"
          hostname: "user-vm-1"
        - ip: "USER_NODE_IP_2"
          hostname: "user-vm-2"
        - ip: "USER_NODE_IP_3"
          hostname: "user-vm-3"
        - ip: "USER_NODE_IP_4"
          hostname: "user-vm-4"
    

ユーザー クラスタ構成ファイルを作成する

  1. user-ipblock.yaml と同じディレクトリに user-cluster.yaml という名前のファイルを作成します。

  2. 次の内容をコピーして user-cluster.yaml に貼り付け、ファイルを保存します。

apiVersion: v1
kind: UserCluster
name: "minimal-installation-user-cluster"
gkeOnPremVersion: "1.28.200-gke.111"
enableControlplaneV2: true
network:
  hostConfig:
    dnsServers:
    - "DNS_SERVER_IP"
    ntpServers:
    - "NTP_SERVER_IP"
  ipMode:
    type: "static"
    ipBlockFilePath: "user-ipblock.yaml"
  serviceCIDR: "10.96.0.0/20"
  podCIDR: "192.168.0.0/16"
  controlPlaneIPBlock:
    netmask: "NETMASK"
    gateway: "DEFAULT_GATEWAY_IP"
    ips:
    - ip: "USER_CONTROL_PLANE_NODE_IP"
      hostname: "cp-vm-1"
loadBalancer:
  vips:
    controlPlaneVIP: "USER_CONTROL_PLANE_VIP"
    ingressVIP: "USER_INGRESS_VIP"
  kind: "MetalLB"
  metalLB:
    addressPools:
    - name: "uc-address-pool"
      addresses:
      - "USER_INGRESS_VIP/32"
      - "SERVICE_VIP_1/32"
      - "SERVICE_VIP_2/32"
enableDataplaneV2: true
nodePools:
- name: "uc-node-pool"
  cpus: 4
  memoryMB: 8192
  replicas: 3
  enableLoadBalancer: true
antiAffinityGroups:
  enabled: false
gkeConnect:
  projectID: "PROJECT_ID"
  registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY"
stackdriver:
  projectID: "PROJECT_ID"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "LOG_MON_SA_KEY"
  disableVsphereResourceMetrics: false
autoRepair:
  enabled: true

構成を検証してクラスタを作成する

  1. ユーザー クラスタの構成ファイルが有効であり、クラスタの作成に使用できることを確認します。

    gkectl check-config --kubeconfig kubeconfig --config user-cluster.yaml
    
  2. ユーザー クラスタを作成します。

    gkectl create cluster --kubeconfig kubeconfig --config user-cluster.yaml
    

    クラスタの作成には約 30 分かかります。

ユーザー クラスタ kubeconfig ファイルを見つける

gkectl create cluster コマンドで、現在のディレクトリに USER_CLUSTER_NAME-kubeconfig という名前の kubeconfig ファイルが作成されます。この kubeconfig ファイルは後でユーザー クラスタとやり取りする際に必要になります。

ユーザー クラスタが実行されていることを確認する

ユーザー クラスタが実行されていることを確認します。

kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG

USER_CLUSTER_KUBECONFIG は、ユーザー クラスタ kubeconfig ファイルのパスに置き換えます。

出力には、ユーザー クラスタノードが表示されます。次に例を示します。

cp-vm-1     Ready    control-plane,master
user-vm-1   Ready
user-vm-2   Ready
user-vm-3   Ready

RBAC 認証を有効にする

ユーザー アカウントにクラスタの Kubernetes clusterrole/cluster-admin ロールを付与するには、次のコマンドを実行します。

gcloud container fleet memberships generate-gateway-rbac \
  --membership=minimal-installation-user-cluster \
  --role=clusterrole/cluster-admin \
  --users=GOOGLE_ACCOUNT_EMAIL \
  --project=PROJECT_ID \
  --kubeconfig=USER_CLUSTER_KUBECONFIG \
  --context=minimal-installation-user-cluster \
  --apply

このコマンドの出力は次のようになります(読みやすくするために省略しています)。

Validating input arguments.
Specified Cluster Role is: clusterrole/cluster-admin
Generated RBAC policy is:
--------------------------------------------
...
Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster
Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
Successfully applied the RBAC policy to cluster.

特に RBAC ポリシーを使用すると、Google Cloud コンソールで Google ID を使用してクラスタにログインすることで、クラスタの詳細を確認できます。

GKE On-Prem API の自動登録

プロジェクトで GKE On-Prem API が有効になっているため、クラスタは自動的に GKE On-Prem API に登録されます。これにより、コンソールまたは gcloud CLI を使用してクラスタの詳細を表示し、クラスタのライフサイクルを管理できます。たとえば、gcloud コマンドを実行して、ユーザー クラスタに関する情報を取得できます。

コンソール

  1. Google Cloud コンソールで、[GKE on VMware クラスタを作成する] ページに移動します。

    [GKE on VMware クラスタを作成する] に移動する

  2. クラスタを作成する Google Cloud プロジェクトを選択します。選択したプロジェクトは、フリート ホスト プロジェクトとしても使用されます。これは、管理クラスタが登録されているプロジェクトと同じでなければなりません。ユーザー クラスタを作成すると、選択したプロジェクトのフリートに自動的に登録されます。

次のセクションでは、ユーザー クラスタの構成について説明します。

前提条件

  1. [前提条件] ページの情報をよく理解します。

  2. ページの下部にある [次へ] をクリックします。

クラスタの基本

  1. [名前] で、ユーザー クラスタの名前を入力します(例: minimal-installation-user-cluster)。

  2. [管理クラスタ] で、[minimal-installation-admin-cluster] を選択します。

  3. [GCP API ロケーション] フィールドで、[us-central1] を選択します。

  4. [バージョン] で、1.28.200-gke.111 を選択します。

  5. [承認] セクションまたは [vCenter 構成] セクションを開く必要はありません。

  6. [次へ] をクリックします。

コントロール プレーン

  1. [コントロール プレーン ノードの IP] で、[ゲートウェイ] に「DEFAULT_GATEWAY_IP」と入力します。

  2. [サブネット マスク] に「NETMASK」と入力します。

  3. [IP アドレス] の [IP アドレス 1] に「USER_CONTROL_PLANE_NODE_IP」と入力します。[ホスト名 1] は空白のままにします。

  4. [次へ] をクリックします。

ネットワーキング

このセクションでは、クラスタのノード、Pod、Service の IP アドレスを指定します。ユーザー クラスタには、ノードごとに 1 つの IP アドレスと、クラスタのアップグレード、更新、自動修復に必要な一時的なノードに別の IP アドレスが必要です。詳細については、ユーザー クラスタに必要な IP アドレス数をご覧ください。

  1. [ワーカーノード IP] の [IP モード] で、[静的] が選択されていることを確認します。

  2. [ゲートウェイ] に「DEFAULT_GATEWAY_IP」と入力します。

  3. [サブネット マスク] に「NETMASK」と入力します。

  4. [IP アドレス] で、次のアドレスを入力します。

  • USER_NODE_IP_1
  • USER_NODE_IP_2
  • USER_NODE_IP_3
  • USER_NODE_IP_4

[ホスト名] フィールドは空欄のままにします。

  1. [Service CIDR] に「10.96.0.0/20」と入力します。[Pod CIDR] に「192.168.0.0/16」と入力します。

  2. [DNS サーバー 1] に「DNS_SERVER_IP」と入力します。

  3. [NTP サーバー 1] に「NTP_SERVER_IP」と入力します。

  4. [DNS 検索ドメイン] は空白のままにします。

  5. [次へ] をクリックします。

ロードバランサ

  1. [ロードバランサの種類] で [MetalLB にバンドル済み] を選択します。

  2. [アドレスプール] で、デフォルト名を使用します。

  3. [IP アドレス] の [IP アドレス範囲 1] に「USER_INGRESS_VIP/32」と入力します。

    [IP アドレス範囲を追加] をクリックします。[IP アドレス範囲 1] に「SERVICE_VIP_1/32」と入力します。

    [IP アドレス範囲を追加] をクリックします。[IP アドレス範囲 2] に「SERVICE_VIP_2/32」と入力します。

  4. [IP アドレスの割り当て] で、[自動] を選択します。

  5. [バグのある IP アドレスを避ける] はオフのままにします。

  6. [仮想 IP] の [コントロール プレーン VIP] に「USER_CONTROL_PLANE_VIP」と入力します。[Ingress VIP] はすでに入力されています。

  7. [続行] をクリックします。

機能

  1. デフォルトはすべてそのままにします。

  2. [次へ] をクリックします。

ノードプール

  1. デフォルトはすべてそのままにします。

  2. [Verify and Complete] をクリックしてユーザー クラスタを作成します。ユーザー クラスタの作成には 15 分以上かかります。コンソールで設定を確認し、データセンターにクラスタを作成するときに、ステータス メッセージが表示されます。

    設定の確認中にエラーが発生した場合は、コンソールにエラー メッセージが表示されます。これにより、構成の問題を修正してクラスタを再度作成することが簡単に行えます。

    発生する可能性のあるエラーと修正方法の詳細については、GKE On-Prem API に登録されているクラスタのトラブルシューティングをご覧ください。

Terraform

このセクションでは、Terraform を使用してユーザー クラスタとノードプールを作成する方法を説明します。詳細と他の例については、以下をご覧ください。

  1. ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイル名の拡張子は .tf にする必要があります。このガイドでは、このファイルは main.tf と呼ばれます。

    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    
  2. ユーザー クラスタの Terraform リソースを確認します。

    次の Terraform リソースの例には、前のセクションで計画テーブルに入力した値が入力されています。

    resource "google_gkeonprem_vmware_cluster" "cluster-basic" {
      name = "minimal-installation-user-cluster"
      project = "PROJECT_ID"
      location = "us-central1"
      admin_cluster_membership = "projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster"
      description = "User cluster config with MetalLB, static IPs, and Controlplane V2"
      enable_control_plane_v2 = "true"
      on_prem_version = "1.28.200-gke.111"
      control_plane_node {
        cpus = 4
        memory = 8192
        replicas = 1
      }
      network_config {
        service_address_cidr_blocks = ["10.96.0.0/20"]
        pod_address_cidr_blocks = ["192.168.0.0/16"]
        host_config {
          dns_servers = ["DNS_SERVER_IP"]
          ntp_servers = ["NTP_SERVER_IP"]
        }
        static_ip_config {
          ip_blocks {
            netmask = "NETMASK"
            gateway = "DEFAULT_GATEWAY_IP"
            ips {
              ip = "USER_NODE_IP_1"
              hostname = "user-vm-1"
            }
            ips {
              ip = "USER_NODE_IP_2"
              hostname = "user-vm-2"
            }
            ips {
              ip = "USER_NODE_IP_3"
              hostname = "user-vm-3"
            }
            ips {
              ip = "USER_NODE_IP_4"
              hostname = "user-vm-4"
            }
          }
        }
        control_plane_v2_config {
          control_plane_ip_block {
            netmask = "NETMASK"
            gateway = "DEFAULT_GATEWAY_IP"
            ips {
              ip = "USER_CONTROL_PLANE_NODE_IP"
              hostname = "cp-vm-1"
            }
          }
        }
      }
      load_balancer {
        vip_config {
          control_plane_vip = "USER_CONTROL_PLANE_VIP"
          ingress_vip = "USER_INGRESS_VIP"
        }
        metal_lb_config {
          address_pools {
            pool = "uc-address-pool"
            manual_assign = "true"
            addresses = ["USER_INGRESS_VIP/32", "SERVICE_VIP_1/32", "SERVICE_VIP_2/32"]
          }
        }
      }
      authorization {
        admin_users {
        username = "GOOGLE_ACCOUNT_EMAIL"
      }
    }
      provider = google-beta
    }
    
    resource "google_gkeonprem_vmware_node_pool" "my-node-pool-1" {
      name = "uc-node-pool"
      project = "PROJECT_ID"
      vmware_cluster = "minimal-installation-user-cluster"
      location = "us-central1"
      config {
        replicas = 3
        image_type = "ubuntu_containerd"
        enable_load_balancer = "true"
      }
      depends_on = [
        google_gkeonprem_vmware_cluster.cluster-basic
      ]
      provider = google-beta
    }
    
  3. Terraform リソースを main.tf にコピーしてファイルを保存します。

  4. Terraform プランを初期化して作成します。

    terraform init
    

    Terraform によって、Google Cloud プロバイダなどの必要なライブラリがインストールされます。

  5. 構成を確認し、必要に応じて変更を加えます。

    terraform plan
    
  6. Terraform プランを適用して、ユーザー クラスタを作成します。

    terraform apply
    

    プロンプトが表示されたら、「yes」と入力します。

    基本的なユーザー クラスタとノードプールを作成するには、約 15 分(ネットワークによってはそれ以上)かかります。

gcloud

クラスタを作成します。

gcloud container vmware clusters create minimal-installation-user-cluster \
  --project=PROJECT_ID \
  --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster \
  --location=us-central1 \
  --version=1.28.200-gke.111 \
  --admin-users=GOOGLE_ACCOUNT_EMAIL \
  --service-address-cidr-blocks=10.96.0.0/20 \
  --pod-address-cidr-blocks=192.168.0.0/16 \
  --metal-lb-config-address-pools='pool=uc-address-pool,avoid-buggy-ips=False,manual-assign=False,addresses=USER_INGRESS_VIP/32;SERVICE_VIP_1/32;SERVICE_VIP_2/32' \
  --control-plane-vip=USER_CONTROL_PLANE_VIP \
  --ingress-vip=USER_INGRESS_VIP \
  --static-ip-config-ip-blocks='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_NODE_IP_1;USER_NODE_IP_2;USER_NODE_IP_3;USER_NODE_IP_4' \
  --dns-servers=DNS_SERVER_IP \
  --ntp-servers=NTP_SERVER_IP \
  --enable-control-plane-v2 \
  --enable-dataplane-v2 \
  --control-plane-ip-block='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_CONTROL_PLANE_NODE_IP'

このコマンドからの出力は、次のようになります。

Waiting for operation [projects/example-project-12345/locations/us-central1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.

この出力例では、operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 という文字列は長時間実行オペレーションの OPERATION_ID です。オペレーションのステータスは、次のコマンドで確認できます。

gcloud container vmware operations describe OPERATION_ID \
  --project=PROJECT_ID \
  --location=us-central1

詳細については、gcloud container vmware operations をご覧ください。

ユーザー クラスタの作成には 15 分以上かかります。クラスタは、コンソールの Google Kubernetes Engine クラスタの概要ページで確認できます。

ノードプールを作成します。

gcloud container vmware node-pools create  uc-node-pool \
  --cluster=minimal-installation-user-cluster \
  --project=PROJECT_ID \
  --location=us-central1 \
  --image-type=ubuntu_containerd  \
  --boot-disk-size=40 \
  --cpus=4 \
  --memory=8192 \
  --replicas=3 \
  --enable-load-balancer

次のステップ

これで、GKE on VMware の最小限のインストールが完了しました。オプションのフォローアップとして、アプリケーションをデプロイすることで、インストールの動作を確認できます。