Connect 概览

Connect 允许您将任何 Kubernetes 集群连接到 Google Cloud。这样,您就能够访问集群和工作负载管理功能(包括统一的界面和 Cloud Console),以与集群进行互动。

如果将网络配置为允许出站请求,则可以将 Connect Agent 配置为遍历 NAT、出口代理和防火墙,以在集群的 Kubernetes API 服务器和 Google Cloud 项目之间建立长期的加密连接。启用此连接后,您可以使用自己的凭据重新登录集群并访问有关其 Kubernetes 资源的详细信息。这实际上复制了仅以其他方式提供给 GKE 集群使用的界面体验。

建立连接后,Connect Agent 软件可以交换帐号凭据、技术详细信息,以及使用 Google Cloud 管理它们所需的已连接基础架构和工作负载的元数据,包括资源、应用和硬件的详细信息。

此集群服务数据与您的 Google Cloud 项目和/或帐号相关联。Google 使用这些数据来维持集群和 Google Cloud 之间的控制平面,为您提供所请求的任何 GCP 服务和功能(包括提供支持、进行结算、提供更新),以及通过 Connect 衡量和改进 Connect 和 Google Cloud 服务的可靠性、质量、容量和功能。

您可以控制通过 Connect 发送的数据,也就是说,您的 Kubernetes API 服务器可以对通过 Connect 发出的所有请求执行身份验证授权写入审核日志。Google 和用户可以在集群管理员(例如通过 RBAC)为其授权后通过 Connect 访问数据或 API;集群管理员可以撤消该授权。

Connect Agent

Connect 使用名为 Connect AgentDeployment 在集群和 Google Cloud 项目之间建立连接,并处理 Kubernetes 请求。

Connect IAM 角色

借助 Identity and Access Management (IAM),用户、群组和服务帐号可访问 Google Cloud API 以及在 Google Cloud 产品中执行任务。

您需要提供特定的 IAM 角色才能启动 Connect Agent 并使用 Google Cloud Console 或 Cloud SDK 与您的集群进行交互。这些角色不允许直接访问连接的集群。

其中一些角色允许您访问有关集群的信息,包括:

  • 集群名称
  • 公钥
  • IP 地址
  • 身份提供商
  • Kubernetes 版本
  • 集群大小
  • 其他集群元数据

Connect 使用以下 IAM 角色:

角色名称 角色名称 说明 权限
roles/gkehub.admin Hub Admin 提供 Hub 及其相关资源的全面访问权限。

Google Cloud 的权限

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

Hub 的权限

  • 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 Hub Viewer 提供 Hub 和相关资源的只读访问权限。

Google Cloud 的权限

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

Hub 的权限

  • 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 Agent 提供在外部集群和 Google 之间建立新连接的能力。 gkehub.endpoints.connect

使用 Connect 登录

身份验证

您可以使用 Google Cloud Console 通过以下三种方式登录已注册的集群:

  1. 使用基本身份验证,这种方法使用用户名和静态密码文件登录集群。 如需了解详情,请参阅静态密码文件
  2. 使用不记名令牌。支持 Kubernetes 身份验证中指定的多种不记名令牌。最简单的方法是在集群中创建 Kubernetes 服务帐号 (KSA),并使用其不记名令牌登录。
  3. 使用 OpenID Connect (OIDC) 提供商。

授权

集群的 API 服务器会针对您通过 Google Cloud Console 进行身份验证时使用的身份执行授权检查。

所有登录集群的帐号至少需要具有集群中的以下 Kubernetes RBAC 角色:

这些角色提供对集群及其节点的详细信息的只读权限。这些角色不提供对所有资源的访问权限,因此 Google Cloud Console 的某些功能可能不可用;例如,这些角色不允许访问 Kubernetes Secret 或 Pod 日志。

可以向帐号授予其他 RBAC 权限,例如通过 editcluster-admin 在集群内中执行更多操作。如需了解详情,请参阅 RBAC 文档。

审核

如果通过 Google Cloud Console 进行访问,则由集群的 API 服务器记录到审核日志中。