このページでは、クラスタ作成の前に作成して構成する必要がある Google Cloud リソースについて説明します。
始める前に
- Google Cloud プロジェクトと請求先アカウントを作成します。 
- Google Cloud プロジェクト オーナーでない場合は、プロジェクト オーナーから次の Identity and Access Management(IAM)ロールを付与してもらいます。 - ロール - 目的 - roles/compute.viewer - 必須: - bmctlでクラスタ構成ファイルの clusterOperations.location フィールドを検証する場合に必要です。- roles/iam.serviceAccountAdmin - 必須: Google Distributed Cloud に必要なサービス アカウントを作成するために必要です。 - roles/iam.securityAdmin - 必須: Google Distributed Cloud に必要なサービス アカウントに IAM ロールを付与するために必要です。 - roles/iam.serviceAccountKeyAdmin - 必須: Google Distributed Cloud に必要なサービス アカウント用の JSON 鍵ファイルを作成するために必要です。 - roles/serviceusage.serviceUsageAdmin - 必須: Google Distributed Cloud に必要な Google API を有効にするために必要です。 - roles/gkeonprem.admin - 省略可: GKE On-Prem API クライアントを使用してクラスタを作成する場合、または GKE On-Prem API で管理されるようにクラスタを構成する場合に必要です。 - roles/gkehub.viewer 
 roles/container.viewer- 省略可: Google Cloud コンソールで GKE のページにアクセスする場合に必要です。 - ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。 
API を有効にする
関連する Google Cloud プロジェクトで、いくつかの Google API を有効にする必要があります。Google Distributed Cloud は、クラスタの作成時に API を使用します。また、 Google Cloudへの接続を維持するために API も必要です。 Google Cloud への接続により、Google Distributed Cloud は Cloud Logging や Cloud Monitoring、Cloud Service Mesh、Config Sync、Policy Controller、Config Controller などのフリート機能を使用できます。
bmctl ツールを使用してクラスタを作成する場合は、bmctl create config を実行する際に --enable-apis フラグを指定すると、bmctl が次の gcloud services enable コマンドに列挙されている API を有効にします。GKE On-Prem API クライアントを使用して管理クラスタやユーザー クラスタを作成する場合は、クラスタを作成する前に API を有効にする必要があります。
API を有効にするには、次のコマンドを実行します。
- Google Cloud CLI にログインします。 - gcloud auth login 
- 次の API を有効にします。 - gcloud services enable --project=PROJECT_ID \ anthos.googleapis.com \ anthosaudit.googleapis.com \ anthosgke.googleapis.com \ cloudresourcemanager.googleapis.com \ compute.googleapis.com \ connectgateway.googleapis.com \ container.googleapis.com \ gkeconnect.googleapis.com \ gkehub.googleapis.com \ gkeonprem.googleapis.com \ iam.googleapis.com \ kubernetesmetadata.googleapis.com \ logging.googleapis.com \ monitoring.googleapis.com \ opsconfigmonitoring.googleapis.com \ serviceusage.googleapis.com \ stackdriver.googleapis.com \ storage.googleapis.com- gkeonprem.googleapis.comを除き、これらの Google API はプロジェクトに必要です。次の 2 つの API は、バージョン 1.29 以降でのみ必要です。- compute.googleapis.com
- kubernetesmetadata.googleapis.com
 - クラスタをプロキシの背後にインストールする場合は、これらの API の多くを接続の許可リストに追加する必要があります。許可リストに追加する必要がある API とエンドポイントのリストと、アクセスの理由については、プロキシの背後にインストールするをご覧ください。 
- プロジェクトで有効になっている API とサービスを表示するには、次のコマンドを実行します。 - gcloud services list --project=PROJECT_ID \ --enabled
サービス アカウントの構成
Google API を使用するには、Google Distributed Cloud では、関連する Google Cloud プロジェクトで特定の IAM ロールが構成されたサービス アカウントが必要です。特に本番環境では、異なる目的ごとに別のサービス アカウントを作成することをおすすめします。
bmctl ツールを使用してクラスタを作成する場合は、bmctl create config を実行する際に --create-service-accounts フラグを指定することで、bmctl で必要な IAM ロールを持つサービス アカウントが作成できます。GKE On-Prem API クライアントを使用して管理クラスタを作成する場合、デフォルトでは、ブートストラップ クラスタを作成するコマンドを実行すると、bmctl register bootstrap コマンドで必要な IAM のロールを持つサービス アカウントが作成されます。
ユーザー クラスタの作成にもサービス アカウントが必要ですが、サービス アカウントはユーザー クラスタを管理する管理クラスタの作成時に作成され、構成されています。
次の表に、自動的に作成されるサービス アカウントを示します。
| サービス アカウント | 目的 | ロール | 
|---|---|---|
| anthos-baremetal-gcr | Google Distributed Cloud は、このサービス アカウントを使用して Artifact Registry からコンテナ イメージをダウンロードします。 | なし | 
| anthos-baremetal-connect | コネクト エージェント は、このサービス アカウントを使用して、クラスタと Google Cloudと間の接続を維持します。これにより、クラスタへのアクセスと、クラスタを操作する Google Cloud コンソールや コネクト ゲートウェイ など、ワークロード管理機能へのアクセスが可能になります。 | roles/gkehub.connect | 
| anthos-baremetal-register | Connect Agent は、このサービス アカウントを使用してフリートにクラスタを登録します。 | roles/gkehub.admin | 
| anthos-baremetal-cloud-ops | Stackdriver Agent は、このサービス アカウントを使用して、クラスタから Cloud Logging と Cloud Monitoring にログと指標をエクスポートします。 | roles/logging.logWriter roles/monitoring.metricWriter roles/stackdriver.resourceMetadata.writer roles/opsconfigmonitoring.resourceMetadata.writer roles/monitoring.dashboardEditor roles/monitoring.viewer roles/serviceusage.serviceUsageViewer roles/kubernetesmetadata.publisher | 
サービス アカウントの手動での構成
必要に応じて、クラスタを作成する前にサービス アカウントを手動で作成し、必要なロールで構成して JSON 鍵ファイルをダウンロードできます。bmctl を使用してクラスタを作成する場合は、JSON 鍵ファイルへの参照を適切なクラスタ構成ファイルに追加します。例については、構成ファイルの編集をご覧ください。GKE On-Prem API を使用して管理クラスタを作成する場合は、bmctl register bootstrap を実行してブートストラップ クラスタを作成する際に鍵ファイルを指定できます。
サービス アカウントとキーファイルを作成するには:
- 管理ワークステーションの - baremetalディレクトリに移動します。
- まだログインしていない場合は、Google Cloud CLI にログインします。 - gcloud auth login 
- サービス アカウントを作成します。 - gcloud iam service-accounts create anthos-baremetal-gcr \ --project=PROJECT_ID gcloud iam service-accounts create anthos-baremetal-connect \ --project=PROJECT_ID gcloud iam service-accounts create anthos-baremetal-register \ --project=PROJECT_ID gcloud iam service-accounts create anthos-baremetal-cloud-ops \ --project=PROJECT_ID
- サービス アカウントに必要な IAM ロールを付与します。 - gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/gkehub.connect" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/gkehub.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/logging.logWriter" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/stackdriver.resourceMetadata.writer" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/opsconfigmonitoring.resourceMetadata.writer" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.dashboardEditor" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.viewer" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/serviceusage.serviceUsageViewer" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/kubernetesmetadata.publisher"
- サービス アカウントの JSON 鍵ファイルをダウンロードします。 - gcloud iam service-accounts keys create anthos-baremetal-gcr.json \ --project=PROJECT_ID \ --iam-account=anthos-baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com gcloud iam service-accounts keys create connect-agent.json \ --project=PROJECT_ID \ --iam-account=anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com gcloud iam service-accounts keys create connect-register.json \ --project=PROJECT_ID \ --iam-account=anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com gcloud iam service-accounts keys create anthos-baremetal-cloud-ops.json \ --project=PROJECT_ID \ --iam-account=anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com
Cloud Storage バケットにアクセスできるサービス アカウントを構成する
Cloud Storage へのアクセスには、サービス アカウントとキーファイルを使用します。このサービス アカウントを使用して、クラスタのスナップショットを Cloud Storage バケットに自動的にアップロードできます。または、GDC の VM ランタイムで使用する Cloud Storage バケットから仮想マシン(VM)イメージをインポートすることもできます。
サービス アカウントとキーファイルを作成するには、次の操作を行います。
- baremetalディレクトリ内にいることを確認します。
- まだログインしていない場合は、Google Cloud CLI にログインします。 - gcloud auth login
- Google Cloud プロジェクトで、Cloud Storage API( - storage.googleapis.com)がまだ有効になっていない場合は有効にします。- gcloud services enable --project=PROJECT_ID \ storage.googleapis.com
- クラスタが Cloud Storage バケットにアクセスするために使用できるサービス アカウントを作成します。 - gcloud iam service-accounts create SA_NAME \ --project=PROJECT_ID- SA_NAMEは、新しいサービス アカウントの名前に置き換えます。このサービス アカウントの名前は、作成時にプロビジョニングされたメールアドレスに- SA_NAME@PROJECT_ID.iam.gserviceaccount.comの形式で表示されます。
- 以下の権限を持つカスタムロールを作成します。 - storage.buckets.create
- storage.buckets.get
- storage.buckets.list
- storage.objects.create
- resourcemanager.projects.get
 - gcloud iam roles create ROLE_ID \ --permissions=storage.buckets.create,storage.buckets.get,storage.buckets.list,storage.objects.create \ --project=PROJECT_ID- ROLE_IDは、新しいカスタムロールの名前(- snapshotUploadなど)に置き換えます。このカスタムロールの完全なパスの形式は- projects/PROJECT_ID/roles/ROLE_IDです。
- サービス アカウントにポリシー バインディングを追加します。 - gcloud iam service-accounts add-iam-policy-binding SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role='projects/PROJECT_ID/roles/ROLE_ID'
- サービス アカウントの JSON キーファイルをダウンロードします。 - gcloud iam service-accounts keys create OUTPUT_FILE \ --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
クラスタ スナップショットを作成して Cloud Storage バケットに自動的にアップロードする方法について詳しくは、クラスタの問題の診断に役立つスナップショットの作成をご覧ください。
Cloud Storage から VM イメージをインポートする方法の詳細については、認証情報を作成して使用し、GDC 上の VM ランタイム用 Cloud Storage からイメージをインポートするをご覧ください。