Google Cloud リソースの設定

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

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

始める前に

Google Cloud プロジェクト請求先アカウントを作成します。

インストール時には、次の認証情報を指定する必要があります。

  • クラスタノード マシンへのアクセスに必要な秘密 SSH 認証鍵。
  • root を使用していない場合は、クラスタのノードマシンのログイン名になります。

ベアメタル版 Anthos クラスタをインストールする前に、必要な認証情報がすべて揃っていることをご確認ください。

gcloud にログインする

  1. gcloud auth application-default ログインを使用して、ユーザーとして gcloud にログインします。
  2. gcloud auth application-default login
    
    以下で説明する自動 API 有効化とサービス アカウント作成機能を使用するには、プロジェクト オーナーまたは編集者のロールが必要です。次の IAM ロールをユーザーに追加することもできます。
    • サービス アカウント管理者
    • サービス アカウント キー管理者
    • プロジェクト IAM 管理者
    • Compute 閲覧者
    • Service Usage 管理者
    また、これらのロールを持つサービス アカウントがすでにある場合は、次のコマンドを実行します。
    export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILE
    
    JSON_KEY_FILE には、サービス アカウントの JSON キーファイルへのパスを指定します。
  3. クラスタ作成に使用する Google CCloud プロジェクト ID を取得します。
  4. export CLOUD_PROJECT_ID=$(gcloud config get-value project)
    

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

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

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

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

gcloud config set project PROJECT_ID

API を有効にする

Anthos clusters on bare metal をインストールする前に、関連する Google Cloud プロジェクトで複数の API を有効にする必要があります。プロジェクトで API を有効にするには、Cloud プロジェクトで roles/ownerroles/editor、または roles/serviceusage.serviceUsageAdmin のいずれかのロールが付与されている必要があります。

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

必要な IAM 権限を取得したら、次の API を有効にします。

  • anthos.googleapis.com
  • anthosaudit.googleapis.com
  • anthosgke.googleapis.com
  • cloudresourcemanager.googleapis.com
  • container.googleapis.com
  • gkeconnect.googleapis.com
  • gkehub.googleapis.com
  • iam.googleapis.com
  • logging.googleapis.com
  • monitoring.googleapis.com
  • opsconfigmonitoring.googleapis.com
  • serviceusage.googleapis.com
  • stackdriver.googleapis.com

また、bmctl ツールを使用して、これらのサービスを有効にすることもできます。

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

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

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

本番環境では、目的ごとに別のサービス アカウントを作成する必要があります。Anthos clusters on bare metal には、目的に応じて、次の別の種類の Google Cloud サービス アカウントが必要です。

  • Container Registry(gcr.io)にアクセスする際、特別なロールは必要ありません。
  • フリートにクラスタを登録するには、Google Cloud プロジェクトのサービス アカウントに roles/gkehub.admin IAM ロールを付与します。
  • フリートに接続するには、Google Cloud プロジェクトのサービス アカウントに roles/gkehub.connect IAM ロールを付与します。
  • Google Cloud のオペレーション スイートにログと指標を送信するには、Google Cloud プロジェクトのサービス アカウントに次の IAM ロールを付与します。

    • roles/logging.logWriter
    • roles/monitoring.metricWriter
    • roles/stackdriver.resourceMetadata.writer
    • roles/monitoring.dashboardEditor
    • roles/opsconfigmonitoring.resourceMetadata.writer

ベアメタル版 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 サービス アカウントを作成し、キーファイルをダウンロードします。次の手順で、connect-register.json キーファイルを baremetal ディレクトリに作成します。
    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 にアクセスするには、サービス アカウントとキーファイルを使用します。このサービス アカウントを使用して、クラスタのスナップショットを Cloud Storage バケットに自動的にアップロードできます。または、Anthos VM ランタイムで使用する Cloud Storage バケットから仮想マシン(VM)イメージをインポートすることもできます。

サービス アカウントとキーファイルを作成するには、次の手順を行います。

  1. baremetal ディレクトリ内にいることを確認します。
  2. クラウド プロジェクトで必要な Google サービスを有効にします。
  3. gcloud services enable --project=PROJECT_ID \
        storage.googleapis.com
  4. クラスタが Cloud Storage バケットへのアクセスに使用できるサービス アカウントを作成します。
  5. gcloud iam service-accounts create storage-agent-svc-account \
        --project=PROJECT_ID
  6. サービス アカウントがデータを Cloud Storage バケットにアップロードすることや、VM イメージをインポートすることができるように、サービス アカウントに 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 バケットに自動的にアップロードする方法について詳しくは、クラスタの問題の診断に役立つスナップショットの作成をご覧ください。

Cloud Storage から VM イメージをインポートする方法の詳細については、認証情報を作成して使用し、Cloud Storage for Anthos VM ランタイムからイメージをインポートするをご覧ください。