一般的な前提条件

フリートの作成の概要で確認したとおり、VMware 上ベアメタル上のオンプレミス GKE クラスタ、マルチクラウド クラスタ(AWS と Azure の両方)が、クラスタの作成時に自動的にプロジェクト フリートに登録されます。ただし、Google Cloud の GKE クラスタとサードパーティの Kubernetes クラスタ(接続されたクラスタ)は、手動で登録してフリートに加える必要があります。さまざまな登録オプションの詳細については、フリート作成の概要をご覧ください。

このページでは、任意の Kubernetes クラスタを Google Cloud フリートに手動で登録するための前提条件と要件について説明します。また、Google Cloud 上の GKE クラスタと接続されたクラスタには、特定の個別の要件もあります。このガイドを完了したら、登録するクラスタタイプに応じた手順に沿います。

コマンドライン ツールをインストールする

以下のコマンドライン ツールは、必ずインストールします。Google Cloud を操作するシェル環境として Cloud Shell を使用する場合は、これらのツールがインストールされます。

Google Cloud CLI をインストールする

Google Cloud CLI は Google Cloud へのコマンドライン インターフェース(CLI)です。クラスタを登録するには、Google Cloud CLI を使用するか、クラスタの種類に応じて Terraform や Google Cloud コンソールなどの他のツールを使用します。ただし、クラスタ登録に使用しない場合でも、gcloud は、このガイドの他の設定手順の多くで必須、または役に立ちます。

  1. それをまだインストールしていない場合は、インストール手順に従って Google Cloud CLI をインストールします。Google Cloud CLI の最新バージョンを使用することをおすすめします。クラスタを登録するにはバージョン 361.0.0 以降が必要です。また、GKE にレガシー以外の登録コマンドを使用する場合は、アルファ版またはベータ版のコンポーネントがインストールされている状態でバージョン 423.0.0 以降が必要です。

  2. 次のコマンドを実行して、Google Cloud にログインします。

    gcloud auth login
  3. (省略可)アルファ版またはベータ版の機能を試す予定がある場合は、gcloud beta コンポーネントがインストールされていることを確認します。

     gcloud components install beta 

kubectl をインストールする

クラスタの登録に kubectl は必須ではありませんが、クラスタを登録するユーザー(クラスタ オーナーでない場合)に必要なロールベース アクセス制御(RBAC)権限を付与するためと、プラットフォーム特有の他の設定を行うために必要です。kubectl バージョンは、Google Kubernetes Engine(GKE)のサポート対象の最小の Kubernetes バージョン以上である必要があります。

Google Cloud CLIkubectl をインストールすることをおすすめします。

kubectl のバージョンを確認するには、次のコマンドを実行します。

kubectl version

クライアント バージョンは、出力の gitVersion で示されます。

kubectl をインストールするには:

gcloud components install kubectl

API を有効にする

フリートホスト プロジェクトで次の API を有効にする必要があります。

  • container.googleapis.com
  • gkeconnect.googleapis.com
  • gkehub.googleapis.com(Fleet API とも呼ばれます)。これは、クラスタの登録とフリート メンバーシップを処理する Google Cloud サービスです。
  • cloudresourcemanager.googleapis.com

登録するクラスタ内の Pod は、直接または構成されたプロキシ サーバーを使用して、googleapis.com アドレスと gkeconnect.googleapis.com アドレスに到達できる必要があります。

登録のために Workload Identity を有効にする場合は、次の API も有効にする必要があります。

  • iam.googleapis.com

プロジェクト オーナー以外のユーザーが API を有効にするには、対象ユーザーに serviceusage.services.enable の権限が付与されている必要があります。

gcloud

こうした API を有効にするには、次のコマンドを実行します。

gcloud services enable \
   --project=FLEET_HOST_PROJECT_ID \
   container.googleapis.com \
   gkeconnect.googleapis.com \
   gkehub.googleapis.com \
   cloudresourcemanager.googleapis.com \
   iam.googleapis.com

ここで

  • FLEET_HOST_PROJECT_ID は、クラスタを登録する Google Cloud プロジェクト ID です。この値の確認方法をご覧ください。

フリートの Workload Identity を有効にしない場合は、iam.googleapis.com を省略できます。

プロジェクトですでに有効にしている API を一覧表示するには、Service Usage のドキュメントにあるサービスの一覧表示の手順に沿って操作してください。

アクセス権を付与する

クラスタを登録するための適切なアクセス権を付与されていることを確認します。クラスタ登録には、フリートにクラスタを登録する権限と、クラスタ自体に対する管理者権限の両方が必要です。

クラスタ登録権限を付与する

クラスタを登録するには、フリート ホスト プロジェクトでクラスタを登録するための IAM 権限が必要です。フリート ホスト プロジェクトに roles/owner がある場合、これは自動的に付与され、すべての登録タスクを完了するのに必要なすべてのアクセス権が付与されています。

プロジェクトに roles/owner がない場合は、クラスタを Google に接続する前に特定の IAM ロールが付与される必要があります。

  • 認証用のフリート Workload Identity を使用してクラスタを Google に登録するには、次の IAM ロールのみが必要です。

    • roles/gkehub.admin
  • Google Cloud 以外の一部の登録オプションでは、クラスタが Workload Identity の代わりに Google への認証に使用するサービス アカウントを設定する必要があります。クラスタを登録してこのサービス アカウントを管理するには、次の一連のロールが必要です。

    • roles/gkehub.admin
    • roles/iam.serviceAccountAdmin
    • roles/iam.serviceAccountKeyAdmin
    • roles/resourcemanager.projectIamAdmin

gkehub ロールに含まれる詳細な権限の一覧については、IAM ロールを接続するをご覧ください。

gcloud

ユーザーに IAM ロールを付与するには、次のコマンドを実行します。

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
   --member user:GCP_EMAIL_ADDRESS \
   --role=ROLE

ここで

  • FLEET_HOST_PROJECT_ID は、クラスタを登録する Google Cloud プロジェクト ID です。この値の確認方法をご覧ください。
  • GCP_EMAIL_ADDRESS は、ユーザーが Google Cloud にログインするのに使用するアカウントです。
  • ROLE は、付与する IAM ロール(roles/gkehub.admin など)です。

IAM ロールを付与する方法については、IAM ドキュメントのリソースへのアクセス権の付与、変更、取り消しをご覧ください。

クラスタ管理者の権限を付与する

クラスタの登録に必要な権限に加えて、クラスタ自体に対する管理者権限も必要です。クラスタが存在する場所に応じて、IAM ロールまたは Kubernetes ロールベースのアクセス制御(RBAC)を使用してこの権限を割り当てることができます。

Google Cloud 上の GKE クラスタ

Google Cloud の GKE クラスタの場合のみ、次の IAM ロールを追加して(まだ作成していない場合)、クラスタの管理者権限を取得します(クラスタを作成した場合、ユーザー アカウントに付与される可能性があります)。

  • roles/container.admin

この IAM ロールには、Kubernetes RBAC cluster-admin ロールが含まれています。他のクラスタ環境の場合は、次のセクションで説明するように、kubectl を使用してこの RBAC ロールを付与する必要があります。GKE における IAM ロールと RBAC ロールの関係の詳細については、GKE のドキュメントをご覧ください。

Google Cloud の外部にあるクラスタ

Google Cloud 外のサードパーティのクラスタの場合は、クラスタを登録するユーザーに Kubernetes RBAC の cluster-admin ロールが付与されていることを確認します。

kubectl

クラスタを作成すると、通常はこのロールが付与されます。次のコマンドを実行して確認できます。

kubectl auth can-i '*' '*' --all-namespaces

自身もしくは他のユーザーがこの役割を必要とする場合は、クラスタ内に ClusterRoleBinding リソースを作成します。

kubectl create clusterrolebinding BINDING_NAME --clusterrole cluster-admin --user USER

ここで

  • BINDING_NAME は、ClusterRoleBinding リソース用に選択した名前です。
  • USER は、クラスタに対する認証に使用される ID です。

次のステップ

登録するクラスタタイプの前提条件ガイドに従ってください。