使用 Connect 网关连接到已注册的集群

Google Cloud 中的舰队是 Kubernetes 集群及其他可共同管理的资源的逻辑组,通过将集群注册到 Google Cloud 来创建。Connect 网关以舰队为基础,让 GKE Enterprise 用户能够以简单、一致且安全的方式连接到舰队成员集群并运行命令,无论集群是位于 Google Cloud、其他公有云还是本地部署上,让您可以更轻松地在所有集群中自动执行 DevOps 流程。

本指南假设您已熟悉一些基本舰队概念,以及如何将集群注册到舰队。如果不熟悉,请参阅舰队管理概览舰队创建概览及其关联指南来了解详情。您还应熟悉 Kubernetes 工具和概念,包括 kubectlclient-go(如果您要使用网关实现自动化)、基于角色的访问权限控制 (RBAC) 和核心 Kubernetes 资源。

默认情况下,Connect Gateway 会使用您的 Google ID 向集群进行身份验证,支持使用员工身份联合的第三方身份提供方,并通过 GKE Identity Service 提供基于群组的身份验证支持。如果您想要详细了解 GKE Identity Service,或将其用作独立的第三方身份验证选项,请参阅 GKE Identity Service 简介

为何使用 Connect 网关?

如果您的集群在多个云环境和混合环境中运行,在管理工作负载方面存在许多挑战。集群可能在不同的虚拟私有云 (VPC) 中运行,并利用不同的身份提供商,这使得连接、身份验证和授权等功能更加复杂。有时,仅发现这些环境中存在哪些集群并非易事。

借助 Connect 网关,您可以轻松执行以下操作:

  • 发现哪些集群(在 Google Cloud、其他公有云或本地)存在,并通过简单查询向队列注册。
  • 使用在 Google Cloud 控制台中显示已注册的 GKE 集群所用的基础架构连接到所需的集群。
  • 使用您用于 Google Cloud 服务的相同身份进行身份验证
  • 在跨舰队的所有集群中一致地授权

网关会对您的 Google Cloud 身份进行身份验证,并通过 Connect 服务提供与集群的 API 服务器的连接。

您可以使用接受 kubeconfig 的命令行工具(例如 kubectl)来直接通过网关与集群交互。您还可以通过构建流水线和其他 DevOps 自动化轻松利用网关。您可以在我们的与 Cloud Build 集成教程中找到操作示例。

您还可以使用 Connect 服务在 Google Cloud 控制台中通过您的 Google Cloud 身份连接到 Google Cloud 外部的已注册集群。为此,请按照通过 Google Cloud 控制台使用集群中的说明操作。

工作原理

下面是典型用户或服务(例如 CI/CD 流水线)在配置适当的身份验证和授权后使用 Connect 网关所需执行的流程。如需详细了解用户说明,请参阅我们的使用指南

  1. 用户或服务通过使用 Google Cloud CLI 列出舰队成员资格资源来发现集群。

    gcloud container fleet memberships list
    
  2. 用户或服务通过使用 Google Cloud CLI 来提取访问所选集群所需的 Connect 网关专用 kubeconfig

    gcloud container fleet memberships get-credentials membership-name
    

    如果您已熟悉将 gcloud CLI 与 GKE 搭配使用的方法,这类似于使用 Google Cloud 账号运行 gcloud container clusters get-credentials,它可让您(在经过授权的情况下)访问在您的项目舰队中注册和连接的任何集群。

  3. 用户或服务照常通过 kubectlclient-go 并使用下载的 kubeconfig 文件执行其命令。

    1. 用户/服务通过 Connect 网关进行身份验证,并且授权经过检查,从而确保他们有权使用该网关。
    2. 请求通过 Connect 服务和 Connect Agent 转发到相应的 Kubernetes API 服务器。
    3. Kubernetes API 服务器为请求授权,这要求 Connect 代理有权模拟用户或服务,并且用户或服务有权执行所需的请求。

Google 群组支持

在上一部分所述的标准流程中,用户的请求基于其个人 ID 进行授权。但是,在许多情况下,如果能够根据用户的 Google 群组成员资格为用户授权,会是很有帮助的。基于群组成员资格进行授权意味着您无需为每个账号设置单独的授权,这样可以使政策更易于管理且更易于审核。例如,您可以轻松与团队共享集群访问权限,而无需在单个用户加入或离开团队时从集群手动添加/移除他们。使用 GKE Identity Service 进行一些额外设置,您可以将 Connect Gateway 配置为获取用户的 Google 群组成员资格信息。

请参阅使用 Google 群组设置 Connect 网关,详细了解此功能的工作原理和设置方法。

如果要在关联集群或其他 GKE Enterprise 环境中使用此功能,请联系 Cloud Customer CareConnect Gateway 团队

第三方身份支持

除了使用 Google Workspace 用户和群组之外,Connect Gateway 还支持使用第三方身份(例如 Azure Active Directory 和 Okta)进行授权。通过使用员工身份联合,您可以使用外部身份提供方通过 Identity and Access Management 对员工(一组用户,例如员工、合作伙伴和承包商)进行身份验证和授权,以便用户能够访问 Connect Gateway 等 Google Cloud 服务。使用 GKE Identity Service 进行一些额外设置后,您可以配置 Connect Gateway 以获取用户的第三方群组成员资格信息。

从 Anthos (GKE Enterprise) 1.13 开始,Google Distributed Cloud on VMware 和 Google Distributed Cloud on Bare Metal 部署支持 Connect 网关的第三方身份功能。对于关联集群,此功能从 Anthos 1.16 及更高版本开始可用。

请参阅使用第三方身份设置 Connect Gateway,详细了解此功能的工作原理和设置方法。

如果您愿意,您可以完全使用 GKE Identity Service 设置第三方身份验证,请按照其文档中的说明操作。

延迟时间

通过网关发出的请求的总延迟时间可分为两个部分:从 Connect 网关服务到 Connect 代理的 RTT(往返时间)和集群内的请求执行时间。RTT 带来的额外延迟时间为 p95<500ms 和 p99<1s。请注意,大多数 kubectl 命令会执行一系列多个不同的请求,每个请求都要求执行往返操作,然后向用户呈现响应。

后续步骤