フリート用のチームを設定する

このページは、チームのフリートの使用量を設定および管理するプラットフォーム管理者を対象としています。フリートチーム管理機能は、GKE Enterprise を有効にしたユーザーのみが使用できます。

このページは、フリートチーム管理の概要をすでにお読みになっていることを前提としています。

チーム設定の概要

チームを設定するには、Google Cloud CLI、Google Cloud コンソール、または Terraform を使用します。

チームを設定する一般的な手順は次のとおりです。

  1. チームアクセスを設定するフリートを選択または作成し、設定を完了するための適切な権限と API があることを確認します。
  2. 推奨(省略可)フリート クラスタで Google グループのアクセス制御を設定します。
  3. チームを構成するユーザーを決定し、それらのユーザーがフリートにアクセスできるようにします。チームには、Google グループ(推奨)や個人アカウントを含めることができます。
  4. チームのチームスコープを作成します。
  5. 1 つ以上の(またはすべての)フリート メンバー クラスタをチームスコープに追加します。
  6. フリートレベルの名前空間を定義し、それらをチームスコープに関連付けます。
  7. RBACRoleBinding リソースを使用して、チームメンバーに新しいスコープへのアクセス権を付与します。
  8. (省略可)Config Sync を使用して、Kubernetes リソースをチームスコープと Namespace に同期します。

これで、チームは Connect Gateway を使用してクラスタにアクセスするための認証情報を取得できます。

Google Cloud CLI を設定する

Google Cloud コンソールを使用してチームスコープを作成した場合でも、依然として gcloud CLI を設定して、必要な API を有効にするなど、フリートを設定するときにいくつかの前提条件を満たすことが必要な場合があります。

  1. Google Cloud CLI のアルファ版コンポーネントを含む、最新バージョンの Google Cloud CLI があることを確認します。フリートチーム管理コマンドを使用するには、バージョン 419.0.0 以降が必要です。

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

    gcloud auth login
    
  3. 選択したフリートのホスト プロジェクトで使用できるように gcloud CLI を初期化するか、次のコマンドを実行してフリート ホスト プロジェクトをデフォルトとして設定します。

    gcloud config set project PROJECT_ID
    

    必要に応じて、次のコマンドで --project フラグを使用して、異なるフリートホスト プロジェクトを指定できます。

フリートを設定する

新しいチームを設定するフリートを選択または作成します。フリートを構成する際に活用できるガイドラインと例については、フリートの例フリートを計画するの他のガイドをご覧ください。

まだフリートが作成されていないプロジェクトに新しい名前付きフリートを作成する場合は、次のコマンドを実行します(Google Cloud CLI を最初に設定してください)。

  gcloud container fleet create \
    --display-name=NAME \
    --project=FLEET_HOST_PROJECT_ID

display-name を指定しない場合、新しいフリートは、フリートホスト プロジェクト名に基づいてデフォルトの表示名で作成されます。

必要な IAM のロール

フリートホスト プロジェクトに roles/owner がない場合は、チームのスコープと名前空間を作成して構成するために roles/gkehub.admin が必要です。プロジェクト オーナーは、次のコマンドを使用してこのロールを付与できます。

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member user:USER_EMAIL_ADDRESS \
    --role='roles/gkehub.admin'

API を有効にする

フリートホスト プロジェクトで、GKE Enterprise API を含むすべての必要な API が有効になっていることを確認します。

gcloud services enable --project=PROJECT_ID \
   gkehub.googleapis.com \
   container.googleapis.com \
   connectgateway.googleapis.com \
   cloudresourcemanager.googleapis.com \
   iam.googleapis.com \
   anthos.googleapis.com

フリートチームの管理を構成してから GKE Enterprise API を無効にした場合、機能の一部が引き続き作動しますが、チームスコープまたはフリートの名前空間の更新または作成ができなくなります。

Google グループを使用して、アクセス制御を行うクラスタを構成する

RBAC を使用して、ユーザーごとにメンバー クラスタをフリートするためのチームのアクセス権を追加のクラスタ構成を行わずに構成することもできますが、チームメンバーには、チームの Google グループのメンバーに基づいてクラスタへのアクセス権を付与することをおすすめします。グループ メンバーシップに基づいて認可すると、アカウントごとに個別の認可を設定する必要がないため、ポリシーの管理が簡素化され監査が容易になります。また、ユーザーがチームに参加した、またはチームから離脱したときに、個別のユーザーを手動でクラスタに追加または削除する必要がなくなります。次のガイドに沿って、チームスコープに割り当てるクラスタで、アクセス制御のために Connect Gateway で Google グループを使用できるようにしてください。

チームメンバーにフリートへのアクセス権を付与する

次に、チームを構成するユーザーを決定または検出し、対象のユーザーがフリートにアクセスできることを確認します。前のセクションで説明したように、Google グループのメンバーシップに基づいてチームメンバーにリソースへのアクセス権を付与することをおすすめしますが、チーム管理では個々のユーザーにアクセス権を付与することもできます。関連する Google グループまたは個人に、フリート クラスタと連携するように適切な Identity and Access Management(IAM)ロールが構成されていることを確認します。

gcloud projects add-iam-policy-binding PROJECT_ID \
   --member=group:TEAM_EMAIL \
   --role=roles/gkehub.viewer

gcloud projects add-iam-policy-binding PROJECT_ID \
   --member=group:TEAM_EMAIL \
   --role=roles/gkehub.gatewayEditor
  • PROJECT_ID はフリート ホスト プロジェクトの ID です。
  • TEAM_EMAIL は、チームの Google グループのメールアドレスです。

これらのコマンドによって、チームメンバーは Google Cloud コンソールですべてのフリート クラスタを表示でき、Connect Gateway を使用して、Google グループベースの認可によりフリート メンバー クラスタにログインします(Google グループの場合のみ)。

新しいチームを設定

次の手順では、チームの新しいチームスコープを作成する方法について説明します。

gcloud

チームスコープの作成

フリートに新しいチームスコープを作成するには、次のコマンドを実行します。ここで、SCOPE_NAME は新しいスコープに選択した一意の識別名です。

gcloud container fleet scopes create SCOPE_NAME

チームスコープにクラスタを追加する

既存のフリート メンバーのみをチームスコープに追加できます。以下の手順は、スコープに追加するクラスタがすでにフリート メンバーであることを前提としています。フリートにクラスタを追加する必要がある場合は、フリートを作成するのクラスタタイプの手順に沿ってクラスタを登録します。前述のように、新しく登録されたクラスタが アクセス制御に Google グループを使用するように構成されていることを確認します。

フリート メンバー クラスタは、フリートホスト プロジェクトの任意の数のチームスコープに追加できます。

チームスコープにクラスタを追加するには、次のコマンドを実行します。

gcloud container fleet memberships bindings create BINDING_NAME \
  --membership MEMBERSHIP_NAME \
  --scope  SCOPE_NAME \
  --location MEMBERSHIP_LOCATION

次のように置き換えます。

  • BINDING_NAME: クラスタとチームスコープ間の関係を表す名前。MEMBERSHIP_NAME-SCOPE_NAME を使用することをおすすめします。
  • MEMBERSHIP_NAME: フリート内のクラスタの固有識別子(通常はクラスタ名)。
  • (省略可)MEMBERSHIP_LOCATION: クラスタのメンバーシップのロケーション。省略した場合、値は global になります。これはクラスタ登録のデフォルト値です。

フリートの名前空間を作成する

チームスコープに名前空間を作成するには、次のコマンドを実行します。

gcloud container fleet scopes namespaces create NAMESPACE_NAME --scope=SCOPE_NAME

次のように置き換えます。

  • NAMESPACE_NAME: フリート内の名前空間に選択した一意の名前。NAMESPACE_NAMEフリートの名前空間の命名制限に抵触していないことを確認します。
  • SCOPE_NAME: 名前空間を使用するチームスコープ。

このコマンドは、チームスコープ内の各クラスタに NAMESPACE_NAME という Kubernetes Namespace を作成します。チームメンバーは、スコープへのアクセス権を付与されると、他の Kubernetes Namespace と同様に NAMESPACE_NAME を使用できます。チームスコープに NAMESPACE_NAME という既存の Kubernetes Namespace がすでにある場合は、新しいフリートの名前空間の一部とみなされます。これは、名前空間のオンボーディングと呼ばれることがあります。

RBAC でチームスコープのアクセス権を付与する

チームメンバーには、RBAC を使用してスコープへのアクセス権を付与できます。次のコマンドを使用して、Google グループにチームスコープへのアクセス権を付与します。

gcloud container fleet scopes rbacrolebindings create BINDING_NAME \
   --scope=SCOPE_NAME \
   --role=ROLE \
   --group=TEAM_EMAIL

次のように置き換えます。

  • BINDING_NAME: このバインディングを表す文字列名。
  • SCOPE_NAME: チームスコープの固有識別子。
  • ROLE: チームメンバーに付与する RBAC ロール。これは、admineditview のいずれかです。
  • TEAM_EMAIL: チームの Google グループのメールアドレス。

個別のユーザーに名前空間へのアクセス権を付与する必要がある場合は、代わりに次のコマンドを実行します。ここで、USER_EMAIL はユーザーの Google ID メールアドレスです。

gcloud container fleet scopes rbacrolebindings create BINDING_NAME \
   --scope=SCOPE_NAME \
   --role=ROLE \
   --user=USER_EMAIL

コンソール

チームスコープの作成

  1. フリートホスト プロジェクトを選択して、Google Cloud コンソールの [チーム] セクションに移動します。

    [チーム] に移動

  2. ページの上部で、[チームスコープを作成] をクリックします。

  3. [チームの基本] ページで、[名前] に、チームスコープの一意の名前を入力します。チームスコープが作成されると、この名前は変更できません。

  4. チームメンバーをスコープに追加するには、[チームメンバーを追加] をクリックします。

    • [タイプ] で、[ユーザー] を選択して個々のチームメンバーを追加するか、[グループ] で Google グループを追加します(推奨)。
    • [ユーザーまたはグループ] にチームメンバーまたはグループのメールアドレスを入力します。
    • [ロール] で、[管理者]、[編集者]、または [閲覧者] を選択して、チームメンバーまたはグループのスコープへのアクセスレベルを指定します。
    • さらにチームメンバーを追加するには、上記の 3 つのステップを繰り返します。
  5. この段階でクラスタと名前空間を追加せずにチームスコープを作成するには、[チームスコープを作成] をクリックします。それ以外の場合は、引き続き次のセクションに進んで、クラスタをスコープに追加します。

チームスコープにクラスタを追加する

クラスタをチームスコープに関連付けるには、クラスタが既存のフリート メンバーである必要があります。フリートにクラスタを追加する必要がある場合は、フリートを作成するのクラスタタイプの手順に沿ってクラスタを登録します。前述のように、新しく登録されたクラスタが アクセス制御に Google グループを使用するように構成されていることを確認します。

フリート メンバー クラスタは、フリートホスト プロジェクトの任意の数のチームスコープに追加できます。これによって、異なるチームが同じクラスタでワークロードを実行できます。

  1. [チームの基本] ページで、チームメンバーをスコープに追加した後、[続行] をクリックします。
  2. [クラスタ] ページで、このチームスコープに関連付けるフリート クラスタを選択できます。[クラスタ] プルダウンで、追加するクラスタのチェックボックスをオンにし、[OK] をクリックします。

フリートの名前空間を作成する

チームメンバーは、他の Kubernetes Namespace と同様にフリートの名前空間を使用できます。フリートの名前空間を作成すると、チームスコープ内のすべてのクラスタに、対応する Kubernetes Namespace が作成されます(まだ存在しない場合)。

  1. [クラスタ] ページで、チームスコープにクラスタを追加したら、[続行] をクリックします。
  2. [名前空間] ページで、[名前空間を追加] をクリックします。
    • [名前] には、フリート内の名前空間で一意の名前、または名前空間をオンボーディングする場合は既存の名前空間の名前を入力します。名前がフリートの名前空間の命名制限に抵触していないことを確認します。
  3. フリートの名前空間をスコープにさらに追加するには、上記のステップを繰り返します。
  4. チームスコープを作成するには、[チームスコープを作成] をクリックします。チームスコープを作成したら、必要に応じて [チーム] セクションでその名前をクリックして、チームスコープを表示、編集できます。

Terraform

このセクションでは、Terraform を使用して新しいチームを設定する方法について説明します。詳細とその他の例については、次のリソースのリファレンス ドキュメントをご覧ください。

チームスコープの作成

チームスコープを作成するには、Terraform 構成で次のブロックを使用します。

  resource "google_gke_hub_scope" "TF_SCOPE_RESOURCE_NAME" {
    scope_id = "SCOPE_NAME"
  }

次のように置き換えます。

  • TF_SCOPE_RESOURCE_NAME: このブロックによって作成された Terraform google_gke_hub_scope リソースを一意に識別するために使用する名前。
  • SCOPE_NAME: チームスコープの一意の識別名。

スコープにクラスタを追加する

既存のフリート メンバーのみをチームスコープに追加できます。フリートにクラスタを追加する必要がある場合は、フリートを作成するのクラスタタイプの手順に沿ってクラスタを登録します。前述のように、新しく登録されたクラスタが アクセス制御に Google グループを使用するように構成されていることを確認します。

チームスコープにクラスタを追加するには、構成で次のブロックを使用します。

  resource "google_gke_hub_membership_binding" "TF_MEMBERSHIP_BINDING_RESOURCE_NAME" {
    membership_binding_id = "BINDING_NAME"
    scope = SCOPE_NAME
    membership_id = MEMBERSHIP_NAME
    location = "MEMBERSHIP_LOCATION"
  }

次のように置き換えます。

  • TF_MEMBERSHIP_BINDING_RESOURCE_NAME: このブロックによって作成された google_gke_hub_membership_binding リソースを識別する名前。
  • BINDING_NAME: クラスタとスコープの関係を表す名前。MEMBERSHIP_NAME-SCOPE_NAME を使用することをおすすめします。
  • SCOPE_NAME: チームスコープの名前。
  • MEMBERSHIP_NAME: フリート内のクラスタの固有識別子(通常はクラスタ名)。
  • MEMBERSHIP_LOCATION: クラスタのメンバーシップのロケーション。

フリートの名前空間を作成する

チームメンバーは、他の Kubernetes Namespace と同様にフリートの名前空間を使用できます。新しい名前空間を作成するか、既存の名前空間をオンボーディングします。フリートの名前空間を作成すると、チームスコープ内のすべてのクラスタに、対応する Kubernetes Namespace が作成されます(まだ存在しない場合)。

フリートの名前空間を作成するには、構成で次のブロックを使用します。

  resource "google_gke_hub_namespace" "TF_NAMESPACE_RESOURCE_NAME" {
    scope_namespace_id = "NAMESPACE_NAME"
    scope_id = SCOPE_NAME
    scope = SCOPE_NAME
  }

次のように置き換えます。

  • TF_NAMESPACE_RESOURCE_NAME: このブロックによって作成された google_gke_hub_namespace リソースを識別する名前。
  • NAMESPACE_NAME: フリートの名前空間に選択した一意の名前。名前がフリートの名前空間の命名制限に抵触していないことを確認します。
  • SCOPE_NAME: フリートの名前空間が作成されるチームスコープの名前。

RBAC を使用してスコープ アクセス権を付与する

チームメンバーには、RBAC を使用してスコープへのアクセス権を付与できます。たとえば、個々のユーザーにチームスコープへのアクセス権を付与する構成を次に示します。

  resource "google_gke_hub_scope_rbac_role_binding" "TF_RBAC_ROLE_BINDING_NAME" {
    scope_rbac_role_binding_id = "BINDING_NAME"
    scope_id = SCOPE_NAME
    user = USER_EMAIL
    role {
      predefined_role = "ROLE"
    }
  }

次のように置き換えます。

  • TF_RBAC_ROLE_BINDING_NAME: このブロックによって作成された google_gke_hub_scope_rbac_role_binding リソースを識別する名前。
  • BINDING_NAME: このバインディングを表す名前。
  • SCOPE_NAME: チームスコープの名前。
  • USER_EMAIL: ユーザーのメールアドレス。
  • ROLE: ユーザーに付与する RBAC ロール。これは、admineditview のいずれかです。

Google グループにチームスコープへのアクセス権を付与するには、上記の構成で user の代わりに group を使用し、チームの Google グループのメールアドレスを使用します。

フリートの名前空間にアクセスする

設定が完了すると、チームメンバーは、関連するクラスタ認証情報を取得して、スコープ内の名前空間にアクセスできます。Connect Gateway を使用してフリート メンバー クラスタの認証情報を取得するには、次のコマンドを実行します。ここで、MEMBERSHIP_NAME はクラスタのフリート メンバーシップ名です。

   gcloud container fleet memberships get-credentials  MEMBERSHIP_NAME

詳細については、Connect Gateway の使用をご覧ください。

チームスコープを管理する

チームスコープを管理するには、次のコマンドを使用します。

gcloud

チームスコープを一覧表示する

フリート内のすべてのスコープを一覧表示するには、次のコマンドを実行します。

gcloud container fleet scopes list

クラスタに関連付けられているすべてのスコープを一覧表示するには、次のコマンドを実行します。

gcloud container fleet memberships bindings list --membership MEMBERSHIP_NAME

チームスコープからクラスタを削除する

スコープからクラスタを削除するには、次のコマンドを実行します。

gcloud container fleet memberships bindings delete BINDING_NAME --membership MEMBERSHIP_NAME

チームスコープを削除する

フリートからスコープを削除するには、次のコマンドを実行します。

gcloud container fleet scopes delete SCOPE_NAME

コンソール

チームスコープを一覧表示する

フリートホスト プロジェクトを選択して、フリート内のすべてのスコープを表示するには、Google Cloud コンソールの [チーム] セクションに移動します。

[チーム] に移動

[チーム] ページには、フリート用に作成されたすべてのチームスコープのリストと、エラーの数やコンテナの再起動などの各スコープのリソース使用率の概要が表示されます。

チームスコープの詳細を表示する

各チームスコープについて、そのスコープに関連付けられたラベル、そのスコープ内のチームメンバー、スコープに関連付けられたログを表示できます。

  1. [チーム] ページで、詳細を表示するチームスコープをクリックします。
  2. [チーム] タブでは、スコープラベルを表示して(ある場合)、スコープに属するチームメンバーを表示できます。
  3. [ログ] タブをクリックして、フリート スコープのログを表示します。

チームスコープでクラスタを追加または削除する

既存のチームスコープでクラスタを追加または削除するには:

  1. Google Cloud コンソールで [チーム] ページに移動します。

    [チーム] に移動

  2. クラスタを追加または削除するチームスコープを選択します。[クラスタ] タブに、現在スコープにバインドされているクラスタの一覧が表示されます。

チームスコープにクラスタを追加するには:

  1. ページの上部にある [クラスタを追加] をクリックします。
  2. [クラスタ] プルダウンで、スコープに追加するクラスタを選択し、[OK] をクリックします。
  3. [チームスコープを更新] をクリックします。

チームスコープからクラスタを削除するには:

  1. [クラスタ] タブを選択すると、現在スコープにバインドされているクラスタのリストが表示されます。
  2. 削除するクラスタの横にあるゴミ箱アイコンをクリックし、[削除] をクリックして削除を確定します。

スコープを削除する

  1. Google Cloud コンソールで [チーム] ページに移動します。

    [チーム] に移動

  2. 削除するチームスコープを選択します。

  3. スコープを削除するには、ページの上部にある [削除] をクリックします。

  4. スコープの名前を入力して削除を確認し、再び [削除] をクリックします。

フリートの名前空間を管理する

gcloud

チームスコープ内の名前空間を管理するには、次のコマンドを使用します。

フリートの名前空間を一覧表示する

スコープで fleet scopes namespaces create を使用して作成されたすべての名前空間を一覧表示するには、次のコマンドを実行します。

gcloud container fleet scopes namespaces list --scope=SCOPE_NAME

フリートの名前空間を削除する

フリートの名前空間を削除するには、次のコマンドを実行します。

gcloud container fleet scopes namespaces delete NAMESPACE_NAME --scope=SCOPE_NAME

フリートの名前空間を削除する際に何が起こるかは、名前空間の追加方法によって異なります。

  • 新しいフリートの名前空間を作成した場合: このコマンドにより、フリートの名前空間が削除されます。また、ワークロードとともに、フリートの名前空間を作成した結果、作成された Kubernetes Namespace も削除されます。
  • 既存の Kubernetes Namespace をオンボーディングした場合: このコマンドによって、フリートの名前空間が削除されます。オンボーディングした元の名前空間は削除されません

コンソール

チームのスコープ内でフリートの名前空間を管理するには:

  1. Google Cloud コンソールで [チーム] ページに移動します。

    [チーム] に移動

  2. フリートの名前空間を管理するチームのスコープを選択します。

フリートの名前空間を一覧表示する

チームスコープで、[名前空間] タブを選択すると、このスコープで作成された名前空間のリストが表示されます。

名前空間の詳細を表示する

フリートの名前空間ごとに、該当する名前空間に関連付けられたラベルと、名前空間でフィルタされたワークロードとログを表示できます。

  1. [名前空間] タブを選択すると、チームスコープで作成されたフリートの名前空間のリストが表示されます。
  2. 詳細を表示するフリートの名前空間をクリックします。
  3. [詳細] タブで、フリートの名前空間とスコープのラベルを確認できます。
    • この名前空間のワークロードを表示するには、[ワークロードを表示] をクリックします。
    • [ワークロード] ページでは、名前空間によってすでにフィルタリングされているワークロードと、名前空間のチームスコープに関連付けられたクラスタを確認できます。
  4. [ログ] タブでは、名前空間ごとにフリート スコープログを表示できます。

チームスコープにフリートの名前空間を追加する

  1. 新しいフリートの名前空間を追加するには、ページの上部で [名前空間を追加] をクリックします。
  2. 新しいフリートの名前空間の名前を入力します。名前がフリートの名前空間の命名に関する制限事項に抵触しないようにしてください。名前空間を追加するには、[名前空間を追加] をクリックします。
  3. [チームスコープを更新] をクリックします。

フリートの名前空間を削除する

  1. [名前空間] タブを選択すると、チームスコープで作成されたフリートの名前空間のリストが表示されます。
  2. 削除する名前空間の横にあるゴミ箱アイコンをクリックします。
  3. 名前空間の名前を入力して削除を確認し、再び [削除] をクリックします。

これを行う際に起きることは、名前空間の追加方法によって異なることに留意してください。

  • 新しいフリートの名前空間を作成した場合: フリートの名前空間は削除されます。フリートの名前空間を作成する結果、作成された Kubernetes Namespace も、それらのワークロードとともに削除されます。
  • 既存の Kubernetes Namespace をオンボーディングした場合: フリートの名前空間が削除されます。ただし、オンボーディングした元の名前空間は削除されません

フリートの名前空間名を更新する

フリートの名前空間は、作成後に編集することはできません。フリートの名前空間名を更新する必要がある場合は、名前空間を削除し、チームスコープに新しいものを作成します。

チームのアクセス権を管理する

gcloud

チームスコープ アクセス権を更新する(たとえば、チームメンバーに異なるロールを付与する、グループのメールアドレスを更新するなど)には、対応する update コマンドを使用します。

gcloud container fleet scopes rbacrolebindings update BINDING_NAME \
   --scope=SCOPE_NAME \
   --role=ROLE \
   --group=TEAM_EMAIL

or

gcloud alpha container fleet namespaces rbacrolebindings update BINDING_NAME \
   --scope=SCOPE_NAME \
   --role=ROLE \
   --user=USER_EMAIL

次のように置き換えます。

  • BINDING_NAME: このバインディングを表す文字列名。
  • SCOPE_NAME: チームスコープの固有識別子。
  • (省略可)ROLE: 変更するロール
  • (省略可)TEAM_EMAIL または USER_EMAIL: 変更するメールアドレス。

コンソール

チームメンバーを追加または削除する

チームのスコープ内のチームメンバーを管理するには:

  1. Google Cloud コンソールで [チーム] ページに移動します。

    [チーム] に移動

  2. メンバーを管理するチームスコープを選択します。

新しいチームメンバーをスコープに追加するには:

  1. ページの上部で [チームメンバーを追加] をクリックします。[チームスコープを作成する] セクションで詳述されている手順に沿って操作します。
  2. [チームスコープを更新] をクリックします。

チームメンバーをスコープから削除するには:

  1. [チーム] タブで、チームスコープから削除するチームメンバーの横にあるゴミ箱アイコンをクリックします。
  2. [削除] をクリックして削除を確定します。

Google Cloud コンソールでチームメンバーの詳細を編集することはできません。Google Cloud コンソールでスコープのアクセス権を更新する(たとえば、チームメンバーに異なるロールを付与する、グループのメールアドレスを更新する)には、スコープからチームメンバーを削除し、新しい詳細情報でチームメンバーを再度追加します。

名前空間管理を委任する

通常、プラットフォーム管理者のみがチームスコープとフリートの名前空間の両方を作成できます。ただし、プラットフォーム管理者として、名前空間の作成や管理をチーム管理者に委任することをおすすめします。これにより、チーム管理者はスコープでフリートの名前空間を作成して管理できます。

名前空間の管理を委任するには、プロジェクトで次の権限を持つカスタム IAM ロールを作成します。

gkehub.namespaces.get
gkehub.namespaces.create
gkehub.namespaces.update
gkehub.namespaces.delete
gkehub.namespaces.list

ロールは適したものにカスタマイズできます。たとえば、フリートの名前空間の削除を許可しない場合は、カスタムロールから gkehub.namespaces.delete 権限を省略します。

カスタムロールを定義したら、次のコマンドを使用して、特定のチームスコープの名前空間を管理する権限を明示的に付与します。

gcloud container fleet scopes add-iam-policy-binding SCOPE_NAME \
    --member='user:USER_EMAIL' \
    --role='projects/PROJECT_ID/roles/CUSTOM_ROLE_NAME

USER_EMAIL で特定されたユーザーだけが、このチームスコープのフリートの名前空間を管理できます。その他のユーザーはエラーを受信します。

フリートの名前空間の命名に関する制限事項

次の名前は予約されており、チームスコープでフリートの名前空間を作成するときに使用を禁止されています。

  • default
  • kube-system
  • gke-connect
  • kube-node-lease
  • kube-public
  • istio-system
  • gatekeeper-system
  • asm-system
  • config-management-system

ラベルを管理

スコープを特定して管理するために、Google Cloud CLI を使用して、フリートの名前空間とチームスコープのラベルを作成して管理します。

チームスコープに追加されたラベルは、スコープ内のすべてのフリートの名前空間に継承されます。つまり、それらはスコープのクラスタ内のすべての Kubernetes Namespace にアタッチされます。フリートの名前空間に直接追加されたラベルは、対応する Kubernetes Namespace にのみアタッチされます。チームスコープのラベルとフリートの名前空間のラベルが同じキーを持つ場合、チームスコープのラベルが優先されます。

Key-Value ペアのカンマ区切りのリストを追加すると、複数の Key-Value ペアを一度に操作できます。

フリートの名前空間のラベルを管理する

ラベル付きのフリートの名前空間を作成する

ラベル付きのフリートの名前空間を作成するには、次のコマンドを実行します。

gcloud container fleet scopes namespaces create NAMESPACE_NAME \
    --scope SCOPE_NAME \
    --namespace-labels KEY=VALUE

次のように置き換えます。

  • NAMESPACE_NAME: フリート内の名前空間に選択した一意の名前。
  • SCOPE_NAME: 名前空間を使用するチームスコープ。
  • KEY: ラベルの Key-Value ペアのキー。
  • VALUE: ラベルの Key-Value ペアの値。

既存のフリートの名前空間のラベルを追加または更新する

既存の名前空間のラベルを追加または更新するには、次のコマンドを実行します。

gcloud container fleet scopes namespaces update NAMESPACE_NAME \
    --scope SCOPE_NAME \
    --update-namespace-labels KEY=VALUE

フリートの名前空間のラベルを削除する

特定のフリートの名前空間のラベルを削除するには、次のコマンドを実行します。

gcloud container fleet scopes namespaces update NAMESPACE_NAME \
    --scope SCOPE_NAME \
    --remove-namespace-labels KEY

KEY は、削除するラベルのキーのカンマ区切りリストに置き換えます。

すべてのフリートの名前空間のラベルを削除するには、次のコマンドを実行します。

gcloud container fleet scopes namespaces update NAMESPACE_NAME \
    --scope SCOPE_NAME \
    --clear-namespace-labels

チームスコープのラベルを管理する

ラベルを使用してチームスコープを作成する

ラベル付きのスコープを作成する場合は、次のコマンドを実行します。

gcloud container fleet scopes create SCOPE_NAME \
    --namespace-labels KEY=VALUE

次のように置き換えます。

  • SCOPE_NAME: 新しいチームスコープに選択した一意の識別名。
  • KEY: ラベルの Key-Value ペアのキー。
  • VALUE: ラベルの Key-Value ペアの値。

既存のチームスコープのラベルを追加または更新する

既存のスコープのラベルを追加または更新するには、次のコマンドを実行します。

gcloud container fleet scopes update SCOPE_NAME \
    --update-namespace-labels KEY=VALUE

チームスコープのラベルを削除する

特定のラベルを削除するには、次のコマンドを実行します。

gcloud container fleet scopes update SCOPE_NAME \
     --remove-namespace-labels KEY

KEY は、削除するラベルのキーのカンマ区切りリストに置き換えます。

すべてのラベルを削除するには、次のコマンドを実行します。

gcloud container fleet scopes update SCOPE_NAME \
    --clear-namespace-labels

トラブルシューティング

フリートチームの管理リソースを更新または作成できない場合は、GKE Enterprise API が有効になっていることを確認します。フリートチームの管理を構成した後、フリートホスト プロジェクトで GKE Enterprise API を無効にすると、次のようになります。

  • 作成したチームスコープとフリートの名前空間は、引き続き想定どおりに機能しますが、更新できません。
  • 既存のチームスコープとフリートの名前空間は削除できます。
  • 新しいチームスコープとフリートの名前空間は作成できません。

次のステップ