Compute Engine VM 上に Google Distributed Cloud のデモ用の管理クラスタとユーザー クラスタを作成する

Compute Engine 仮想マシン(VM)にデモクラスタを作成して、ベアメタル版 Google Distributed Cloud(ソフトウェアのみ)(旧称 Google Distributed Cloud Virtual、旧称 Anthos clusters on bare metal)について学習します。このガイドでは、管理クラスタとユーザー クラスタの作成に 40 分から 1 時間ほどかかります。このガイドで作成するデモクラスタは、Google Distributed Cloud クラスタのプロビジョニングと運用のプロセスを評価するうえで役立ちますが、本番環境での使用を目的としたものではありません。

このドキュメントでは、次のスクリプトを実行するプロセスについて説明します。

  • デモクラスタのインストール用に 5 台の Compute Engine VM をプロビジョニングする
  • クラスタ接続を提供する VPC ネットワークを設定する

スクリプトによって必要なリソースがプロビジョニングされたら、bmctl、 Google Cloud コンソール、Google Cloud CLI、または Terraform のいずれかを使用して、管理クラスタと、ワークロードをホストできるユーザー クラスタを作成します。

手順の概要

このガイドでは、次の主なステップについて説明します。

  1. スクリプトに必要な環境変数があり、コマンドの実行に必要な基本情報を収集できるように、ローカル環境を準備します。

  2. ダウンロードしたスクリプトを使用して、VM とネットワークを作成します。

  3. サポートされているいずれかのクライアントを使用して管理クラスタを作成します。

  4. サポートされているいずれかのクライアントを使用してユーザー クラスタを作成します。

  5. クリーンアップして、このガイドで作成したクラスタと VM を削除します。

1. ローカルの環境を準備する

このガイドでは、ネットワークを設定するためのスクリプトを使用するため、多くの情報を収集したり、計画を立てる必要はありません。次の手順では、ローカル環境を設定し、ガイドの以降のセクションで必要となる基本情報を収集します。

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. このページのスクリプトとコマンドで使用される環境変数を設定する際に必要となるため、プロジェクト ID をメモしておきます。既存のプロジェクトを選択した場合は、ご自身がプロジェクト オーナーまたはプロジェクト編集者であることを確認します。
  7. このスクリプトは、Cloud Shell で実行できます。また、Linux あるいは macOS が実行されているローカルマシンで実行できます。Cloud Shell を使用しない場合:
    1. 最新の Google Cloud CLI( Google Cloudとやり取りするためのコマンドライン ツール)がインストールされていることを確認します。必要に応じて gcloud CLI コンポーネントを更新します。
      gcloud components update

      gcloud CLI のインストール方法によっては、次のメッセージが表示されることがあります。

      You cannot perform this action because the Google Cloud CLI component manager is disabled for this installation. You can run the following command to achieve the same result for this installation:

      手順に沿ってコマンドをコピーして貼り付け、コンポーネントを更新します。

    2. kubectl がインストールされていることを確認します。kubectl をインストールする必要がある場合は、次のコマンドを実行します。
      gcloud components install kubectl
  8. プロジェクトに「default」という名前の VPC ネットワークがあることを確認します。

    「デフォルト」VPC ネットワークがない場合、次のセクションのスクリプトは必要なリソースのプロビジョニングに失敗します。削除または制限することを選択しない限り、新しい各プロジェクトは、スクリプトで動作する自動モードの VPC ネットワーク「default」で開始されます。詳細については、VPC ネットワークをご覧ください。

  9. 次の組織のポリシーの制約が適用されていないことを確認します。
    • constraints/iam.disableServiceAccountKeyCreation
    • constraints/compute.vmCanIpForward
    • constraints/compute.requireShieldedVm
    • constraints/compute.vmExternalIpAccess

    これらの制約が適用されると、次のセクションのスクリプトは必要なリソースをプロビジョニングできません。新しいプロジェクトの場合、これらの制約はデフォルトで [非アクティブ](適用されない)に設定されます。詳細については、組織のポリシーの制約をご覧ください。

  10. 環境変数を設定します。
    export PROJECT_ID=PROJECT_ID
    export ADMIN_CLUSTER_NAME=ADMIN_CLUSTER_NAME
    export ON_PREM_API_REGION=ON_PREM_API_REGION
    export ZONE=ZONE
    • ADMIN_CLUSTER_NAME: 管理クラスタに付ける名前。
    • ON_PREM_API_REGION: GKE On-Prem API が実行され、メタデータが保存される Google Cloud リージョン。us-central1 または別のサポートされているリージョンを指定します。
    • ZONE: Compute Engine VM が作成される Google Cloud ゾーン。us-central1-a または他の Compute Engine ゾーンを使用できます。
  11. デフォルトのプロジェクトとゾーンを設定するには、次のコマンドを実行します。
    gcloud config set project $PROJECT_ID
    gcloud config set compute/zone $ZONE

    PERMISSION_DENIED エラーが発生した場合は、入力したプロジェクト ID を再確認してください。プロジェクト ID が正しい場合は、gcloud auth login を実行して、プロジェクトにアクセスできるアカウントで gcloud CLI にログインします。

  12. インストールできるサポート対象バージョンのリストを取得します。
    gcloud container bare-metal admin-clusters query-version-config \
        --location=ON_PREM_API_REGION
  13. 前のコマンドの出力からバージョンを選択し、環境変数に設定します。
    export BMCTL_VERSION=BMCTL_VERSION

    Google Distributed Cloud の最新の機能と修正を取得するには、互換性が最も高いバージョンを選択することをおすすめします。

  14. 2. VM とネットワークを作成する

    このセクションでは、install_admin_cluster.sh スクリプトをダウンロードして実行します。

    1. anthos-samples リポジトリのクローンを作成し、スクリプトを配置するディレクトリに移動します。

      git clone https://github.com/GoogleCloudPlatform/anthos-samples
      cd anthos-samples/anthos-bm-gcp-bash
      
    2. スクリプトを実行します。

      bash install_admin_cluster.sh
      
    3. プロンプトで「2」と入力して Compute Engine インフラストラクチャのみを設定します。プロンプトが表示されたら、選択内容を確認します。

      このスクリプトにより、Compute Engine VM と VXLAN ネットワークが作成され、管理ワークステーションとクラスタノードが設定されます。この設定は 5 分ほどで完了します。

      スクリプトについて詳しくは、次のリンクをクリックしてください。

      スクリプトについて

      スクリプトは、anthos-samples GitHub リポジトリの anthos-bm-gcp-bash フォルダにあります。このスクリプトは、次の手動手順を自動化します。

      1. 次の Google Cloud API を有効にします。
        anthos.googleapis.com
        anthosaudit.googleapis.com
        anthosgke.googleapis.com
        cloudresourcemanager.googleapis.com
        connectgateway.googleapis.com
        container.googleapis.com
        compute.googleapis.com
        gkeconnect.googleapis.com
        gkehub.googleapis.com
        gkeonprem.googleapis.com
        serviceusage.googleapis.com
        stackdriver.googleapis.com
        monitoring.googleapis.com
        logging.googleapis.com
        kubernetesmetadata.googleapis.com
        iam.googleapis.com
        opsconfigmonitoring.googleapis.com
      2. このスクリプトは、さまざまな API とサービスに対して複数のサービス アカウントを作成する代わりに、baremetal-gcr という単一のサービス アカウントを作成し、それに次の IAM ロールを付与します。
        • roles/gkehub.admin
        • roles/gkehub.connect
        • roles/logging.logWriter
        • roles/monitoring.dashboardEditor
        • roles/monitoring.metricWriter
        • roles/monitoring.viewer
        • roles/opsconfigmonitoring.resourceMetadata.writer
        • roles/serviceusage.serviceUsageViewer
        • roles/stackdriver.resourceMetadata.writer
      3. 次の VM を作成します。
        • 管理ワークステーション用の 1 つの VM。
        • 1 台の VM(管理クラスタのコントロール プレーン ノード用)。
        • 2 台の VM(ユーザー クラスタのワーカーノード用)。
        • 1 台の VM(ユーザー クラスタのコントロール プレーン ノード用)。
      4. すべての VM で SSH が有効になっていることと、管理ワークステーションに、クラスタノード用に作成された他のすべての VM への SSH アクセス権があることを確認します。
      5. VM 間のレイヤ 2 接続用に Virtual Extensible LAN(VXLAN)オーバーレイ ネットワークを作成します。VXLAN は永続的ではないため、VM インスタンスを再起動するとネットワークは破棄されます。ネットワークは、10.200.0.0/24 サブネット上に設定されます。レイヤ 2 接続は、バンドルされたロードバランサの要件です。
      6. 管理ワークステーションに次のツールをインストールします。
        • bmctl
        • kubectl
        • Docker

        また、このスクリプトは、baremetal-gcr サービス アカウントのサービス アカウント キーも管理ワークステーションにダウンロードします。

      7. 次のタスクを行い、管理ワークステーションからの root@10.200.0.x が機能するようにします。
        1. 管理ワークステーションで新しい SSH 認証鍵を生成します。
        2. その公開鍵を、デプロイメント内の他のすべての VM に追加します。

      このスクリプトは、実行された各コマンドとステータスを出力します。完了すると、スクリプトから次が出力されます。

      ✅ Successfully set up SSH access from admin workstation to cluster node VMs.
      
      ✅ GCE Infrastructure setup complete. Please check the logs for any errors!!!
      
      ✅ If you do not see any errors in the output log, then you now have the following setup:
      
      |---------------------------------------------------------------------------------------------------------|
      | VM Name               | L2 Network IP (VxLAN) | INFO                                                    |
      |---------------------------------------------------------------------------------------------------------|
      | abm-admin-cluster-cp  | 10.200.0.3            | 🌟 Ready for use as control plane for the admin cluster |
      | abm-user-cluster-cp   | 10.200.0.4            | 🌟 Ready for use as control plane for the user cluster  |
      | abm-user-cluster-w1   | 10.200.0.5            | 🌟 Ready for use as worker for the user cluster         |
      | abm-user-cluster-w2   | 10.200.0.6            | 🌟 Ready for use as worker for the user cluster         |
      |---------------------------------------------------------------------------------------------------------|
      

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

    bmctl

    bmctl を使用して管理クラスタを作成するには、ターミナル ウィンドウで管理ワークステーション VM にアクセスし、そこからコマンドを実行します。

    1. SSH を使用して、root として管理ワークステーション VM(abm-ws)にアクセスします。

      gcloud compute ssh root@abm-ws --zone ZONE
      
    2. ユーザー認証情報をアプリケーションのデフォルト認証情報(ADC)として設定します。

      gcloud auth application-default login
      

      画面の指示に沿って、ADC 用の Google アカウントを選択します。

    3. クラスタ構成ファイルを生成します。

      bmctl create config -c ADMIN_CLUSTER_NAME --project-id=PROJECT_ID
      
    4. 管理クラスタの構成ファイルを確認します。

      次のクラスタ構成ファイルには、前述の値が入力されています。入力した値に加え、生成された構成ファイルとは次の違いがあります。

      • 読みやすくするために、このサンプルではコメントを削除しています。
      • このスクリプトは、必要な権限をすべて備えた単一のサービス アカウントを作成し、構成ファイルで参照されている bm-gcr.json キーをダウンロードします。
      gcrKeyPath: /root/bm-gcr.json
      sshPrivateKeyPath: /root/.ssh/id_rsa
      gkeConnectAgentServiceAccountKeyPath: /root/bm-gcr.json
      gkeConnectRegisterServiceAccountKeyPath: /root/bm-gcr.json
      cloudOperationsServiceAccountKeyPath: /root/bm-gcr.json
      ---
      apiVersion: v1
      kind: Namespace
      metadata:
        name: cluster-ADMIN_CLUSTER_NAME
      ---
      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: ADMIN_CLUSTER_NAME
        namespace: cluster-ADMIN_CLUSTER_NAME
      spec:
        type: admin
        profile: default
        anthosBareMetalVersion: BMCTL_VERSION
        gkeConnect:
          projectID: PROJECT_ID
        controlPlane:
          nodePoolSpec:
            nodes:
            - address: 10.200.0.3
        clusterNetwork:
          pods:
            cidrBlocks:
            - 192.168.0.0/16
          services:
            cidrBlocks:
            - 10.96.0.0/20
        loadBalancer:
          mode: bundled
          ports:
            controlPlaneLBPort: 443
          vips:
            controlPlaneVIP: 10.200.0.48
        clusterOperations:
          projectID: PROJECT_ID
          location: ON_PREM_API_REGION
        storage:
          lvpNodeMounts:
            path: /mnt/localpv-disk
            storageClassName: local-disks
          lvpShare:
            path: /mnt/localpv-share
            storageClassName: local-shared
            numPVUnderSharedPath: 5
        nodeConfig:
          podDensity:
            maxPodsPerNode: 110
      
    5. 管理ワークステーションで生成された構成ファイルの内容を、上記サンプルの内容に置き換えます。

      生成された bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME.yaml ファイルを開き、その内容を前の手順で確認したサンプルの内容に置き換えます。

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

      bmctl create cluster -c ADMIN_CLUSTER_NAME

      bmctl コマンドは、プリフライト チェックを実行し、クラスタを作成するときに出力を画面に表示します。詳細情報は、管理ワークステーションの baremetal/bmctl-workspace/abm-user-cluster-metallb/log フォルダのログに書き込まれます。

      クラスタの作成が完了するまでに数分かかる場合があります。

    7. コンソールで [GKE クラスタ] ページに移動します。

      GKE クラスタに移動

      ユーザー クラスタを作成したプロジェクトが選択されていることを確認します。管理クラスタがリストに表示されます。

    8. 管理クラスタにログインします。

      1. クラスタ名のリンクをクリックして、サイドパネルで [ログイン] をクリックします。

      2. [Google ID を使用してログインします] を選択します。

      3. [ログイン] をクリックします。

    管理クラスタを確認する

    管理ワークステーションにある管理クラスタの kubeconfig ファイルは、root アカウントの bmctl-workspace ディレクトリにあります。デプロイを確認するには、次の操作を行います。

    1. SSH を使用して、root として管理ワークステーションにアクセスします。

      gcloud compute ssh root@abm-ws --zone ZONE
      
    2. 管理クラスタが作成され、動作していることを確認します。

      kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
      

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

      none{:.devsite-disable-click-to-copy} NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m 1.31.300-gke.81

    3. 確認が完了したら、「exit」と入力して管理ワークステーションから切断します。

    コンソール

    コンソールで管理クラスタを作成するには、管理ワークステーション VM から bmctl register bootstrap を実行してブートストラップ クラスタを作成する必要があります。bmctl register bootstrap コマンドが実行されている間に、コンソールで管理クラスタを作成します。

    ブートストラップ環境の基本情報を入力する

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

      GKE クラスタに移動

    2. [作成] をクリックします。

    3. [クラスタを作成] ダイアログで [オンプレミス] を選択し、ベアメタルの [構成] をクリックします。

    4. プロジェクト リストから PROJECT_ID を選択してください。

    5. 左側のナビゲーション バーで、[ブートストラップ環境のインストール] をクリックします。

    6. 管理クラスタ名として「ADMIN_CLUSTER_NAME」と入力します。

    7. 管理クラスタのバージョンとして BMCTL_VERSION を選択します。スクリプトにより、このバージョンの bmctl コマンドライン ツールが管理ワークステーションにダウンロードされます。インストールする Google Distributed Cloud のバージョンは、bmctl バージョンと一致する必要があります。

    8. [Google Cloud API のロケーション] フィールドで、リストから ON_PREM_API_REGION を選択します。この設定では、GKE On-Prem API が実行されるリージョンと、以下のデータが保存されるリージョンを指定します。

      • クラスタのライフサイクルを管理する際に GKE On-Prem API が必要とするクラスタ メタデータ
      • システム コンポーネントの Cloud Logging データと Cloud Monitoring データ
      • Cloud Audit Logs によって作成された管理監査ログ

      クラスタ名、プロジェクト、ロケーションにより、 Google Cloudでクラスタが一意に識別されます。

    コンソールに表示される手順ではなく、次のセクションの手順を使用して、ブートストラップ クラスタを作成します。管理クラスタを作成するときに戻るため、コンソール ページを表示したままにします。

    ブートストラップ クラスタを作成する

    コンソールなどの GKE On-Prem API クライアントを使用して管理クラスタを作成する場合は、管理ワークステーションにブートストラップ クラスタを作成する必要があります。このブートストラップ クラスタは、管理クラスタの作成に必要な Kubernetes コントローラをホストします。

    1. コマンドラインから SSH を使用して、root として管理ワークステーション VM にアクセスします。

      gcloud compute ssh root@abm-ws --zone ZONE
      

      VM の更新に関するメッセージを無視して、このチュートリアルを完了して問題ありません。VM をテスト環境として維持する場合は、Ubuntu のドキュメントに記載されているように、OS を更新するか次のリリースにアップグレードすることをおすすめします。

    2. ユーザー認証情報をアプリケーションのデフォルト認証情報(ADC)として設定します。

      gcloud auth application-default login
      

      画面の指示に沿って、ADC 用の Google アカウントを選択します。

    3. baremetal/ ディレクトリに移動し、次のコマンドを実行してブートストラップ クラスタを作成します。

      ブートストラップ クラスタ名は、管理クラスタ名の前に bootstrap- を付けて生成されます。

      bmctl register bootstrap \
        --ssh-key=/root/.ssh/id_rsa \
        --name=bootstrap-ADMIN_CLUSTER_NAME \
        --project-id=PROJECT_ID
      

      bmctl がブートストラップ クラスタの作成に成功すると、次のような出力が表示されます。

      [2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
      [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
      [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
      

    管理クラスタを作成する

    1. [管理ワークステーションからの環境のブートストラップ] セクションの [ブートストラップ環境のインストール] ページで、[接続を確認] をクリックします。

      成功すると、コンソールに [ 接続が確立されました] と表示されます。

      続行する前に、ブートストラップ クラスタへの接続が確立されている必要があります。接続が確立されていない場合は、bmctl register bootstrap コマンドに指定した引数を確認します。

      • --name の値が、[ブートストラップ環境の基本] セクションに表示された生成されたブートストラップ名と一致していることを確認します。

      • --project-id の値がコンソールで選択したプロジェクトの ID と一致していることを確認します。

      ブートストラップ クラスタ名またはプロジェクト ID を変更する必要がある場合は、「Ctrl-C」と入力して bmctl register bootstrap を終了し、コマンドを再実行します。

    ネットワーキング

    1. 左側のナビゲーション バーで [ネットワーキング] をクリックします。

    2. [コントロール プレーン] セクションで、[コントロール プレーン ノード IP 1] フィールドに次のように入力します。

      10.200.0.3
      

      これは、スクリプトによって作成された VXLAN にある abm-admin-cluster-cp VM の IP アドレスです。

    3. [ロードバランサ] セクションで、[バンドル] が選択されていることを確認します。

    4. [仮想 IP(VIP)] セクションで、[コントロール プレーン VIP] フィールドに次のように入力します。

      10.200.0.48
      

      次のステップは、ブートストラップ クラスタの可用性に依存します。ブートストラップ クラスタが登録済みメンバーとして表示されるまで、ターミナル ウィンドウで bmctl register bootstrap コマンドを数分間実行する必要があります。数分経っても使用できない場合は、使用したブートストラップ クラスタ名とプロジェクト ID を確認します。ブートストラップ クラスタ名またはプロジェクト ID を変更する必要がある場合は、別のターミナル ウィンドウで「Ctrl-C」と入力して bmctl register bootstrap を終了し、コマンドを再実行します。

    5. [確認して作成] をクリックします。

      コンソールには、設定を確認しクラスタを作成するときにステータス メッセージが表示されます。

      管理クラスタが作成されると、管理ワークステーションのブートストラップ クラスタは削除されます。別のターミナル ウィンドウで bmctl register bootstrap コマンドを実行すると、出力は次のようになります。

      ...
      [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK
      [2024-04-15 23:16:38+0000] Please run
      [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes
      [2024-04-15 23:16:38+0000] to get cluster nodes status.
      [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK
      [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK
      [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK
      [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster
      [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK
      [2024-04-15 23:24:30+0000] Flushing logs... OK
      [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster.
      [2024-04-15 23:24:30+0000] Deleting membership... OK
      [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
      

    管理クラスタを確認する

    管理ワークステーションにある管理クラスタの kubeconfig ファイルは、root アカウントの bmctl-workspace ディレクトリにあります。デプロイを確認するには、次の操作を行います。

    1. SSH を使用して、root として管理ワークステーションにアクセスします。

      gcloud compute ssh root@abm-ws --zone ZONE
      
    2. 管理クラスタが作成され、動作していることを確認します。

      kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
      

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

      none{:.devsite-disable-click-to-copy} NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m 1.31.300-gke.81

    3. 確認が完了したら、「exit」と入力して管理ワークステーションから切断します。

    gcloud CLI

    以下の手順では、2 つのターミナル ウィンドウが必要です。1 つのターミナル ウィンドウで bmctl register bootstrap を実行して、ブートストラップ クラスタを作成します。bmctl register bootstrap コマンドが実行されている間に、別のターミナル ウィンドウで gcloud container bare-metal admin-clusters create を実行して、管理クラスタを作成します。

    ブートストラップ クラスタを作成する

    gcloud CLI などの GKE On-Prem API クライアントを使用して管理クラスタを作成する場合は、管理ワークステーションにブートストラップ クラスタを作成する必要があります。このブートストラップ クラスタは、管理クラスタの作成に必要な Kubernetes コントローラをホストします。

    1. コマンドラインから SSH を使用して、root として管理ワークステーション VM にアクセスします。

      gcloud compute ssh root@abm-ws --zone ZONE
      

      VM の更新に関するメッセージを無視して、このチュートリアルを完了して問題ありません。VM をテスト環境として維持する場合は、Ubuntu のドキュメントに記載されているように、OS を更新するか次のリリースにアップグレードすることをおすすめします。

    2. ユーザー認証情報をアプリケーションのデフォルト認証情報(ADC)として設定します。

      gcloud auth application-default login
      

      画面の指示に沿って、ADC 用の Google アカウントを選択します。

    3. baremetal/ ディレクトリに移動し、次のコマンドを実行してブートストラップ クラスタを作成します。

      ブートストラップ クラスタ名は、管理クラスタ名の前に bootstrap- を付けて生成されます。

      bmctl register bootstrap \
        --ssh-key=/root/.ssh/id_rsa \
        --name=bootstrap-ADMIN_CLUSTER_NAME \
        --project-id=PROJECT_ID
      

      bmctl がブートストラップ クラスタの作成に成功すると、次のような出力が表示されます。

      [2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
      [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
      [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
      

    管理クラスタを作成する

    1. 新しいターミナル ウィンドウで、ブートストラップ クラスタがフリートのメンバーとして登録されていることを確認します。

      gcloud container fleet memberships list \
          --project=PROJECT_ID
      

      次のステップの gcloud container bare-metal admin-clusters create コマンドは、ブートストラップ クラスタの可用性によって異なります。ブートストラップ クラスタが登録メンバーとして表示されるまで、もう一方のターミナル ウィンドウで bmctl register bootstrap コマンドを数分間実行する必要があります。数分経ってもリストに表示されない場合は、使用したブートストラップ クラスタ名とプロジェクト ID を確認してください。ブートストラップ クラスタ名またはプロジェクト ID を変更する必要がある場合は、別のターミナル ウィンドウで「Ctrl-C」と入力して bmctl register bootstrap を終了し、コマンドを再実行します。

    2. バンドルされたロードバランサを使用して管理クラスタを作成します。

      指定する値が、スクリプト用に指定した環境変数と一致していることを確認します。

      gcloud container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \
          --project=PROJECT_ID \
          --location=ON_PREM_API_REGION \
          --version=BMCTL_VERSION \
          --max-pods-per-node=110 \
          --control-plane-vip=10.200.0.48 \
          --control-plane-load-balancer-port=443 \
          --control-plane-node-configs node-ip=10.200.0.3 \
          --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
          --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
          --lvp-share-path=/mnt/localpv-share \
          --lvp-share-storage-class=local-shared \
          --lvp-node-mounts-config-path=/mnt/localpv-disk \
          --lvp-node-mounts-config-storage-class=local-disks
      

      コマンドの内容:

      • --control-plane-vip10.200.0.48 に設定されています。これは、クラスタの Kubernetes API サーバー用のロードバランサの仮想 IP(VIP)です。

      • --control-plane-node-configs: node-ip10.200.0.3 に設定されています。これは、スクリプトによって作成された VXLAN にある abm-admin-cluster-cp VM の IP アドレスです。

      フラグとそれらの説明の全一覧については、gcloud CLI リファレンスをご覧ください。

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

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

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

      gcloud container bare-metal operations describe OPERATION_ID \
          --project=PROJECT_ID \
          --location=ON_PREM_API_REGION
      

      gcloud container bare-metal admin-clusters create が正常に完了すると、出力は次のようになります。

      none{:.devsite-disable-click-to-copy} Created Anthos on bare metal Admin Cluster [https://gkeonprem.googleapis.com/v1/projects/anonuser-anonproject/locations/us-central1/bareMetalAdminClusters/gce-admin-gcloud-001]. NAME LOCATION VERSION MEMBERSHIP STATE abm-cluster-1 us-central1 1.31.300-gke.81 abm-cluster-1 RUNNING

      管理クラスタが作成されると、管理ワークステーションのブートストラップ クラスタは削除されます。別のターミナル ウィンドウで bmctl register bootstrap コマンドを実行すると、出力は次のようになります。

      ...
      [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK
      [2024-04-15 23:16:38+0000] Please run
      [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes
      [2024-04-15 23:16:38+0000] to get cluster nodes status.
      [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK
      [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK
      [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK
      [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster
      [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK
      [2024-04-15 23:24:30+0000] Flushing logs... OK
      [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster.
      [2024-04-15 23:24:30+0000] Deleting membership... OK
      [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
      

    管理クラスタを確認する

    管理ワークステーションにある管理クラスタの kubeconfig ファイルは、root アカウントの bmctl-workspace ディレクトリにあります。デプロイを確認するには、次の操作を行います。

    1. SSH を使用して、root として管理ワークステーションにアクセスします。

      gcloud compute ssh root@abm-ws --zone ZONE
      
    2. 管理クラスタが作成され、動作していることを確認します。

      kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
      

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

      none{:.devsite-disable-click-to-copy} NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m 1.31.300-gke.81

    3. 確認が完了したら、「exit」と入力して管理ワークステーションから切断します。

    Terraform

    以下の手順では、2 つのターミナル ウィンドウが必要です。1 つのターミナル ウィンドウで bmctl register bootstrap を実行して、ブートストラップ クラスタを作成します。bmctl register bootstrap コマンドが実行されている間に、別のターミナル ウィンドウで Terraform コマンドを実行して、管理クラスタを作成します。

    管理クラスタで機能するようにユーザー クラスタのサンプル ファイルを変更する

    anthos-samples リポジトリには、Google Distributed Cloud 管理クラスタの作成専用のサンプルは含まれていません。次の手順では、既存のユーザー クラスタの Terraform サンプルを変更して、管理クラスタの作成方法を示します。

    1. anthos-samples のクローンを作成したディレクトリで、次のコマンドを実行して、MetalLB ユーザー クラスタのサンプル ファイルを管理クラスタの新しいフォルダにコピーします。

      cp -r anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb \
          anthos-samples/anthos-onprem-terraform/abm_admin_cluster_basic
      
    2. abm_admin_cluster_basic ディレクトリに移動します。

      cd anthos-samples/anthos-onprem-terraform/abm_admin_cluster_basic
      
    3. Terraform ファイルを編集します。

      • variables.tf:

        • コントロール プレーン ノードの IP アドレスの変数を定義します(このデモでは 1 つだけ使用します)。この変数は variable "control_plane_ips" { ... } エントリに似ています。

        • コントロール プレーンの VIP アドレスの変数を定義します。この変数は variable "control_plane_vip" { ... } エントリに似ています。

      • terraform.tfvars:

        • 次の管理クラスタの設定に変数値を割り当てます。

          • コントロール プレーン ノードの IP アドレス: 10.200.0.3

          • コントロール プレーン VIP アドレス: 10.200.0.48

      • main.tf:

        • google_gkeonprem_bare_metal_cluster リソースを google_gkeonprem_bare_metal_admin_cluster リソースに置き換えます。

        • google_gkeonprem_bare_metal_node_pool リソースと関連する lifecycle セクションを削除します。

        • 新しく定義した変数を使用するようにリソースを更新します。

      以下に、管理クラスタを作成するように編集された main.tf ファイルの例を示します。

      /**
      * Copyright 2023 Google LLC
      *
      * Licensed under the Apache License, Version 2.0 (the "License");
      * you may not use this file except in compliance with the License.
      * You may obtain a copy of the License at
      *
      *      http://www.apache.org/licenses/LICENSE-2.0
      *
      * Unless required by applicable law or agreed to in writing, software
      * distributed under the License is distributed on an "AS IS" BASIS,
      * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      * See the License for the specific language governing permissions and
      * limitations under the License.
      */
      
      #[START anthos_onprem_terraform_bare_metal_admin_cluster_basic_main]
      
      module "enable_google_apis_primary" {
        source     = "terraform-google-modules/project-factory/google//modules/project_services"
        version    = "~> 14.0"
        project_id = var.project_id
        activate_apis = [
          "anthos.googleapis.com",
          "anthosaudit.googleapis.com",
          "anthosgke.googleapis.com",
          "cloudresourcemanager.googleapis.com",
          "compute.googleapis.com",
          "connectgateway.googleapis.com",
          "container.googleapis.com",
          "file.googleapis.com",
          "gkehub.googleapis.com",
          "iam.googleapis.com",
          "kubernetesmetadata.googleapis.com",
          "logging.googleapis.com",
          "monitoring.googleapis.com",
          "opsconfigmonitoring.googleapis.com",
          "serviceusage.googleapis.com",
          "stackdriver.googleapis.com"
        ]
        disable_services_on_destroy = false
      }
      
      # Enable GKE OnPrem API
      resource "google_project_service" "default" {
        project            = var.project_id
        service            = "gkeonprem.googleapis.com"
        disable_on_destroy = false
      }
      
      # Create a baremetal admin cluster and enroll it with the gkeonprem API
      resource "google_gkeonprem_bare_metal_admin_cluster" "admin-cluster-basic" {
        name                     = var.admin_cluster_name
        description              = "Bare metal admin cluster"
        provider                 = google
        depends_on               = [google_project_service.default]
        location                 = var.region
        bare_metal_version       = var.bare_metal_version
        network_config {
          island_mode_cidr {
            service_address_cidr_blocks = ["0.96.0.0/20"]
            pod_address_cidr_blocks     = ["192.168.0.0/16"]
          }
        }
        node_config {
          max_pods_per_node = 250
        }
        control_plane {
          control_plane_node_pool_config {
            node_pool_config {
              operating_system = "LINUX"
              dynamic "node_configs" {
                for_each = var.admin_cp_ips
                content {
                  node_ip = node_configs.value
                }
              }
            }
          }
        }
        load_balancer {
          port_config {
            control_plane_load_balancer_port = 443
          }
          vip_config {
            control_plane_vip = var.admin_cp_vip
          }
        }
        storage {
          lvp_share_config {
            lvp_config {
              path = "/mnt/localpv-share"
              storage_class = "local-shared"
            }
            shared_path_pv_count = 5
          }
          lvp_node_mounts_config {
            path = "/mnt/localpv-disk"
            storage_class = "local-disks"
          }
        }
      
        dynamic "security_config" {
          for_each = length(var.admin_user_emails) == 0 ? [] : [1]
          content {
            authorization {
              dynamic "admin_users" {
                for_each = var.admin_user_emails
                content {
                  username = admin_users.value
                }
              }
            }
          }
        }
      
        lifecycle {
          ignore_changes = [
            annotations["onprem.cluster.gke.io/user-cluster-resource-link"],
            annotations["alpha.baremetal.cluster.gke.io/cluster-metrics-webhook"],
            annotations["baremetal.cluster.gke.io/operation"],
            annotations["baremetal.cluster.gke.io/operation-id"],
            annotations["baremetal.cluster.gke.io/start-time"],
            annotations["baremetal.cluster.gke.io/upgrade-from-version"]
          ]
        }
      }
      
      #[END anthos_onprem_terraform_bare_metal_admin_cluster_basic_main]
      

      管理クラスタの Terraform リソースの詳細については、Terraform レジストリの google_gkeonprem_bare_metal_admin_cluster をご覧ください。

    ブートストラップ クラスタを作成する

    Terraform などの GKE On-Prem API クライアントを使用して管理クラスタを作成する場合は、管理ワークステーションにブートストラップ クラスタを作成する必要があります。このブートストラップ クラスタは、管理クラスタの作成に必要な Kubernetes コントローラをホストします。

    1. コマンドラインから SSH を使用して、root として管理ワークステーション VM にアクセスします。

      gcloud compute ssh root@abm-ws --zone ZONE
      

      VM の更新に関するメッセージを無視して、このチュートリアルを完了して問題ありません。VM をテスト環境として維持する場合は、Ubuntu のドキュメントに記載されているように、OS を更新するか次のリリースにアップグレードすることをおすすめします。

    2. ユーザー認証情報をアプリケーションのデフォルト認証情報(ADC)として設定します。

      gcloud auth application-default login
      

      画面の指示に沿って、ADC 用の Google アカウントを選択します。

    3. baremetal/ ディレクトリに移動し、次のコマンドを実行してブートストラップ クラスタを作成します。

      ブートストラップ クラスタ名は、管理クラスタ名の前に bootstrap- を付けて生成されます。

      bmctl register bootstrap \
        --ssh-key=/root/.ssh/id_rsa \
        --name=bootstrap-ADMIN_CLUSTER_NAME \
        --project-id=PROJECT_ID
      

      bmctl がブートストラップ クラスタの作成に成功すると、次のような出力が表示されます。

      [2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
      [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
      [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
      

    管理クラスタを作成する

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

      terraform init
      

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

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

      terraform plan
      
    3. Terraform プランを適用して、管理クラスタを作成します。

      terraform apply
      

      管理クラスタの作成には 15 分以上かかります。クラスタの作成が完了すると、次のようなメッセージが表示されます。

      ...
      google_gkeonprem_bare_metal_admin_cluster.admin-cluster-basic: Still creating... [20m10s elapsed]
      google_gkeonprem_bare_metal_admin_cluster.admin-cluster-basic: Creation complete after 20m11s
      [id=projects/anonuser-anonproject/locations/us-central1/bareMetalAdminClusters/gce-admin-terra002]
      
      Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
      

      管理クラスタが作成されると、管理ワークステーションのブートストラップ クラスタは削除されます。別のターミナル ウィンドウで bmctl register bootstrap コマンドを実行すると、出力は次のようになります。

      ...
      [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK
      [2024-04-15 23:16:38+0000] Please run
      [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes
      [2024-04-15 23:16:38+0000] to get cluster nodes status.
      [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK
      [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK
      [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK
      [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster
      [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK
      [2024-04-15 23:24:30+0000] Flushing logs... OK
      [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster.
      [2024-04-15 23:24:30+0000] Deleting membership... OK
      [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
      

    4. コンソールで [GKE クラスタ] ページに移動します。

      GKE クラスタに移動

      ユーザー クラスタを作成したプロジェクトが選択されていることを確認します。管理クラスタがリストに表示されます。

    5. 管理クラスタにログインします。

      1. クラスタ名のリンクをクリックして、サイドパネルで [ログイン] をクリックします。

      2. [Google ID を使用してログインします] を選択します。

      3. [ログイン] をクリックします。

    管理クラスタを確認する

    管理ワークステーションにある管理クラスタの kubeconfig ファイルは、root アカウントの bmctl-workspace ディレクトリにあります。デプロイを確認するには、次の操作を行います。

    1. SSH を使用して、root として管理ワークステーションにアクセスします。

      gcloud compute ssh root@abm-ws --zone ZONE
      
    2. 管理クラスタが作成され、動作していることを確認します。

      kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
      

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

      none{:.devsite-disable-click-to-copy} NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m 1.31.300-gke.81

    3. 確認が完了したら、「exit」と入力して管理ワークステーションから切断します。

    4. ユーザー クラスタを作成する

    Google Cloud コンソール、Google Cloud CLI、または Terraform を使用してユーザー クラスタを作成できます。わかりやすくするため、Terraform スクリプトにハードコードされた名前と一致するように、ユーザー クラスタ名に abm-user-cluster-metallb を使用します。

    bmctl

    1. SSH を使用して、root として管理ワークステーション VM(abm-ws)にアクセスします。

      gcloud compute ssh root@abm-ws --zone ZONE
      
    2. クラスタ構成ファイルを生成します。

      bmctl create config -c abm-user-cluster-metallb \
          --project-id=PROJECT_ID
    3. 次のユーザー クラスタの構成ファイルで、clusterSecurity セクションにメールアドレスを設定し、残りの設定を確認します。

      次のクラスタ構成ファイルには、前述の計画テーブルに入力した値が入力されています。入力した値に加え、生成された構成ファイルとは次の違いがあります。

      • 読みやすくするために、このサンプルではコメントを削除しています。
      • ユーザー クラスタの場合と同様に、[認証情報] セクションを削除しています。
      • クラスタタイプ spec.typeuser に設定されています。
      • clusterrole/cluster-admin がアカウントに付与されるように、spec.clusterSecurity.authorization.clusterAdmin.gcpAccounts フィールドが追加されています。このフィールドを使用すると、Google Cloud コンソールでクラスタにログインして、クラスタの詳細を表示できます。
      ---
      apiVersion: v1
      kind: Namespace
      metadata:
        name: cluster-abm-user-cluster-metallb
      ---
      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: abm-user-cluster-metallb
        namespace: cluster-abm-user-cluster-metallb
      spec:
        type: user
        profile: default
        anthosBareMetalVersion: BMCTL_VERSION
        gkeConnect:
          projectID: PROJECT_ID
        controlPlane:
          nodePoolSpec:
            nodes:
            - address: 10.200.0.4
        clusterNetwork:
          pods:
            cidrBlocks:
            - 192.168.0.0/16
          services:
            cidrBlocks:
            - 10.96.0.0/20
        loadBalancer:
          mode: bundled
          ports:
            controlPlaneLBPort: 443
          vips:
            controlPlaneVIP: 10.200.0.50
            ingressVIP: 10.200.0.51
          addressPools:
          - name: pool1
            addresses:
            - 10.200.0.51-10.200.0.70
        clusterOperations:
          projectID: PROJECT_ID
          location: ON_PREM_API_REGION
        clusterSecurity:
          authorization:
            clusterAdmin:
              gcpAccounts:
              - YOUR_EMAIL_ADDRESS
        storage:
          lvpNodeMounts:
            path: /mnt/localpv-disk
            storageClassName: local-disks
          lvpShare:
            path: /mnt/localpv-share
            storageClassName: local-shared
            numPVUnderSharedPath: 5
        nodeConfig:
          podDensity:
            maxPodsPerNode: 250
      ---
      apiVersion: baremetal.cluster.gke.io/v1
      kind: NodePool
      metadata:
        name: node-pool-1
        namespace: cluster-abm-user-cluster-metallb
      spec:
        clusterName: abm-user-cluster-metallb
        nodes:
        - address: 10.200.0.5
      
    4. 管理ワークステーションで生成された構成ファイルの内容を、上記サンプルの内容に置き換えます。

      生成された bmctl-workspace/abm-user-cluster-metallb/abm-user-cluster-metallb.yaml ファイルを開き、その内容を前の手順で確認したサンプルの内容に置き換えます。

    5. ユーザー クラスタを作成します。

      bmctl create cluster -c abm-user-cluster-metallb \
        --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig

      bmctl コマンドは、プリフライト チェックを実行し、クラスタを作成するときに出力を画面に表示します。詳細情報は、管理ワークステーションの baremetal/bmctl-workspace/abm-user-cluster-metallb/log フォルダのログに書き込まれます。

      クラスタの作成が完了するまでに数分かかる場合があります。

    6. Google Cloud コンソールで、[GKE クラスタ] ページに移動します。

      GKE クラスタに移動

      ユーザー クラスタを作成したプロジェクトが選択されていることを確認します。管理クラスタとユーザー クラスタの両方がリストに表示されます。

    7. ユーザー クラスタにログインします。

      1. クラスタ名のリンクをクリックして、サイドパネルで [ログイン] をクリックします。

      2. [Google ID を使用してログインします] を選択します。

      3. [ログイン] をクリックします。

      同じ手順を繰り返して、管理クラスタにログインします。

    コンソール

    次の手順に沿って、コンソールでユーザー クラスタを作成します。

    1. コンソールで、ベアメタル クラスタの作成ページに移動します。

      ベアメタル クラスタの作成ページに移動

    2. 管理クラスタを作成した Google Cloud プロジェクトが選択されていることを確認します。

    3. [クラスタを作成] をクリックします。

    4. ダイアログで [オンプレミス] をクリックします。

    5. [ベアメタル] の横にある [構成] をクリックします。[前提条件] ページが表示されます。

    6. [クラスタタイプの選択] で、[既存の管理クラスタ用のユーザー クラスタを作成する] を選択します。

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

    クラスタの基本

    1. ユーザー クラスタの名前を入力するか、デフォルトを使用します。

    2. 新しく作成した管理クラスタが選択されていることを確認します。このページの残りの設定には、デフォルト値を使用できます。

    3. 左側のナビゲーション バーで [ネットワーキング] をクリックします。

    ネットワーキング

    VM と管理クラスタの作成に使用したスクリプトによって、10.200.0.0/24 サブネットに IP アドレスを持つレイヤ 2 VXLAN が作成されています。

    1. [コントロール プレーン] セクションで、[コントロール プレーン ノード IP 1] フィールドに次のように入力します。

      10.200.0.4
      

      これは、スクリプトによって作成された VXLAN にある abm-user-cluster-cp1 VM の IP アドレスです。

    2. [ロードバランサ] セクションで、デフォルトのロードバランサ [バンドルされた MetalLB] を使用します。

    3. [新しいアドレスプール] セクションで、[IP アドレス範囲 1] フィールドに次の IP アドレス範囲を入力します。

      10.200.0.51-10.200.0.70
      
    4. [完了] をクリックします。

    5. [仮想 IP] セクションで、[コントロール プレーン VIP] フィールドに次の IP アドレスを入力します。

      10.200.0.50
      
    6. [Ingress VIP] に、次の IP アドレスを入力します。

      10.200.0.51
      
    7. [サービスと Pod の CIDR] セクションで、デフォルトの IP アドレスを使用します。

    8. 左側のナビゲーション バーで [デフォルト プール] をクリックします。

    ノードプールを作成する

    ユーザー クラスタには、ワーカーノード用のノードプールが少なくとも 1 つ必要です。

    1. [ノードアドレス 1] フィールドに、次の IP アドレスを入力します。

      10.200.0.5
      

      これは、スクリプトによって作成された VXLAN にある abm-user-cluster-w1 VM の IP アドレスです。

    クラスタを作成する

    1. [確認して作成] をクリックしてユーザー クラスタを作成します。

      ユーザー クラスタの作成には 15 分以上かかります。コンソールには、設定の確認とクラスタの作成中にステータス メッセージが表示されます。

      構成に問題がある場合は、構成の問題を修正してクラスタの作成を再試行できる十分な量のエラー メッセージがコンソールに表示されます。

      作成プロセスに関する追加情報を表示するには、[詳細を表示] をクリックしてサイドパネルを表示します。[] をクリックすると、詳細パネルが閉じます。

      クラスタが作成されると、「クラスタ ステータス: 実行中」と表示されます。

    2. クラスタが作成されたら、 [クラスタ] をクリックして [クラスタ] ページに戻ります。

    3. ユーザー クラスタにログインします。

      1. クラスタ名のリンクをクリックして、サイドパネルで [ログイン] をクリックします。

      2. [Google ID を使用してログインします] を選択します。

      3. [ログイン] をクリックします。

      同じ手順を繰り返して、管理クラスタにログインします。

    gcloud CLI

    ユーザー クラスタを作成するには:

    1. 次のコマンドを実行して、ユーザー クラスタを作成します。

      gcloud container bare-metal clusters create abm-user-cluster-metallb \
          --project=PROJECT_ID \
          --admin-cluster-membership=projects/PROJECT_ID/locations/ON_PREM_API_REGION/memberships/ADMIN_CLUSTER_NAME \
          --location=ON_PREM_API_REGION \
          --version=BMCTL_VERSION \
          --admin-users=YOUR_EMAIL_ADDRESS \
          --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=10.200.0.51-10.200.0.70' \
          --control-plane-node-configs='node-ip=10.200.0.4' \
          --control-plane-vip=10.200.0.50 \
          --control-plane-load-balancer-port=443 \
          --ingress-vip=10.200.0.51 \
          --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
          --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
          --lvp-share-path=/mnt/localpv-share \
          --lvp-share-storage-class=local-shared \
          --lvp-node-mounts-config-path=/mnt/localpv-disk \
          --lvp-node-mounts-config-storage-class=local-disks
      

      コマンドを実行すると、次のような出力が表示されます。

      Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678304606537-5f668bde5c57e-341effde-b612ff8a] to complete...
      

      この出力例では、operation-1678304606537-5f668bde5c57e-341effde-b612ff8a という文字列は長時間実行オペレーションの OPERATION_ID です。

    2. オペレーションのステータスを確認するには、別のターミナル ウィンドウを開いてコマンドを実行します。

      gcloud container bare-metal operations describe OPERATION_ID \
          --project=PROJECT_ID \
          --location=ON_PREM_API_REGION
      

      OPERATION_ID は、前の手順の出力で対応する文字列に置き換えます。

      クラスタの作成には 15 分以上かかります。クラスタが作成されている間、上記のコマンドを繰り返し実行することで現在のステータスを取得できます。

      クラスタが作成されると、次のような出力が表示されます。

      Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/abm-user-cluster-metallb].

      gcloud container bare-metal clusters create コマンドの詳細(各フラグの説明など)については、gcloud CLI リファレンスのクラスタ リソースの container bare-metal clusters create ページをご覧ください。

    ノードプールを作成する

    クラスタが正常に作成されたら、クラスタのノードプールを作成できます。

    ノードプールを作成するには:

    1. 次のコマンドを実行してノードプールを作成します。

      gcloud container bare-metal node-pools create NODE_POOL_NAME \
          --cluster=abm-user-cluster-metallb \
          --project=PROJECT_ID \
          --location=ON_PREM_API_REGION \
          --node-configs='node-ip=10.200.0.5'
      

      NODE_POOL_NAME は、ノードプールの名前に置き換えます。

      コマンドを実行すると、次のような出力が表示されます。

      Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678308682052-5f669b0d132cb-6ebd1c2c-816287a7] to complete...
      

      ノードプールは、およそ 5 分以内で作成されます。ノードプールが作成されると、次のような出力が表示されます。

      Created node pool in Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/abm-user-cluster-metallb/bareMetalNodePools/NODE_POOL_NAME].
      
    2. コンソールの [Kubernetes クラスタ] ページに移動します。

      [Create a bare metal cluster] ページに移動

      ユーザー クラスタを作成したプロジェクトが選択されていることを確認します。管理クラスタとユーザー クラスタの両方がリストに表示されます。

    3. ユーザー クラスタにログインします。

      1. クラスタ名のリンクをクリックして、サイドパネルで [ログイン] をクリックします。

      2. [Google ID を使用してログインします] を選択します。

      3. [ログイン] をクリックします。

      同じ手順を繰り返して、管理クラスタにログインします。

    Terraform

    バンドルされた MetalLB ロードバランサを使用してユーザー クラスタを作成するには、次の基本的な構成サンプルを使用できます。詳細については、google_gkeonprem_bare_metal_cluster リファレンス ドキュメントをご覧ください。

    1. anthos-samples のクローンを作成したディレクトリで、Terraform のサンプルがあるディレクトリに移動します。

      cd anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb
      

      このサンプルには、main.tf に渡すサンプル変数が用意されています。

    2. terraform.tfvars.sample ファイルのコピーを作成します。

      cp terraform.tfvars.sample terraform.tfvars
      
    3. 次のサンプルの値を確認します。

      次の Terraform 変数ファイル(terraform.tfvars.sample)には、このガイドの前のセクションで入力した IP アドレスと値が事前に入力されています。

      
      project_id          = "PROJECT_ID"
      region              = "ON_PREM_API_REGION"
      admin_cluster_name  = "ADMIN_CLUSTER_NAME"
      bare_metal_version  = "VERSION"
      admin_user_emails   = ["YOUR_EMAIL_ADDRESS", "ADMIN_2_EMAIL_ADDRESS"]
      cluster_name        = "abm-user-cluster-metallb"
      control_plane_ips   = ["10.200.0.4"]
      worker_node_ips     = ["10.200.0.5", "10.200.0.6"]
      control_plane_vip   = "10.200.0.50"
      ingress_vip         = "10.200.0.51"
      lb_address_pools    = [
          { name = "lbpool_1", addresses = ["10.200.0.51-10.200.0.70"] }
      ]
      

      ADMIN_2_EMAIL_ADDRESS は、 Google Cloud アカウントに関連付けられているメールアドレスに置き換えるか、変数ファイルを編集するときに削除します。

      このサンプルで変数を設定する引数の詳細については、ベアメタル ユーザー クラスタの Terraform ドキュメントの引数リファレンスをご覧ください。

    4. 変数ファイルのコピーの内容を、上記のサンプルの内容に置き換えます。

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

      terraform init
      

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

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

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

      terraform apply
      

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

    8. Google Cloud コンソールで、[GKE クラスタ] ページに移動します。

      GKE クラスタに移動

      ユーザー クラスタを作成したプロジェクトが選択されていることを確認します。管理クラスタとユーザー クラスタの両方がリストに表示されます。

    9. ユーザー クラスタにログインします。

      1. クラスタ名のリンクをクリックして、サイドパネルで [ログイン] をクリックします。

      2. [Google ID を使用してログインします] を選択します。

      3. [ログイン] をクリックします。

      同じ手順を繰り返して、管理クラスタにログインします。

    5. クリーンアップ

    このガイドで作成したクラスタと VM を削除するには、次の操作を行います。

    ユーザー クラスタを削除する

    bmctl

    • bmctl でユーザー クラスタを削除するには、管理ワークステーション VM の abm-ws から次のコマンドを実行します。

      bmctl reset \
          --cluster abm-user-cluster-metallb \
          --admin-kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
      

    コンソール

    1. コンソールで [GKE クラスタ] ページに移動します。

      [GKE クラスタ] に移動

    2. クラスタのリストで、ユーザー クラスタをクリックします。

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

    4. ウィンドウの上部にある 削除)をクリックします。

    5. 確認の入力を求められたら、クラスタ名を入力して [削除] をクリックします。

    6. 右上隅にある をクリックして、削除のステータスを表示します。クラスタリストを更新するには、ページの更新が必要になる場合があります。

    gcloud CLI

    • 次のコマンドを実行してクラスタを削除します。

      gcloud container bare-metal clusters delete abm-user-cluster-metallb \
          --project=PROJECT_ID \
          --location=ON_PREM_API_REGION \
          --force
      

      --force フラグを使用すると、ノードプールを持つクラスタを削除できます。--force フラグを使用せずに、まず ノードプールを削除 してから、クラスタを削除する必要があります。

    その他のフラグの詳細については、gcloud container bare-metal clusters delete をご覧ください。

    Terraform

    terraform destroy コマンドは、terraform apply を実行してユーザー クラスタを作成したときに作成されたリソースを終了します。

    • Terraform ユーザー クラスタのサンプル ファイル(main.tf など)が配置されているディレクトリから次のコマンドを実行します。

      terraform destroy
      

    ユーザー クラスタが削除されるのを待ってから、管理クラスタと VM を削除します。

    管理クラスタと VM を削除する

    1. GKE On-Prem API から管理クラスタの登録を解除します。

      gcloud container bare-metal admin-clusters unenroll ADMIN_CLUSTER_NAME \
          --project=PROJECT_ID \
          --location=ON_PREM_API_REGION
      
    2. 管理ワークステーションに接続します。

      gcloud compute ssh root@abm-ws --zone ZONE
      
    3. 管理クラスタを削除します。

      bmctl reset -c ADMIN_CLUSTER_NAME
      

      bmctl は、フリートからクラスタの登録を解除し、クラスタを削除します。クラスタが削除されるのを待ってから、VM を削除します。

    4. 管理ワークステーションを終了します。

      exit
      
    5. 名前に abm を含むすべての VM を一覧取得します。

      gcloud compute instances list | grep 'abm'
      
    6. 名前に abm を含むすべての VM を削除しても問題がないことを確認します。

      確認後、次のコマンドを実行して abm VM を削除できます。

      gcloud compute instances list --format="value(name)" | \
          grep 'abm' | \
          xargs gcloud compute instances delete --quiet --zone ZONE
      
    7. 次のコマンドを実行してサービス アカウントを削除し、プロンプトが表示されたら「y」を入力します。

      gcloud iam service-accounts delete baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
      

      次のステップ