このページでは、環境に GKE On-Prem をインストールする前に行う必要がある手順を説明します。
始める前に
次のトピックを確認します。
制限事項
制限 | 説明 |
---|---|
クラスタとノードの上限と下限 | 割り当てと上限をご覧ください。環境のパフォーマンスがこれらの上限に影響することがあります。 |
ユーザー クラスタ名の一意性 | 同じ Google Cloud プロジェクトに登録されているすべてのユーザー クラスタに一意の名前を付ける必要があります。 |
複数の vCenter / vSphere データセンターにはデプロイできない | 現時点では、管理クラスタと関連するユーザー クラスタのセットは、1 つの vCenter / vSphere データセンターにのみデプロイできます。同じ管理クラスタとユーザー クラスタを、複数の vCenter / vSphere データセンターにはデプロイできません。 |
作成後にクラスタ構成を宣言型の方法で変更できない | 追加のクラスタの作成と既存のクラスタのサイズ変更はできますが、既存のクラスタを構成ファイルで変更することはできません。 |
Google Cloud プロジェクトを作成する
Google Cloud プロジェクトを作成します(まだ作成していない場合)。GKE On-Prem を実行するにはプロジェクトが必要です。
必要なコマンドライン インターフェース ツールをインストールする
Google Cloud CLI(
gcloud
を含む)をインストールします。これは、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.admin
と serviceuseage.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.writer
、logging.logWriter
、monitoring.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 ドキュメントの管理パーティションの作成をご覧ください。
手動負荷分散モードを使用する
手動負荷分散モードでは、統合モードよりも多くの構成を行う必要があります。詳細については、手動負荷分散の有効化をご覧ください。