Google Cloud コンソールを使用して管理者クラスタを作成する

コンソールを使用して、Google Distributed Cloud ソフトウェア専用の VMware 用管理クラスタを作成し、構造化されたガイダンスにグラフィカル ユーザー インターフェースを使用します。 Google Cloud 管理クラスタは、gkectl またはGoogle Cloud コンソールを使用して作成することもできます。

始める前に

  • 管理ワークステーションを作成するの説明に従って、管理ワークステーションを設定してログインできることを確認します。

  • サービス アカウントの JSON 鍵ファイルが管理ワークステーションにあることを確認します。

  • IP アドレス計画のドキュメントを確認します。3 つのコントロールプレーン ノードとコントロールプレーンの VIP に十分な IP アドレスが利用できることを確認します。kubeception ユーザー クラスタを作成する場合は、それらのユーザー クラスタのコントロール プレーン ノードに十分な数の IP アドレスが利用できる必要があります。

  • ロード バランシングの概要を参照して、使用するロードバランサの種類を再度確認します。手動のロードバランサについては、管理クラスタを作成する前にロードバランサを設定する必要があります。

  • gkectl を使用して管理クラスタを作成する場合は、Google Distributed Cloud コンポーネントに公開レジストリと非公開レジストリのどちらを使用するかを決定します。非公開 Docker レジストリの使用については、privateRegistry をご覧ください。Terraform と Google Cloud コンソールのどちらでも、システム コンポーネントに非公開 Docker レジストリを使用することはできません。

  • 管理クラスタノードで実行するオペレーティング システムのタイプを決定します。

  • 組織でアウトバウンド トラフィックがプロキシ サーバーを通過する必要がある場合は、必要な API と Artifact Registry のアドレスを許可リストに登録してください。

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

手順の概要

管理クラスタを作成する前に、管理ワークステーションで gkectl register bootstrap コマンドを実行する必要があります。このコマンドにより、管理ワークステーションに Kubernetes in Docker(kind)クラスタがデプロイされます。このブートストラップ クラスタは、管理クラスタの作成に必要な Kubernetes コントローラをホストします。 管理クラスタを作成すると、ブートストラップ クラスタのコントローラによりノードがプロビジョニングされ、プリフライト チェックが実行されて、管理クラスタがフリートに登録されます。管理クラスタが正常に作成されると、ブートストラップ クラスタは自動的に削除されます。

コンソールを使用して管理クラスタを作成するための大まかな手順は次のとおりです。

  1. コンソールで、gkectl register bootstrap で要求される情報を入力します。コンソールに、入力した情報を含む gkectl register bootstrap コマンドが表示されます。表示されるコマンドには、コマンドを実行する前に指定する必要があるパスのフラグも含まれます。

  2. 管理ワークステーションで、gkectl register bootstrap を実行してブートストラップ クラスタを作成します。コマンドでブートストラップ クラスタの作成が完了すると、管理クラスタの構成を完了するよう求めるメッセージが出力に表示されます。このプロセスは、管理クラスタが作成されるまで継続します。

  3. コンソールに戻り、クラスタの作成に必要な情報の入力を完了します。クラスタの作成中に、gkectl register bootstrap コマンドは進捗情報を出力し、管理ワークステーションにログを書き込みます。管理クラスタが作成されると、ブートストラップ クラスタは自動的に削除されます。

クラスタの構成を開始する

  1. コンソールで、[VMware 上のクラスタの作成] ページに移動します。

    [VMware 上のクラスタの作成] に移動

  2. クラスタを作成する Google Cloud プロジェクトを選択します。

    次のセクションでブートストラップ クラスタを作成すると、選択したプロジェクト ID が gkectl register bootstrap コマンドの --project-id フラグに表示されます。

  3. [管理クラスタを作成する] がオンになっていることを確認します。

  4. [次へ: ブートストラップ環境のインストール] をクリックします。

ブートストラップ環境のインストール

このセクションでは、gkectl register bootstrap コマンドで要求される情報を入力します。UI フィールドに値を入力すると、コンソールは、ページの下部にある [管理ワークステーションからの環境のブートストラップ] セクションに表示される gkectl register bootstrap コマンドの対応するフラグにその値をコピーします。

ブートストラップ環境の基本

  1. 管理クラスタの名前を入力します。コンソールでは、このクラスタ名が、ページの下部に表示される gkectl register bootstrap コマンドの --target-cluster-name フラグの値として使用されます。名前の最大文字数は 20 文字です。

  2. [Google Cloud API のロケーション] フィールドで、リストから Google Cloudリージョンを選択します。この設定では、次の API とサービスが実行されるリージョンを指定します。

    • GKE On-Prem API(gkeonprem.googleapis.com
    • Fleet サービス(gkehub.googleapis.com
    • Connect サービス(gkeconnect.googleapis.com

    この設定では、以下のものが保存されるリージョンも制御されます。

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

    [Google Cloud API のロケーション] フィールドは、gkectl register bootstrap コマンドの --location フラグに対応します。

  3. [Admin cluster version] フィールドに、クラスタの作成に使用するバージョンを入力します。ここで選択するバージョンは、gkectl register bootstrap コマンドの --bundle-path フラグで指定するバンドルのバージョンと一致する必要があります。

vCenter 構成

gkeadm を使用して管理ワークステーションを作成した場合は、管理ワークステーションの構成ファイルを開き、vCenter セクションの値をコンソールのフィールドにコピーします。生成された管理クラスタ構成ファイルにもこの情報が含まれています。

このセクションのほとんどのフィールドは変更できません。フィールドが変更可能か変更不可かを確認するには、管理クラスタ構成ファイル リファレンスの vCenter セクションをご覧ください。

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

    • 管理ワークステーションの構成ファイル: vCenter.credentials.address フィールドの値を使用します。

    • [アドレス] フィールドは、gkectl register bootstrap コマンドの --vcenter-address フラグに対応します。

  2. [データセンター] フィールドに、vCenter データセンターの名前を入力します。

    • 管理ワークステーションの構成ファイル: vCenter.datacenter フィールドの値を使用します。

    • [データセンター] フィールドは、gkectl register bootstrap コマンドの --vcenter-datacenter フラグに対応します。

  3. [クラスタ名] フィールドに、vCenter クラスタの名前を入力します。

    • 管理ワークステーションの構成ファイル: vCenter.cluster フィールドの値を使用します。

    • [クラスタ名] フィールドは、gkectl register bootstrap コマンドの --vcenter-cluster フラグに対応します。

  4. [リソースプール] フィールドに、vCenter リソースプールの名前またはパスを入力します。

    • 管理ワークステーションの構成ファイル: vCenter.resourcePool フィールドの値を使用します。

    • [リソースプール] フィールドは、gkectl register bootstrap コマンドの --vcenter-resource-pool フラグに対応します。

  5. 次のいずれかを入力して、ストレージ オプションを構成します。

    • [データストア] フィールド: vCenter データストアの名前を入力します。指定する値は、パスではなく、名前にする必要があります。パスを入力する必要がある場合は、[フォルダ] フィールドに入力します。

      • 管理ワークステーションの構成ファイル: vCenter.datastore フィールドの値を使用します。

      • [Datastore] フィールドは、gkectl register bootstrap コマンドの --vcenter-datastore フラグに対応します。

    • [ストレージ ポリシー名] フィールド: クラスタノードの VM ストレージ ポリシーの名前を入力します。詳細については、ストレージ ポリシーを構成するをご覧ください。

      • 管理ワークステーションの構成ファイル: vCenter.storagePolicyName フィールドの値を使用します。

      • [ストレージ ポリシー名] フィールドは、gkectl register bootstrap コマンドの --vcenter-storage-policy フラグに対応します。

    [Datastore] フィールドまたは [ストレージ ポリシー名] フィールドのいずれかに値を入力する必要があります。両方に値を入力することはできません。

  6. 必要に応じて、[フォルダ] フィールドに、クラスタ VM が配置される vCenter フォルダの名前を入力します。

    • 管理ワークステーションの構成ファイル: vCenter.folder フィールドの値を使用します。

    • [フォルダ] フィールドは、gkectl register bootstrap コマンドの --vcenter-folder フラグに対応します。

  7. [ネットワーク] フィールドに、vCenter ネットワークの名前を入力します。

    • 管理ワークステーションの構成ファイル: vCenter.network フィールドの値を使用します。

    • [ネットワーク] フィールドは、gkectl register bootstrap コマンドの --vcenter-network フラグに対応します。

  8. [CA 証明書のパス] フィールドに、vCenter Server のルート CA 証明書のパスを入力します。

    • gkeadm を使用して管理ワークステーションを作成した場合は、ローカルに保存していた CA 証明書ファイルが gkeadm によって管理ワークステーションにコピーされています。

    • [CA 証明書のパス] フィールドは、gkectl register bootstrap コマンドの --vcenter-ca-cert-path に対応します。

CA 証明書の取得

ブートストラップ クラスタを作成したら、[クラスタの基本] ページの [CA 証明書データ] フィールドに PEM 形式の vCenter CA 証明書を指定する必要があります。次のコマンドを実行して、証明書を表示します。

cat CA_CERT_PATH

CA_CERT_PATH は、vCenter Server のルート CA 証明書のパスに置き換えます。このコマンドをローカルで実行する場合は、管理ワークステーションの構成ファイルの vCenter.caCertPath のパスを使用します。

証明書全体をテキスト エディタにコピーします。こうすることで、ブートストラップ クラスタが作成された後、[クラスタの基本] ページの [CA 証明書データ] フィールドに貼り付けられるようになります。

管理ワークステーションからの環境のブートストラップ

gkectl register bootstrap コマンドを実行すると、vCenter アカウントのユーザー名とパスワードの入力を求めるメッセージが表示されます。使用可能な認証情報があることを確認します。gkeadm を使用して管理ワークステーションを作成した場合、ユーザー名とパスワードは credential.yaml ファイルにあります。

  1. [管理ワークステーションからの環境のブートストラップ] セクションまでスクロールして、gkectl register bootstrap コマンドを表示します。

    このページを開いたまま、管理ワークステーションに移動してブートストラップ クラスタを作成します。

  2. gkectl register bootstrap コマンドをコピーしてテキスト エディタに貼り付け、次のフラグの値を指定します。

        ./gkectl register bootstrap \
          ...
          --bundle-path=BUNDLE_PATH \
          ...
          --component-access-service-account-key-path=COMPONENT_ACCESS_SA_PATH \
          --register-service-account-key-path=CONNECT_REGISTER_SA_PATH \
          --stackdriver-service-account-key-path=LOG_MON_SA_PATH \
          --cloud-audit-logging-service-account-key-path=CLOUD_AUDIT_SA_PATH \
          --admin-kubeconfig-out=KUBECONFIG_NAME
    

    次のパスを管理ワークステーションのパスに置き換えます。

    • BUNDLE_PATH: バンドル ファイルのパス。gkeadm を使用して管理ワークステーションを作成した場合、バンドル ファイルは /var/lib/gke/bundles/ にあります。ファイル名は Google Distributed Cloud のバージョンによって異なります(例: gke-onprem-vsphere-1.31.0-gke.889-full.tgz)。
    • COMPONENT_ACCESS_SA_PATH: コンポーネント アクセス サービス アカウントの鍵ファイルのパス。
    • CONNECT_REGISTER_SA_PATH: connect-register サービス アカウントの鍵ファイルのパス。
    • LOG_MON_SA_PATH: ロギング モニタリング サービス アカウントの鍵ファイルのパス。
    • CLOUD_AUDIT_SA_PATH: 監査ロギング サービス アカウントのパス。監査ロギング サービス アカウントを作成していない場合は、logging-monitoring サービス アカウントの鍵ファイルのパスを指定します。
    • KUBECONFIG_NAME: gkectl register bootstrap コマンドで作成する kubeconfig ファイルの名前。このフラグを指定しない場合、コマンドは現在の作業ディレクトリに kubeconfig という名前のファイルを作成します。kubeconfig という名前の既存のファイルがある場合、コマンドはそのファイルを上書きします。

    また、gkeadm を使用して管理ワークステーションを作成した場合、gkectl/usr/bin/ ディレクトリにダウンロードされています。この場合、gkectl は現在の作業ディレクトリにないため、コマンドの先頭から ./ を削除します。

  3. SSH を使用して管理ワークステーションに接続します。

  4. コマンドをコピーして、管理者ワークステーションのターミナル ウィンドウに貼り付けます。

  5. プロンプトが表示されたら、vCenter のユーザー名を入力します(またはコピーして貼り付けます)。ユーザー名は画面にエコーバックされません。

  6. プロンプトが表示されたら、vCenter パスワードを入力します(またはコピーして貼り付けます)。パスワードは画面にエコーバックされません。

このコマンドは、多数の検証を実行します。gkectl がブートストラップ クラスタの作成に成功すると、次のような出力が表示されます(読みやすさのために短くしています)。

Running workstation validations
- Validation Category: Workstation
    - [SUCCESS] Workstation OS
    - [SUCCESS] Workstation Hardware
    - [SUCCESS] Workstation Package
    - [SUCCESS] Workstation NTP
    - [SUCCESS] Workstation Docker
...
All validation results were SUCCESS.
Unpacking GKE on-prem bundle: /var/lib/gke/bundles/gke-onprem-vsphere-1.31.0-gke.889-full.tgz
...
Successfully created and registered the bootstrap cluster
...
Waiting for preflight checks to run or OnPremAdminCluster to be applied...... -

このプロセスは、管理クラスタが作成されるまで継続します。

管理クラスタが作成される前に gkectl register bootstrap コマンドを終了すると、管理クラスタの作成に失敗します。次のコマンドを使用してブートストラップ クラスタを削除する必要があります。

gkectl delete bootstrap \
    --target-cluster-name=ADMIN_CLUSTER_NAME \
    --project-id=PROJECT_ID \
    --location=REGION \
     --register-service-account-key-path=CONNECT_REGISTER_SA_PATH

管理クラスタの構成を完了する

コンソールに戻り、次の手順を実行します。

  1. [ブートストラップ環境のインストール] ページで、[接続を確認] をクリックします。

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

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

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

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

    ブートストラップ クラスタ名、プロジェクト ID、またはその他のフラグ値を変更する必要がある場合は、次の手順を実行します。

    1. Ctrl-C キーを押して gkectl register bootstrap を終了します。
    2. ブートストラップ クラスタを削除します。

      gkectl delete bootstrap \
        --target-cluster-name=ADMIN_CLUSTER_NAME \
        --project-id=PROJECT_ID \
        --location=REGION \
        --register-service-account-key-path=CONNECT_REGISTER_SA_PATH
      
    3. gkectl register bootstrap コマンドを再実行します。

  2. [次へ: クラスタの基本] をクリックして、管理クラスタの構成を開始します。

クラスタの基本

  1. 前の CA 証明書の取得セクションで説明したように、[CA 証明書データ] フィールドに、PEM 形式の vCenter CA 証明書全体をコピーして貼り付けます。

  2. [認可] セクションに、読み取り専用の Kubernetes clusterrole/view ロールを付与するユーザーのメールアドレスを入力します。あなたのメールアドレスは自動的に追加されます。適用されるロールベース アクセス制御(RBAC)ポリシーにより、ユーザーは Connect Gateway を介して読み取り専用コマンドを実行できます。

  3. [次へ: コントロール プレーン] をクリックします。

コントロール プレーン

  1. [コントロール プレーン] セクションのデフォルト設定を確認し、必要に応じて変更します。

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

    • ゲートウェイ: クラスタノードがあるサブネットのデフォルト ゲートウェイの IP アドレス。

    • ネットマスク: クラスタノードがあるサブネットのネットマスク。

    • IP アドレス: IP アドレスと、必要に応じて 3 つのコントロール プレーン ノードのホスト名を入力します。

  3. [次へ: ネットワーキング] をクリックします。

ネットワーキング

このセクションでは、管理クラスタの作成に必要なネットワーキング情報を指定します。

  1. [Service CIDR と Pod CIDR] セクションで、Kubernetes Service と Pod の IP アドレス範囲のデフォルト値を受け入れるか、別の CIDR アドレス範囲を入力します。

    • Service CIDR: 可能な最小範囲は /24、可能な最大範囲は /12 です。

    • Pod CIDR: 可能な最小範囲は /18、可能な最大範囲は /8 です。

  2. [ホスト構成] セクションで、クラスタノードである VM が使用する NTP サーバー、DNS サーバー、および必要に応じて DNS 検索ドメインを指定します。クラスタの作成後、これらの値を変更することはできません。

  3. [次へ: ロードバランサ] をクリックします。

ロードバランサ

このセクションでは、使用するロードバランサのタイプを選択します。詳細については、ロード バランシングの概要をご覧ください。

  1. [ロードバランサのタイプ] リストで、ロードバランサを選択します。

    • MetalLB にバンドル済み: MetalLB ロードバランサがバンドルされており、手動ロード バランシングよりも必要な構成が少なく済みます。MetalLB コンポーネントはクラスタノード上で実行されるため、ロードバランサ用に個別の VM を作成する必要はありません。

    • 手動: クラスタを作成する前に設定したロードバランサであれば、任意のものを使用できます。ロードバランサを手動で設定した場合は、仮想 IP(VIP)、ノードアドレス、nodePort 値の間のマッピングを構成する必要があります。

  2. [コントロール プレーン VIP] フィールドに、Kubernetes API サーバーに送信されるトラフィックに使用する VIP を入力します。

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

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

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

クラスタ作成プロセスの詳細は、管理ワークステーションに出力されます。プリフライト チェックに合格すると、次のように表示されます。

[2023-03-22 23:12:47+0000] Waiting for cluster kubeconfig to become ready OK
[2023-03-22 23:15:47+0000] Writing kubeconfig file
[2023-03-22 23:15:47+0000] kubeconfig of cluster being created is present at gkectl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig
[2023-03-22 23:15:47+0000] Please restrict access to this file as it contains authentication credentials of your cluster.
[2023-03-22 23:15:47+0000] Waiting for cluster to become ready OK
[2023-03-22 23:20:17+0000] Please run
[2023-03-22 23:20:17+0000] kubectl --kubeconfig gkectl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig get nodes
[2023-03-22 23:20:17+0000] to get cluster nodes status.
[2023-03-22 23:20:17+0000] Waiting for node pools to become ready OK
[2023-03-22 23:20:37+0000] Waiting for metrics to become ready in GCP OK
[2023-03-22 23:25:38+0000] Waiting for cluster API provider to install in the created admin cluster OK
[2023-03-22 23:25:48+0000] Moving admin cluster resources to the created admin cluster
[2023-03-22 23:25:51+0000] Waiting for node update jobs to finish OK
[2023-03-22 23:27:41+0000] Flushing logs... OK
[2023-03-22 23:27:41+0000] Deleting membership... OK
[2023-03-22 23:27:42+0000] Deleting bootstrap cluster.

管理クラスタに接続する

gkectl register bootstrap コマンドにより、管理ワークステーションに管理クラスタの kubeconfig ファイルが作成されます。gkectl register bootstrap の実行時に --admin-kubeconfig-out フラグを指定しなかった場合、コマンドを実行したディレクトリに kubeconfig という kubeconfig ファイルが作成されます。

この kubeconfig にはクラスタの認証情報が含まれているため、アクセスを制限する必要があります。

また、Connect Gateway を介して読み取り専用の kubectl コマンドを実行することもできます。

  1. gcloud CLI がインストールされている PC で次のコマンドを実行して、Connect Gateway 経由でクラスタにアクセスできる kubeconfig エントリを取得します。

    gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \
        --project=PROJECT_ID
    

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

    Starting to build Gateway kubeconfig...
    Current project_id: PROJECT_ID
    A new kubeconfig entry "connectgateway_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.
    
  2. これで、Connect Gateway を介して、次のような読み取り専用の kubectl コマンドを実行できるようになりました。

    kubectl get pods -A
    

    管理クラスタに対する完全な管理者権限が必要な場合は、 Connect Gateway を設定するをご覧ください。