インストールの準備

このページでは、環境に GKE On-Prem をインストールする前に行う必要がある手順を説明します。

始める前に

次のトピックを確認します。

制限事項

制限 説明
クラスタとノードの上限と下限

割り当てと上限をご覧ください。環境のパフォーマンスがこれらの上限に影響することがあります。

ユーザー クラスタ名の一意性

同じ Google Cloud プロジェクトに登録されているすべてのユーザー クラスタに一意の名前を付ける必要があります。

複数の vCenter / vSphere データセンターにはデプロイできない

現時点では、管理クラスタと関連するユーザー クラスタのセットは、1 つの vCenter / vSphere データセンターにのみデプロイできます。同じ管理クラスタとユーザー クラスタを、複数の vCenter / vSphere データセンターにはデプロイできません。

作成後にクラスタ構成を宣言型の方法で変更できない 追加のクラスタの作成既存のクラスタのサイズ変更はできますが、既存のクラスタを構成ファイルで変更することはできません。

Google Cloud プロジェクトを作成する

Google Cloud プロジェクトを作成します(まだ作成していない場合)。GKE On-Prem を実行するにはプロジェクトが必要です。

必要なコマンドライン インターフェース ツールをインストールする

  • Google Cloud CLIgcloud を含む)をインストールします。これは、Google Cloud のコマンドライン インターフェース(CLI)です。

  • VMware vSphere への CLI である govc をインストールします。

  • terraform CLI を含む Terraform 0.11 をインストールします。Terraform のインストール手順に従い、インストールを確認して PATH 変数を設定します。

Google Cloud CLI を構成して、ラップトップまたはワークステーションからプロキシまたはファイアウォールを使用する

プロキシを使用してノートパソコンやワークステーションからインターネットに接続している場合は、プロキシ用に Google Cloud CLI を構成する必要があります。そうすると、gcloud コマンドとgsutil コマンドを実行できるようになります。手順については、プロキシ / ファイアウォールの背後で gcloud CLI を使用する場合の構成をご覧ください。

gcloud を承認して Google Cloud にアクセスする

gcloud CLI をインストールしてから、アカウントの認証情報を使用して Google Cloud にログインします。

gcloud auth login

デフォルトの Google Cloud プロジェクトを設定する

デフォルトの Google Cloud を設定すると、すべての gcloud CLI コマンドがプロジェクトに対して実行されるようになります。コマンドごとにプロジェクトを指定する必要はありません。デフォルト プロジェクトを設定するには、次のコマンドを実行します。

gcloud config set project [PROJECT_ID]

[PROJECT_ID] は実際のプロジェクト ID に置き換えます(プロジェクト ID は Google Cloud コンソール で確認できます。または、gcloud config get-value project を実行して確認することもできます)。

Google Cloud サービス アカウントを作成する

GKE On-Prem を初めてインストールする前に、gcloud を使用して 4 つの Google Cloud サービス アカウントを作成します。GKE On-Prem は、これらのサービス アカウントを使用してユーザーに代わってタスクを完了します。以降のセクションでは、各アカウントの目的について説明します。

アクセス サービス アカウント

このサービス アカウントを使用して、Cloud Storage から GKE On-Prem のバイナリをダウンロードします。これは、Google が許可リストに登録する唯一のサービス アカウントです。

次のコマンドを実行して access-service-account を作成します。

gcloud iam service-accounts create access-service-account

登録サービス アカウント

Connect は、このサービス アカウントを使用して GKE On-Prem クラスタを Google Cloud Console に登録します。

次のコマンドを実行して register-service-account を作成します。

gcloud iam service-accounts create register-service-account

接続サービス アカウント

Connect は、このサービス アカウントを使用して GKE On-Prem クラスタと Google Cloud 間の接続を維持します。

次のコマンドを実行して connect-service-account を作成します。

gcloud iam service-accounts create connect-service-account

Google Cloud のオペレーション スイートのサービス アカウント

このサービス アカウントでは、GKE On-Prem が Google Cloud のオペレーション スイートにログデータとモニタリング データを書き込めます。

次のコマンドを実行して stackdriver-service-account を作成します。

gcloud iam service-accounts create stackdriver-service-account

プロジェクトとアカウントを許可リストに登録する

Anthos の購入後、以下の対象が許可リストに登録され、GKE On-Prem および Connect へのアクセス権が付与されます。

  • Google Cloud プロジェクト。
  • Google アカウント、チームメンバーの個別の Google アカウント。
  • アクセス サービス アカウント。

別のプロジェクトやサービス アカウントを使用する場合や、追加ユーザーを有効にする場合は、Google Cloud サポートまたはテクニカル アカウント マネージャーにお問い合わせください。Google Cloud コンソール または Google Cloud サポート センターでサポートケースを開きます。

プロジェクトで必要な API を有効にする

Google Cloud プロジェクトで次の API を有効にする必要があります。

  • cloudresourcemanager.googleapis.com
  • container.googleapis.com
  • gkeconnect.googleapis.com
  • gkehub.googleapis.com
  • serviceusage.googleapis.com
  • stackdriver.googleapis.com
  • monitoring.googleapis.com
  • logging.googleapis.com

こうした API を有効にするには、次のコマンドを実行します。

gcloud services enable \
cloudresourcemanager.googleapis.com \
container.googleapis.com \
gkeconnect.googleapis.com \
gkehub.googleapis.com \
serviceusage.googleapis.com \
stackdriver.googleapis.com \
monitoring.googleapis.com \
logging.googleapis.com

サービス アカウントに Identity and Access Management のロールを割り当てる

IAM は、Google Cloud APIs を呼び出す権限をアカウントに付与します。専用の IAM ロールをこれらのサービス アカウントに割り当てて、権限を分離します。

サービス アカウントのメールアドレスを一覧表示する

まず、Google Cloud プロジェクトのサービス アカウントを一覧表示します。

gcloud iam service-accounts list

my-gcp-project という名前の Google Cloud プロジェクトの場合、このコマンドの出力は次のようになります。

gcloud iam service-accounts list
NAME                                    EMAIL
                                        access-service-account@my-gcp-project.iam.gserviceaccount.com
                                        register-service-account@my-gcp-project.iam.gserviceaccount.com
                                        connect-service-account@my-gcp-project.iam.gserviceaccount.com
                                        stackdriver-service-account@my-gcp-project.iam.gserviceaccount.com

各アカウントのメールアドレスをメモしておきます。以下の各セクションで、関連するアカウントのメール アカウントを指定します。

登録サービス アカウント

gkehub.adminserviceuseage.serviceUsageViewer のロールを登録サービス アカウントに付与します。

gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[REGISTER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/gkehub.admin"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[REGISTER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/serviceusage.serviceUsageViewer"

接続サービス アカウント

接続サービス アカウントに gkehub.connect ロールを付与します。

gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[CONNECT_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/gkehub.connect"

Google Cloud のオペレーション スイートのサービス アカウント

Google Cloud のオペレーション スイートのサービス アカウントに stackdriver.resourceMetadata.writerlogging.logWritermonitoring.metricWriter のロールを付与します。

gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[STACKDRIVER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/stackdriver.resourceMetadata.writer"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[STACKDRIVER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[STACKDRIVER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/monitoring.metricWriter"

ロギングとモニタリングの構成

GKE On-Prem では、Stackdriver Logging と Stackdriver Monitoring がデフォルトで有効になっています。

プロキシのアドレスを許可リストに登録する

組織で HTTP プロキシを経由するインターネット アクセスが必要な場合は、プロキシの次のアドレスを許可リストに登録する必要があります。

以下のセクションでは、アドレスについて詳しく説明します。

Google のアドレス

GKE On-Prem は、複数の Google API を使用してクラスタを作成、管理します。プロキシで次の Google アドレスを許可リストに登録します。

アドレス 目的
accounts.google.com Google Cloud プロジェクトにアクセスするため Google アカウントにアクセスできるようにします。
cloudresourcemanager.googleapis.com Google Cloud リソース コンテナのメタデータの作成、読み取り、更新を行います。
console.cloud.google.com Google Cloud Console へのアクセスを許可します。
container.googleapis.com Google Kubernetes Engine API へのアクセスを許可します。
gcr.io GKE On-Prem リポジトリを含む Container Registry リポジトリへのアクセスを許可します。
gkeconnect.googleapis.com 長期間暗号化された Google Cloud への接続を確立するために行う、Connect へのアクセスを許可します。
gkehub.googleapis.com Google Cloud プロジェクトへのクラスタ登録のために行う、Google Cloud Console へのアクセスを許可します。
logging.googleapis.com クラスタ指標のロギング機能のために行う、Cloud Logging API へのアクセスを許可します。
monitoring.googleapis.com クラスタ監視機能のために行う、Cloud Monitoring API へのアクセスを許可します。
oauth2.googleapis.com 認証のための Google の OAuth2 API へのアクセスを許可します。
serviceusage.googleapis.com
storage.googleapis.com Cloud Storage バケットへのアクセスを許可します。
googleapis.com Google Cloud プロダクト固有エンドポイントへの安全なアクセスを許可します。

HashiCorp アドレス

HashiCorp Terraform バージョン 0.11 を使用し vSphere で管理ワークステーション VM を作成します。プロキシまたはファイアウォールが存在する環境で Terraform を実行するには、次の HashiCorp アドレスを許可リストに登録する必要があります。

アドレス 目的
checkpoint-api.hashicorp.com さまざまなオープンソースおよびプロプライエタリ プロダクトに関する HashCorp のバージョンとアラート情報へのアクセスを許可します。
releases.hashicorp.com HashiCorp のバイナリへのアクセスを許可します。

VMware、ロードバランサ、その他のアドレス

最後に、プロキシで次のアドレスが許可リストに登録します。これらのアドレスは異なる場合があります。

アドレス 目的
vCenter Server の IP アドレス vCenter Server へのインターネット トラフィックを許可します。
すべての ESXi ホストの IP アドレス GKE On-Prem クラスタを実行している ESXi ホストへのインターネット トラフィックを許可します。
ロードバランサに構成するその他の IP アドレス クライアントやワークロードなど、他の IP アドレスへのインターネット トラフィックを許可します。

Pod と Service 範囲の設定

管理クラスタ用と、作成する各ユーザー クラスタ用に、2 つの別個の CIDR IPv4 ブロック(Pod IP 用に 1 つ、Service IP 用に 1 つ)を確保する必要があります。

これらの範囲のサイズは、作成する Pod と Service の数によって異なります。たとえば、1 つのクラスタに作成する Service が 256 未満の場合は、10.96.233.0/24 のように /24 の Service 範囲を確保できます。クラスタ内に作成する Pod の数が 4,096 未満の場合は、172.16.0.0/20 のように /20 の Pod 範囲を確保できます。

特定のクラスタの、Service と Pod の範囲が重複しないようにする必要があります。また、Service と Pod の範囲が、クラスタ内のノードで使用する IP アドレスと重複しないようにしてください。

ロードバランサを準備する

GKE On-Prem クラスタは、統合または手動の 2 つの負荷分散モードのいずれかで実行できます。統合モードでは、GKE On-Prem クラスタは F5 BIG-IP ロードバランサを使用します。手動モードでは、別のロードバランサを手動で構成します。

F5 BIG-IP パーティションを準備する

統合モードを使用する場合は、F5 BIG-IP パーティションを作成して、作成する GKE On-Prem クラスタごとの負荷分散を処理する必要があります。

最初に、少なくとも 2 つのパーティション(管理クラスタ用に 1 つ、ユーザー クラスタ用に 1 つ)を作成する必要があります。対応するクラスタを作成する前にパーティションを作成する必要があります。

クラスタ パーティションは他の目的では使用しないでください。各クラスタには、クラスタ専用のパーティションが必要です。

パーティションの作成方法については、F5 BIG-IP ドキュメントの管理パーティションの作成をご覧ください。

手動負荷分散モードを使用する

手動負荷分散モードでは、統合モードよりも多くの構成を行う必要があります。詳細については、手動負荷分散の有効化をご覧ください。