Connect の概要

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

ネットワークが送信リクエストを許可するように構成されている場合は、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 Agent

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

Connect の IAM ロール

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

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

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

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

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

役割名 役割のタイトル 説明 権限
roles/gkehub.admin ハブ管理者 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.memberships.setIamPolicy
  • 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.features.setIamPolicy
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 Console を使用して登録済みクラスタにログインする方法は以下の 3 つです。

  1. ユーザー名と静的パスワード ファイルを使用する基本認証を使用する。 詳細については、静的パスワード ファイルをご覧ください。
  2. 署名なしトークンを使用する。Kubernetes 認証で指定された、さまざまな種類の署名なしトークンがサポートされています。最も簡単な方法は、クラスタ内に Kubernetes サービス アカウント(KSA)を作成し、その署名なしトークンを使用してログインすることです。
  3. OpenID Connect(OIDC)プロバイダを使用する。

承認

承認チェックは、Google Cloud Console で認証するときに使用する ID に対して、クラスタの API サーバーによって実行されます。

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

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

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

監査

Google Cloud Console を介したアクセスについては、クラスタの API サーバーに監査ログが記録されます。