Google サービスとサービス アカウントの有効化

インストール、ハードウェア、オペレーティング システムの前提条件を満たすのに加えて、ベアメタル版 Anthos クラスタを実行するための Google Cloud プロジェクト、API、サービス アカウントを設定、セットアップする必要もあります。

なお、bmctl コマンドにより、クラスタの作成時にサービス アカウントと API が自動的に有効になりますが、オペレーションをより詳細に制御するために、これらのサービスを手動で設定することもできます。

API を有効にする

プロジェクトで API を有効にするには、アカウントに roles/ownerroles/editorroles/serviceusage.serviceUsageAdmin のいずれかのロールが割り当てられている必要があります。

詳細については、単一ロールの付与をご覧ください。

アカウントに適切なロールが割り当てられたら、Google Cloud Console で API を有効にできます。また、Cloud Shell か Google Cloud CLI で次のコマンドを実行して、API を有効にすることもできます。

gcloud services enable --project=PROJECT_ID \
    servicemanagement.googleapis.com \
    servicecontrol.googleapis.com

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

サービス アカウントの構成に加えて、デフォルトの project id を設定できます。

ベアメタル版 Anthos クラスタについては、プロジェクトで owner または editor のロールが必要です。

デフォルト プロジェクトを設定するには、次のコマンドを実行します。このとき PROJECT_ID を Google Cloud プロジェクト ID に置き換えます。

gcloud config set project PROJECT_ID

サービス アカウントの手動での構成

ベアメタル版 Anthos クラスタの bmctl コマンドでは、クラスタの作成時に Google サービス アカウントと API を自動的に設定できます。

ただし、システムを詳細に管理したい場合や、サービス、アカウント、プロジェクトのデフォルト設定でクラスタ作成を効率化する場合は、これらのサービスを手動で設定できます。

ベアメタル版 Anthos クラスタは、クラスタを Google Cloud に接続します。この接続により、次の機能が有効になります。

  • コネクトを使用して、ベアメタル クラスタを Google Cloud に接続します。これにより、クラスタと、統合されたユーザー インターフェースである Cloud Console などのワークロード管理機能にアクセスして、クラスタを操作できます。
  • LoggingMonitoring を使用して、Cloud Console にクラスタのログと指標を表示します。
  • Cloud Storage バケットにクラスタ スナップショットを自動アップロードします。

アクセスを手動で構成するプロセスは次のとおりです。

  • クラウド プロジェクトで必要な Google サービスを有効にします。
  • 必要なロールを持つ次のサービス アカウントを作成する。
    • connect-agent サービス アカウント: コネクトでこのサービス アカウントを使用してクラスタと Google Cloud の間の接続を維持します。
    • connect-registe サービス アカウント: コネクトでこのサービス アカウントを使用して、Google Cloud にクラスタを登録します。
    • logging-monitorin サービス アカウント: コネクトでこのサービス アカウントを使用して、クラスタから Logging と Monitoring にログと指標をエクスポートします。
    • storage-agent サービス アカウント: bmctl でこのサービス アカウントを使用して、クラスタのスナップショットを Cloud Storage に自動的に保存します。

  • 各サービス アカウントの JSON キーファイルをダウンロードします。

その後、適切なクラスタ構成ファイルに JSON キーファイルへの参照を追加します。詳しくは、クラスタの作成: 概要をご覧ください。

コネクトで使用するサービス アカウントを構成する

サービス アカウントとキーファイルを作成するには:

  1. baremetal ディレクトリ内にいることを確認します。
  2. クラウド プロジェクトで必要な Google サービスを有効にします。
  3. gcloud services enable --project=PROJECT_ID \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        cloudresourcemanager.googleapis.com \
        anthos.googleapis.com
  4. 必要なロールを持つ connect-agent サービス アカウントを作成し、キーファイルをダウンロードします。次の手順で、connect-agent.json キーファイルを baremetal ディレクトリに作成します。
    1. サービス アカウントの作成
    2. gcloud iam service-accounts create connect-agent-svc-account --project=PROJECT_ID
    3. gkehub.connect ロールを付与します。
    4. gcloud projects add-iam-policy-binding  PROJECT_ID \
          --member="serviceAccount:connect-agent-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/gkehub.connect"
    5. サービス アカウントの JSON キーファイルをダウンロードします。
    6. gcloud iam service-accounts keys create connect-agent.json \
          --project=PROJECT_ID \
          --iam-account=connect-agent-svc-account@PROJECT_ID.iam.gserviceaccount.com
      
  5. 必要なロールを持つ connect-register サービス アカウントを作成し、キーファイルをダウンロードします。次の手順で、baremetal ディレクトリに connect-register.json キーファイルを作成します。
    1. サービス アカウントの作成
    2. gcloud iam service-accounts create connect-register-svc-account \
          --project=PROJECT_ID
    3. gkehub.admin ロールを付与します。
    4. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:connect-register-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role=roles/gkehub.admin
    5. サービス アカウントの JSON キーファイルをダウンロードします。
    6. gcloud iam service-accounts keys create connect-register.json \
          --project=PROJECT_ID \
          --iam-account=connect-register-svc-account@PROJECT_ID.iam.gserviceaccount.com
      

ログの監査とプロジェクトのモニタリングを行うようにサービス アカウントを構成する

Logging と Monitoring 用のサービス アカウントとキーファイルを作成するには:

  1. baremetal ディレクトリ内にいることを確認します。
  2. クラウド プロジェクトで必要な Google サービスを有効にします。
  3. gcloud services enable --project PROJECT_ID \
        anthos.googleapis.com \
        anthosaudit.googleapis.com \
        anthosgke.googleapis.com \
        cloudresourcemanager.googleapis.com \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        serviceusage.googleapis.com \
        stackdriver.googleapis.com \
        monitoring.googleapis.com \
        logging.googleapis.com \
        opsconfigmonitoring.googleapis.com
    
  4. 必要なロールを持つ logging-monitoring サービス アカウントを作成し、キーファイルをダウンロードします。次の手順で、cloud-ops.json キーファイルを baremetal ディレクトリに作成します。
    1. サービス アカウントの作成
    2. gcloud iam service-accounts create logging-monitoring-svc-account \
          --project=PROJECT_ID
      
    3. logging.logWriter ロールの付与
    4. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/logging.logWriter"
      
    5. monitoring.metricWriter ロールの付与
    6. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/monitoring.metricWriter"
      
    7. roles/stackdriver.resourceMetadata.writer ロールの付与
    8. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/stackdriver.resourceMetadata.writer"
      
    9. roles/opsconfigmonitoring.resourceMetadata.writer ロールの付与
    10. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/opsconfigmonitoring.resourceMetadata.writer"
      
    11. roles/monitoring.dashboardEditor ロールの付与
    12. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/monitoring.dashboardEditor"
      
    13. サービス アカウントの JSON キーファイルをダウンロードします。
    14. gcloud iam service-accounts keys create cloud-ops.json \
          --project=PROJECT_ID \
          --iam-account=logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com
      

Cloud Storage バケットにアップロードできるサービス アカウントの構成

クラスタのスナップショットを Cloud Storage バケットに自動的にアップロードできるようにするサービス アカウントとキーファイルを作成するには:

  1. baremetal ディレクトリ内にいることを確認します。
  2. クラウド プロジェクトで必要な Google サービスを有効にします。
  3. gcloud services enable --project=PROJECT_ID \
        storage.googleapis.com
  4. クラスタ スナップショットを Cloud Storage バケットに自動的にアップロードするために、bmctl check cluster --snapshot コマンドが使用するサービス アカウントを作成します。
  5. gcloud iam service-accounts create storage-agent-svc-account \
      --project=PROJECT_ID
  6. サービス アカウントで Cloud Storage バケットにデータをアップロードできるように、サービス アカウントに storage.admin ロールを付与します。
  7. gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:storage-agent-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/storage.admin"
    
  8. サービス アカウントの JSON キーファイルをダウンロードします。
  9. gcloud iam service-accounts keys create storage-agent.json \
        --iam-account=storage-agent-svc-account@PROJECT_ID.iam.gserviceaccount.com

クラスタ スナップショットを作成して Cloud Storage バケットに自動的にアップロードする方法について詳しくは、クラスタの問題の診断に役立つスナップショットの作成をご覧ください。