Connect Agent の概要

Google Cloud の外部のクラスタをフリートに登録すると、Google Cloud は Connect Agent と呼ばれる Deployment を使用してクラスタと Google Cloud プロジェクト間の接続を確立し、Kubernetes リクエストを処理します。

これにより、クラスタと、統合されたユーザー インターフェースである Cloud Console などの Google Cloud のワークロード管理機能にアクセスして、クラスタを操作できます。

ネットワークが送信リクエストを許可するように構成されている場合は、NAT、下りプロキシ、ファイアウォールを通過するように Connect Agent を構成して、クラスタの Kubernetes API サーバーと Google Cloud プロジェクト間に長期にわたる暗号化接続を確立できます。この接続を有効にすると、独自の認証情報を使用してクラスタに再度ログインし、Kubernetes リソースの詳細情報にアクセスできるようになります。これにより、通常は GKE クラスタでのみ使用可能な UI エクスペリエンスを効率的に複製できます。

接続が確立されると、Connect Agent のソフトウェアは、アカウント認証情報、技術的な詳細情報、およびメタデータと、Google Cloud での管理に必要な接続されたインフラストラクチャとワークロード(リソース、アプリケーション、ハードウェアの詳細情報など)に関するメタデータを交換できます。

このクラスタ サービスのデータは、Google Cloud プロジェクトとアカウントに関連付けられています。Google では、このデータを使用してクラスタと Google Cloud の間のコントロール プレーンを維持し、利用促進に関するサポート、課金、更新版の提供など、リクエストをいただいた Google Cloud のサービスと機能を提供しているほか、Connect を通じてご利用いただける Connect および Google Cloud サービスの信頼性、品質、容量、機能の測定と改善を行っています。

ユーザーの Kubernetes API サーバーが、Connect を通してすべてのリクエストの認証認可監査ロギングを行うことで、Connect を通して送信されるデータの内容を継続的に管理できます。Google とユーザーは、クラスタ管理者から(たとえば RBAC 経由で)認可された後、データまたは API にアクセスできます。クラスタ管理者はこの認可を取り消すことができます。

Connect の IAM ロール

Identity and Access Management(IAM)によって、ユーザー、グループ、サービス アカウントは Google Cloud APIs にアクセスし、Google Cloud サービス内でタスクを実行できます。

Connect Agent を起動し Google Cloud Console または Google Cloud CLI を使用してクラスタを操作するには、特定の IAM ロールを指定する必要があります。これらのロールは、接続されたクラスタに直接アクセスすることを許可しません。

このような役割のいくつかを使用すると、以下を含めて、クラスタに関する情報にアクセスできます。

  • クラスタ名
  • 公開鍵
  • IP アドレス
  • ID プロバイダ
  • Kubernetes バージョン
  • クラスタサイズ
  • その他のクラスタ メタデータ

Connect は、次の IAM ロールを使用します。

役割名 役割のタイトル 説明 権限
roles/gkehub.editor ハブ編集者 GKE Hub リソースに対する編集アクセス権を付与します。

Google Cloud の権限

  • resourcemanager.projects.get
  • resourcemanager.projects.list

ハブの権限

  • gkehub.memberships.list
  • gkehub.memberships.get
  • gkehub.memberships.create
  • gkehub.memberships.update
  • gkehub.memberships.delete
  • gkehub.memberships.generateConnectManifest
  • gkehub.memberships.getIamPolicy
  • gkehub.locations.list
  • gkehub.locations.get
  • gkehub.operations.list
  • gkehub.operations.get
  • gkehub.operations.cancel
  • gkehub.features.list
  • gkehub.features.get
  • gkehub.features.create
  • gkehub.features.update
  • gkehub.features.delete
  • gkehub.features.getIamPolicy
  • gkehub.fleet.*
roles/gkehub.viewer ハブ閲覧者 ハブと関連リソースに対する読み取り専用アクセス権を付与します。

Google Cloud の権限

  • resourcemanager.projects.get
  • resourcemanager.projects.list

ハブの権限

  • gkehub.memberships.list
  • gkehub.memberships.get
  • gkehub.memberships.generateConnectManifest
  • gkehub.memberships.getIamPolicy
  • gkehub.locations.list
  • gkehub.locations.get
  • gkehub.operations.list
  • gkehub.operations.get
  • gkehub.features.list
  • gkehub.features.get
  • gkehub.features.getIamPolicy
roles/gkehub.connect GKE Connect エージェント 外部クラスタと Google の間に新しい接続を確立する機能を提供します。 gkehub.endpoints.connect

Connect を使用したログイン

認証

Google Cloud には、Google Cloud Console から登録済みクラスタにログインするための複数のオプションが用意されています。使用可能なオプションは、クラスタ管理者が認証どのように構成したかによって異なります。

  1. クラスタが Connect ゲートウェイ を使用するように設定されている場合は、Google Cloud 上の GKE クラスタと同様に、Google Cloud ID を使用してログインできます。
  2. ADFS、Okta などの OpenID Connect(OIDC)プロバイダや LDAP プロバイダで Anthos Identity Service を使用するようにクラスタが設定されている場合は、そのプロバイダの ID を使用してログインできます。
  3. 署名なしトークンを使用してログインできます。Kubernetes 認証で指定された、さまざまな種類の署名なしトークンがサポートされています。最も簡単な方法は、クラスタ内に Kubernetes サービス アカウント(KSA)を作成し、その署名なしトークンを使用してログインすることです。

これらのオプションの使用に関する詳細は、Cloud Console からクラスタにログインするをご覧ください。

承認

認証チェックは、Google Cloud Platform Console を通した認証時に使用した ID に対して、クラスタの API サーバーによって実行されます。

クラスタにログインするすべてのアカウントは、クラスタ内に少なくとも次の Kubernetes RBAC ロールを保持する必要があります。

これらのロールは、クラスタに対する読み取り専用アクセス権を付与し、ノードの詳細情報を提示します。この役割はすべてのリソースへのアクセス権を提供するわけではないため、Google Cloud Console の一部の機能は利用できない場合があります。たとえば、このような役割では、Kubernetes Secrets や Pod ログへのアクセスは許可されません。

アカウントに editcluster-admin など、他の RBAC 権限を付与して、クラスタ内でより多くの操作を行えるようにできます。詳細については、RBAC のドキュメントをご覧ください。

監査

Google Cloud コンソールを通したアクセスは、クラスタの API サーバーに監査ログが記録されます。

リソースの使用率と要件

通常、登録時にインストールされた Connect エージェントは、500m の CPU と 200Mi のメモリを使用します。ただし、この使用量は、そのエージェントに対する 1 秒間のリクエストの数と、そのリクエストのサイズによって異なることがあります。この使用量は、クラスタのサイズ、Cloud Console 経由でクラスタにアクセスするユーザー数(超過したユーザーやワークロード、超過したリクエスト)、クラスタのフリート対応機能など、多くの要因から影響を受ける可能性があります。