Google Cloud リソースの設定

GKE on Bare Metal を実行するには、インストール、ハードウェア、オペレーティング システムの前提条件に加えて、Google Cloud プロジェクト、API、サービス アカウントを構成し、セットアップすることが必要です。

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

始める前に

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

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

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

GKE on Bare Metal をインストールする前に、必要な認証情報がすべて揃っていることをご確認ください。

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 Cloud プロジェクト ID を取得します。
  4. export CLOUD_PROJECT_ID=$(gcloud config get-value project)
    

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

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

GKE on Bare Metal を使用するには、プロジェクトで owner または editor のロールが必要です。

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

gcloud config set project PROJECT_ID

API を有効にする

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

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

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

  • anthos.googleapis.com
  • anthosaudit.googleapis.com
  • anthosgke.googleapis.com
  • cloudresourcemanager.googleapis.com
  • connectgateway.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 ツールを使用して、これらのサービスを有効にすることもできます。

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

GKE on Bare Metal の bmctl コマンドを使用すると、クラスタの作成時に Google サービス アカウントと API を自動的に設定できます。

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

本番環境では、目的ごとに別のサービス アカウントを作成する必要があります。GKE 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

GKE on Bare Metal は、クラスタを Google Cloud に接続します。この接続により、次の機能が有効になります。

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

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

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

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

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

コンテナ イメージを pull するためのサービス アカウントを構成する

GKE on Bare Metal コンテナ イメージを pull するためのサービス アカウントとキーファイルを作成するには:

  1. baremetal ディレクトリにダウンロードします。

  2. 必要なロールを持つ anthos-baremetal-gcr サービス アカウントを作成し、キーファイルをダウンロードします。

    次の手順で、anthos-baremetal-gcr.json キーファイルを baremetal ディレクトリに作成します。

    1. サービス アカウントを作成します。

      gcloud iam service-accounts create anthos-baremetal-gcr --project=PROJECT_ID
      
    2. サービス アカウントの JSON キーファイルをダウンロードします。

      gcloud iam service-accounts keys create anthos-baremetal-gcr.json \
          --project=PROJECT_ID \
          --iam-account=anthos-baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
      

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

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

  1. baremetal ディレクトリ内にいることを確認します。
  2. クラウド プロジェクトで必要な Google サービスを有効にします。
  3. gcloud services enable --project=PROJECT_ID \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        connectgateway.googleapis.com \
        cloudresourcemanager.googleapis.com \
        anthos.googleapis.com
  4. 必要なロールを持つ anthos-baremetal-connect サービス アカウントを作成し、キーファイルをダウンロードします。次の手順で、anthos-baremetal-connect.json キーファイルを baremetal ディレクトリに作成します。
    1. サービス アカウントの作成
    2. gcloud iam service-accounts create anthos-baremetal-connect --project=PROJECT_ID
    3. gkehub.connect ロールを付与します。
    4. gcloud projects add-iam-policy-binding  PROJECT_ID \
          --member="serviceAccount:anthos-baremetal-connect@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=anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com
      
  5. 必要なロールを持つ anthos-baremetal-register サービス アカウントを作成し、キーファイルをダウンロードします。次の手順で、anthos-baremetal-register.json キーファイルを baremetal ディレクトリに作成します。
    1. サービス アカウントの作成
    2. gcloud iam service-accounts create anthos-baremetal-register \
          --project=PROJECT_ID
    3. gkehub.admin ロールを付与します。
    4. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com" \
          --role=roles/gkehub.admin
    5. サービス アカウントの JSON キーファイルをダウンロードします。
    6. anthos-baremetal-register
      gcloud iam service-accounts keys create connect-register.json \
          --project=PROJECT_ID \
          --iam-account=anthos-baremetal-register@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 \
        logging.googleapis.com \
        monitoring.googleapis.com \
        opsconfigmonitoring.googleapis.com \
        serviceusage.googleapis.com \
        stackdriver.googleapis.com
    
  4. 必要なロールを持つ anthos-baremetal-cloud-ops サービス アカウントを作成し、キーファイルをダウンロードします。次の手順で、anthos-baremetal-cloud-ops.json キーファイルを baremetal ディレクトリに作成します。
    1. サービス アカウントの作成
    2. gcloud iam service-accounts create anthos-baremetal-cloud-ops \
          --project=PROJECT_ID
      
    3. logging.logWriter ロールの付与
    4. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/logging.logWriter"
      
    5. monitoring.metricWriter ロールの付与
    6. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:anthos-baremetal-cloud-ops@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:anthos-baremetal-cloud-ops@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:anthos-baremetal-cloud-ops@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:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/monitoring.dashboardEditor"
      
    13. サービス アカウントの JSON キーファイルをダウンロードします。
    14. 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 バケットに自動的にアップロードできます。または、Google Distributed Cloud の 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 anthos-baremetal-storage \
        --project=PROJECT_ID
  6. サービス アカウントがデータを Cloud Storage バケットにアップロードすることや、VM イメージをインポートすることができるように、サービス アカウントに storage.admin ロールを付与します。
  7. gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-storage@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/storage.admin"
    
  8. サービス アカウントの JSON キーファイルをダウンロードします。
  9. gcloud iam service-accounts keys create anthos-baremetal-storage.json \
        --iam-account=anthos-baremetal-storage@PROJECT_ID.iam.gserviceaccount.com

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

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