このドキュメントでは、Anthos clusters on VMware(GKE On-Prem)実装でクラスタを作成するために必要な Google Cloud サービス アカウントとキーについて説明します。
ここでは手順全体を詳しく解説します。サービス アカウントの使用方法については、サービス アカウント(クイックスタート)をご覧ください。
始める前に
サービス アカウントの概要
管理者クラスタとユーザー クラスタを作成する前に、次のサービス アカウントが必要です。
- コンポーネント アクセス サービス アカウント
- Connect-register サービス アカウント
- logging-monitoring サービス アカウント
有効にする機能によっては、オプションのサービス アカウントも必要になる場合があります。
サービス アカウントと Google Cloud プロジェクトについて
サービス アカウントは、作成時に Google Cloud プロジェクトに関連付けます。この Google Cloud プロジェクトをサービス アカウントの親プロジェクトといいます。
サービス アカウントの親プロジェクトは、そのサービス アカウントのメールアドレスで確認できます。たとえば、logger
という名前のサービス アカウントのメールアドレスを次に示します。親プロジェクトは alice-123
です。
logger@alice-123.iam.gserviceaccount.com
Identity and Access Management(IAM)のロールをサービス アカウントに付与する場合は、特定の Google Cloud プロジェクトのサービス アカウントにロールを付与します。これは、リソースの ID にロールを付与するの一般的なパターンに従っています。
たとえば、bob-456
プロジェクトの logger@alice-123.iam.gserviceaccount.com
サービス アカウントに bigquery.dataEditor
ロールを付与できます。この場合、サービス アカウントが ID で、Google Cloud プロジェクトがリソースです。
重要なことは、サービス アカウントの親でない Google Cloud プロジェクトのサービス アカウントにロールを付与できる点です。
サービス アカウントにロールを付与する権限
各サービス アカウントに、関連する Google Cloud プロジェクトに対する特定のロールを付与する必要があります。たとえば、connect-register サービス アカウントには、フリートホスト プロジェクトの gkehub.admin
ロールが付与されている必要があります。
Google Cloud プロジェクトに対するロールを付与するには、プロジェクトに対する特定の権限が必要です。詳しくは、ロールについての roles/resourcemanager.projectIamAdmin
をご覧ください。
必要な権限があれば、自分でロールを付与できます。それ以外の場合は、組織内の別のユーザーがロールを付与する必要があります。
gkeadm
を使用してサービス アカウントを自動的に作成する
このページでは、サービス アカウントを手動で作成して、サービス アカウントにロールを付与する方法を説明します。手動で行う代わりに、管理者ワークステーションの作成時に gkeadm
でサービス アカウントを作成してロールを付与することもできます。詳細については、管理ワークステーションの作成をご覧ください。
コンポーネント アクセス サービス アカウント
Anthos clusters on VMware は、このサービス アカウントを使用して Container Registry からクラスタ コンポーネントをダウンロードします。
コンポーネント アクセス サービス アカウントを作成するには、次のコマンドを実行します。
gcloud iam service-accounts create component-access-sa \ --display-name "Component Access Service Account" \ --project PROJECT_ID
PROJECT_ID は、サービス アカウントの親プロジェクトとして使用する、Google Cloud プロジェクトの ID に置き換えます。
コンポーネント アクセス サービス アカウントの JSON キーを作成するには、次のコマンドを実行します。
gcloud iam service-accounts keys create component-access-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
SERVICE_ACCOUNT_EMAIL は、コンポーネント アクセス サービス アカウントのメールアドレスに置き換えます。
コンポーネント アクセス サービス アカウントにロールを付与する
管理クラスタとユーザー クラスタの構成ファイルには、プロジェクト ID を指定するフィールドが複数あります。
管理クラスタの構成ファイル:
stackdriver: projectID: "" ... cloudAuditLogging: projectid: ""
ユーザー クラスタの構成ファイル:
stackdriver: projectID: "" ... gkeConnect: projectID: "" ... usageMetering: bigQueryProjectID: "" ... cloudAuditLogging: projectid: ""
構成ファイル内のプロジェクト ID は一意である必要はありません。たとえば、gkeConnect.projectID
が cloudAuditLogging.projectID
と同じ場合もあります。実際、構成ファイル内のすべてのプロジェクト ID が同一であることもあります。
コンポーネント アクセス サービス アカウントには、各 Google Cloud プロジェクトに対して管理者アカウントとユーザー クラスタの構成ファイルで指定された次の IAM ロールが付与されている必要があります。これらのロールは、Anthos clusters on VMware がプリフライト チェックを実行するために必要です。
serviceusage.serviceUsageViewer
iam.roleViewer
iam.serviceAccountViewer
クラスタ構成ファイルで指定した Google Cloud プロジェクトごとに、次のコマンドを実行して、必要なロールをコンポーネント アクセス サービス アカウントに付与します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/iam.roleViewer"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/iam.serviceAccountViewer"
以下を置き換えます。
PROJECT_ID: 構成ファイルで指定したいずれかの Google Cloud プロジェクトの ID。
SERVICE_ACCOUNT_EMAIL: コンポーネント アクセス サービス アカウントのメールアドレス。
connect-register サービス アカウント
Anthos clusters on VMware は、このサービス アカウントを使用してユーザー クラスタを Google Cloud に登録します。
connect-register サービス アカウントを作成するには、次のコマンドを実行します。
gcloud iam service-accounts create connect-register-sa \ --project PROJECT_ID
PROJECT_ID は、connect-register サービス アカウントの親に設定する Google Cloud プロジェクトの ID に置き換えます。
connect-register サービス アカウントの JSON キーを作成するには、次のコマンドを実行します。
gcloud iam service-accounts keys create connect-register-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
SERVICE_ACCOUNT_EMAIL は、connect-register サービス アカウントのメールアドレスに置き換えます。
connect-register サービス アカウントには、フリートホスト プロジェクトの gkehub.admin
ロールを付与する必要があります。これは、クラスタを表示および管理する Google Cloud プロジェクトです。
connect-register サービス アカウントに gkehub.admin
ロールを付与します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/gkehub.admin"
PROJECT_ID は、フリートホスト プロジェクトの ID に置き換えます。
logging-monitoring サービス アカウント
Anthos clusters on VMware は、このサービス アカウントを使用して、クラスタから Cloud Logging と Cloud Monitoring にログと指標をエクスポートします。
logging-monitoring サービス アカウントを作成するには、次のコマンドを実行します。
gcloud iam service-accounts create logging-monitoring-sa \ --project=PROJECT_ID
PROJECT_ID を、logging-monitoring サービス アカウントの親に設定する Google Cloud プロジェクトの ID に置き換えます。
logging-monitoring サービス アカウントの JSON キーを作成するには、次のコマンドを実行します。
gcloud iam service-accounts keys create logging-monitoring-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
SERVICE_ACCOUNT_EMAIL は、logging-monitoring サービス アカウントのメールアドレスに置き換えます。
ロギング モニタリング サービス アカウントには、logging-monitoring プロジェクトに対する次のロールを付与する必要があります。これは、クラスタのログを表示する Google Cloud プロジェクトです。
stackdriver.resourceMetadata.writer
opsconfigmonitoring.resourceMetadata.writer
logging.logWriter
monitoring.metricWriter
monitoring.dashboardEditor
必要なロールを logging-monitoring サービス アカウントに付与するには、次のコマンドを実行します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/stackdriver.resourceMetadata.writer"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/opsconfigmonitoring.resourceMetadata.writer"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/monitoring.metricWriter"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/monitoring.dashboardEditor"
PROJECT_ID は、logging-monitoring プロジェクトの ID に置き換えます。
オプションのサービス アカウント
使用状況測定サービス アカウント
Anthos clusters on VMware は、このサービス アカウントを使用して BigQuery データセットに使用状況データを保存します。
使用状況測定サービス アカウントを作成するには、次のコマンドを実行します。
gcloud iam service-accounts create usage-metering-sa \ --project PROJECT_ID
PROJECT_ID は、使用状況測定サービス アカウントの親に設定する Google Cloud プロジェクトの ID に置き換えます。
使用状況測定サービス アカウントの JSON キーを作成するには、次のコマンドを実行します。
gcloud iam service-accounts keys create usage-metering-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
SERVICE_ACCOUNT_EMAIL は、使用状況測定サービス アカウントのメールアドレスに置き換えます。
使用状況測定サービス アカウントには、使用状況測定プロジェクトに対する bigquery.dataEditor
ロールが付与されている必要があります。これは、ユーザー クラスタの使用状況データを表示する Google Cloud プロジェクトです。
使用状況測定サービス アカウントに bigquery.dataEditor
ロールを付与します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/bigquery.dataEditor"
PROJECT_ID は、使用量測定プロジェクトの ID に置き換えます。
監査ロギング サービス アカウント
Anthos clusters on VMware は、このサービス アカウントを使用して、クラスタから Kubernetes 監査ログを Cloud Audit Logs に送信します。
監査ロギング サービス アカウントを作成するには、次のコマンドを実行します。
gcloud iam service-accounts create audit-logging-sa \ --project PROJECT_ID
PROJECT_ID は、監査ロギング サービス アカウントの親に設定する Google Cloud プロジェクトの ID に置き換えます。
監査ロギング サービス アカウントの JSON キーを作成するには、次のコマンドを実行します。
gcloud iam service-accounts keys create audit-logging-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
SERVICE_ACCOUNT_EMAIL は、監査ロギング サービス アカウントのメールアドレスに置き換えます。
監査ロギング サービス アカウントにロールを付与する必要はありません。
Binary Authorization サービス アカウント
Anthos clusters on VMware は、このサービス アカウントを使用して Binary Authorization API を呼び出します。
Binary Authorization サービス アカウントの作成については、GKE On-Prem での Binary Authorization をご覧ください。