GKE on Bare Metal を実行するには、インストール、ハードウェア、オペレーティング システムの前提条件に加えて、Google Cloud プロジェクト、API、サービス アカウントを構成し、セットアップすることが必要です。
なお、bmctl
コマンドにより、クラスタの作成時にサービス アカウントと API が自動的に有効になりますが、オペレーションをより詳細に制御するために、これらのサービスを手動で設定することもできます。
始める前に
Google Cloud プロジェクトと請求先アカウントを作成します。
インストール時には、次の認証情報を指定する必要があります。
- クラスタノード マシンへのアクセスに必要な秘密 SSH 認証鍵。
root
を使用していない場合は、クラスタのノードマシンのログイン名になります。
GKE on Bare Metal をインストールする前に、必要な認証情報がすべて揃っていることをご確認ください。
gcloud にログインする
gcloud auth application-default
ログインを使用して、ユーザーとして gcloud にログインします。- サービス アカウント管理者
- サービス アカウント キー管理者
- プロジェクト IAM 管理者
- Compute 閲覧者
- Service Usage 管理者
- クラスタ作成に使用する Google Cloud プロジェクト ID を取得します。
gcloud auth application-default login以下で説明する自動 API 有効化とサービス アカウント作成機能を使用するには、プロジェクト オーナーまたは編集者のロールが必要です。次の IAM ロールをユーザーに追加することもできます。
export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILEJSON_KEY_FILE には、サービス アカウントの JSON キーファイルへのパスを指定します。
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/owner
、roles/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 などのワークロード管理機能にアクセスして、クラスタを操作できます。
- Logging と Monitoring を使用して、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 するためのサービス アカウントとキーファイルを作成するには:
baremetal
ディレクトリにダウンロードします。必要なロールを持つ anthos-baremetal-gcr サービス アカウントを作成し、キーファイルをダウンロードします。
次の手順で、
anthos-baremetal-gcr.json
キーファイルをbaremetal
ディレクトリに作成します。サービス アカウントを作成します。
gcloud iam service-accounts create anthos-baremetal-gcr --project=PROJECT_ID
サービス アカウントの JSON キーファイルをダウンロードします。
gcloud iam service-accounts keys create anthos-baremetal-gcr.json \ --project=PROJECT_ID \ --iam-account=anthos-baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
コネクトで使用するサービス アカウントを構成する
サービス アカウントとキーファイルを作成するには:
baremetal
ディレクトリ内にいることを確認します。- クラウド プロジェクトで必要な Google サービスを有効にします。
- 必要なロールを持つ anthos-baremetal-connect サービス アカウントを作成し、キーファイルをダウンロードします。次の手順で、
anthos-baremetal-connect.json
キーファイルをbaremetal
ディレクトリに作成します。- サービス アカウントの作成
- gkehub.connect ロールを付与します。
- サービス アカウントの JSON キーファイルをダウンロードします。
gcloud iam service-accounts create anthos-baremetal-connect --project=PROJECT_ID
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/gkehub.connect"
gcloud iam service-accounts keys create connect-agent.json \ --project=PROJECT_ID \ --iam-account=anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com
- 必要なロールを持つ anthos-baremetal-register サービス アカウントを作成し、キーファイルをダウンロードします。次の手順で、
anthos-baremetal-register.json
キーファイルをbaremetal
ディレクトリに作成します。- サービス アカウントの作成
- gkehub.admin ロールを付与します。
- サービス アカウントの JSON キーファイルをダウンロードします。 anthos-baremetal-register
gcloud iam service-accounts create anthos-baremetal-register \ --project=PROJECT_ID
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/gkehub.admin
gcloud iam service-accounts keys create connect-register.json \ --project=PROJECT_ID \ --iam-account=anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com
gcloud services enable --project=PROJECT_ID \ gkeconnect.googleapis.com \ gkehub.googleapis.com \ connectgateway.googleapis.com \ cloudresourcemanager.googleapis.com \ anthos.googleapis.com
ログの監査とプロジェクトのモニタリングを行うようにサービス アカウントを構成する
Logging と Monitoring 用のサービス アカウントとキーファイルを作成するには:
baremetal
ディレクトリ内にいることを確認します。- クラウド プロジェクトで必要な Google サービスを有効にします。
- 必要なロールを持つ anthos-baremetal-cloud-ops サービス アカウントを作成し、キーファイルをダウンロードします。次の手順で、
anthos-baremetal-cloud-ops.json
キーファイルをbaremetal
ディレクトリに作成します。 - サービス アカウントの作成
- logging.logWriter ロールの付与
- monitoring.metricWriter ロールの付与
- roles/stackdriver.resourceMetadata.writer ロールの付与
- roles/opsconfigmonitoring.resourceMetadata.writer ロールの付与
- roles/monitoring.dashboardEditor ロールの付与
- サービス アカウントの JSON キーファイルをダウンロードします。
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
gcloud iam service-accounts create anthos-baremetal-cloud-ops \ --project=PROJECT_ID
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 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)イメージをインポートすることもできます。
サービス アカウントとキーファイルを作成するには、次の操作を行います。
baremetal
ディレクトリ内にいることを確認します。- クラウド プロジェクトで必要な Google サービスを有効にします。
- クラスタが Cloud Storage バケットにアクセスするために使用できるサービス アカウントを作成します。
- サービス アカウントがデータを Cloud Storage バケットにアップロードすることや、VM イメージをインポートすることができるように、サービス アカウントに
storage.admin
ロールを付与します。 - サービス アカウントの JSON キーファイルをダウンロードします。
gcloud services enable --project=PROJECT_ID \ storage.googleapis.com
gcloud iam service-accounts create anthos-baremetal-storage \ --project=PROJECT_ID
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-storage@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/storage.admin"
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 からイメージをインポートするをご覧ください。