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

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

このドキュメントを読む前に、フリートのチーム管理について理解しておいてください。

チーム設定の概要

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

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

  1. チームアクセスを設定するフリートを選択または作成し、設定を完了するための適切な権限と API があることを確認します。
  2. 推奨(省略可)フリート クラスタで Google グループのアクセス制御を設定します。
  3. チームを構成するユーザーを決定します。チームには、Google グループ(推奨)や個人アカウントを含めることができます。
  4. チームメンバーごとに、フリートとチームリソースに対するアクセスレベルを選択します。
  5. チームのチームスコープを作成します。
  6. 1 つ以上の(またはすべての)フリート メンバー クラスタをチームスコープに追加します。
  7. フリートレベルの名前空間を定義し、それらをチームスコープに関連付けます。
  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 Cloud コンソールでクラスタを表示する機能や、チームスコープ全体でログを表示する機能が含まれます。チームメンバーのロールによっては、チームメンバーにチームスコープ内で Namespace の作成権限を委任したり(gkehub.ScopeAdmin または gkehub.ScopeEditor で利用可能)、RBAC ロール バインディングの更新を許可できます(gkehub.ScopeAdmin のみ)。この設定を簡素化するために、フリートチーム管理では、チームスコープの管理者、編集者、閲覧者がスコープの操作で必要となる IAM と Kubernetes RBAC の権限がすべて含まれる、3 つのカスタム権限ペルソナが用意されています。チームを設定する際に、これらのペルソナをチームメンバーに割り当てることができます。詳しくは、次のセクションをご覧ください。

次の表に、各ペルソナに付与される権限タイプを示します。

説明 タイプ スコープ管理者のペルソナ スコープ編集者のペルソナ スコープ閲覧者のペルソナ

チームスコープとその Namespace へのアクセス権。

チームスコープでの IAM バインディング roles/gkehub.ScopeAdmin roles/gkehub.ScopeEditor roles/gkehub.ScopeViewer

フリートホスト プロジェクトへのアクセス(指標、長時間実行オペレーション、Connect ゲートウェイなど)。

フリート ホスト プロジェクトの IAM バインディング roles/gkehub.ScopeEditorProjectLevel roles/gkehub.ScopeEditorProjectLevel roles/gkehub.ScopeViewerProjectLevel

チームスコープのログバケットへのアクセス権。

フリートホスト プロジェクトの IAM バインディング(ただし、アクセスされるリソースがバケット名の場合)。 roles/logging.viewAccessor roles/logging.viewAccessor roles/logging.viewAccessor

スコープのクラスタ内の Kubernetes リソースへのアクセス。

チームスコープの Namespace に適用されるスコープの RBAC バインディング。 Kubernetes のデフォルト ロール: 管理 Kubernetes のデフォルト ロール: 編集 Kubernetes のデフォルト ロール: 閲覧

前のセクションで説明したように、Google グループのメンバーシップに基づいてチームメンバーにリソースへのアクセス権を付与することをおすすめしますが、チーム管理では個々のユーザーにアクセス権を付与することもできます。

これらのペルソナがニーズを満たしていない場合は、IAM ロール(gcloud container fleet scopes add-iam-policy-binding を使用)と RBAC ロール(gcloud container fleet scopes rbacrolebindings create を使用)を個別にバインドすることもできます。これらのバインディングの管理に使用できるコマンドの詳細については、Google Cloud CLI リファレンス ドキュメントをご覧ください。

チームスコープを設定する

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 がすでにある場合は、新しいフリートの名前空間の一部とみなされます。これは、Namespace のオンボーディングと呼ばれることがあります。

チームメンバーにチームスコープへのアクセス権を付与する

次に、新しいスコープで機能するように、関連する Google グループに適切な IAM 権限と RBAC 権限が構成されていることを確認します。

gcloud alpha container fleet scopes add-app-operator-binding SCOPE_ID
        --role=ROLE --group=TEAM_EMAIL --project PROJECT_ID
  • PROJECT_ID はフリート ホスト プロジェクトの ID です。
  • TEAM_EMAIL は、チームの Google グループのメールアドレスです。
  • SCOPE_ID は、作成されたスコープの ID です。
  • ROLE は、チームスコープでグループが持つ権限ペルソナです。このパラメータの値は、admin(スコープ管理者)、edit(スコープ編集者)、view(スコープ閲覧者)のいずれかです。

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

gcloud alpha container fleet scopes add-app-operator-binding SCOPE_ID
        --role=ROLE --user=USER_EMAIL --project PROJECT_ID

コンソール

チームスコープの作成

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

    [チーム] に移動

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

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

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

    • [タイプ] で、[ユーザー] を選択して個々のチームメンバーを追加するか、[グループ] で Google グループを追加します(推奨)。
    • [ユーザーまたはグループ] にチームメンバーまたはグループのメールアドレスを入力します。
    • [ロール] で、[スコープ管理者]、[スコープ編集者]、または [スコープ閲覧者] を選択します。これにより、チームのアクセス権限を選択するで説明されているように、スコープとフリートに対して複数の IAM と RBAC のバインディングが構成されます。
  5. この段階でクラスタと Namespace を追加せずにチームスコープを作成するには、[チームスコープを作成] をクリックします。それ以外の場合は、引き続き次のセクションに進んで、クラスタをスコープに追加します。

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

クラスタをチームスコープに関連付けるには、クラスタが既存のフリート メンバーである必要があります。フリートにクラスタを追加する必要がある場合は、フリートを作成するのクラスタタイプの手順に沿ってクラスタを登録します。前述のように、新しく登録されたクラスタが アクセス制御に 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: フリートの Namespace が作成されるチームスコープの名前。

スコープ アクセス権を付与する

前のセクションで説明したように、IAM 権限と RBAC 権限の両方を含む権限ペルソナを使用して、チームメンバーにスコープへのアクセス権を付与できます。たとえば、個々のユーザーにチームスコープへのアクセス権を付与する構成を次に示します。

  module "TF_SCOPE_RESOURCE_NAME_USER_EMAIL" {
    source           = "terraform-google-modules/kubernetes-engine/google//modules/fleet-app-operator-binding"

    scope_id = "SCOPE_NAME"
    user = "USER_EMAIL"
    role = "ROLE"
  }

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

  • TF_SCOPE_RESOURCE_NAME: スコープの名前。
  • BINDING_NAME: このバインディングを表す名前。
  • SCOPE_NAME: チームスコープの名前。
  • USER_EMAIL: ユーザーのメールアドレス。
  • ROLE: ユーザーに付与するペルソナ。これは、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. [モニタリング] タブをクリックして、チームのリソース使用率の指標を表示します。
  4. [クラスタ] タブをクリックして、チームスコープのクラスタを確認します。
  5. [Namespace] タブをクリックすると、このチームスコープのフリートの Namespace が表示されます。
  6. [ログ] タブをクリックして、フリート スコープのログを表示します。

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

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

  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

チームメンバーを一覧表示する

add-app-operator-binding コマンドを使用してチームスコープへのアクセス権が付与されているすべてのチームメンバーと、その権限ペルソナを一覧表示するには、次のコマンドを使用します。

gcloud alpha container hub scopes list-app-operator-bindings SCOPE_NAME

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

  • SCOPE_NAME: チームスコープの固有識別子。

チームメンバーを削除する

チームメンバーのスコープ アクセス権(add-app-operator-binding で付与されたもの)を削除するには、次のコマンドを使用します。

gcloud alpha container hub scopes remove-app-operator-binding SCOPE_NAME \
   --group=TEAM_EMAIL

または

gcloud alpha container hub scopes remove-app-operator-binding SCOPE_NAME \
   --user=USER_EMAIL

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

  • SCOPE_NAME: チームスコープの固有識別子。
  • TEAM_EMAIL または USER_EMAIL: チームから削除するグループまたはユーザーのメールアドレス。

チームメンバーに rbacrolebindings create コマンドでアクセス権が付与されている場合は、代わりに rbacrolebindings delete コマンドを使用してチームメンバーを削除します。

チームスコープのアクセス権を更新する

チームスコープのアクセス権を更新するには(たとえば、チームメンバーに異なるロールを付与したり、グループのメールアドレスを更新する場合)、前のセクションで説明したようにスコープからチームメンバーを削除し、新しい詳細情報でチームメンバーに再度アクセス権を付与します。

rbacrolebindings create コマンドを使用してチームメンバーにアクセス権を付与した場合は、代わりに rbacrolebindings update コマンドを使用してメンバーのアクセス権を更新できます。

コンソール

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

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

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

    [チーム] に移動

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

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

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

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

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

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

フリートの Namespace の命名に関する制限事項

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

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

ラベルを管理する

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

チームスコープに追加されたラベルは、スコープ内のすべてのフリートの Namespace に継承されます。つまり、それらはスコープのクラスタ内のすべての 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 を無効にすると、次のようになります。

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

次のステップ