Private Service Connect 简介


本页面简要介绍了 Google Kubernetes Engine (GKE) 集群中的 Private Service Connect。

本页面假定您了解以下内容:

  • 网络基础知识,例如 IP 地址
  • VPC 网络

概览

Private Service Connect (PSC) 是 Trusted Cloud by S3NS的网络基础设施的一部分,可让您的 GKE 集群安全地以非公开方式使用托管在 Trusted Cloud by S3NS 或本地环境中的服务,而无需公开这些服务。借助 PSC, Trusted Cloud by S3NS 会为控制平面分配一个内部 IP 地址,以将请求转发到 GKE 集群管理 API,从而让您能够管理集群,而流量永远不会通过公共互联网。PSC 提供了一致的框架,有助于通过服务网络方法连接不同的网络,并允许服务提供方和消费者使用 VPC 内部的内部 IP 地址进行通信。

在采用 PSC 基础架构的 GKE 集群中,集群控制平面与节点之间的所有通信均以私密方式进行。您还可以在控制平面和节点池层级隔离集群,而无需管理复杂的 VPC 对等互连配置。

启用 Private Service Connect 的集群的优势

安全性:PSC 在 GKE 集群控制平面和节点之间建立专用连接,使流量完全在 Google 的网络内传输,而不会通过公共互联网传输。这样可以最大限度地降低未经授权的访问风险。

简化连接:对于 PSC 集群,您无需为控制平面端点管理特定子网。PSC 端点完全位于集群网络内,无需复杂的网络配置。

可扩缩性:您可以创建最多 1000 个启用 PSC 的集群,以满足高资源要求。相比之下,对于使用 VPC 网络对等互连的集群,您只能在每个可用区或区域中创建最多 75 个集群。

可自定义的配置:借助 PSC,您可以独立控制集群控制平面、节点池或工作负载的隔离,从而提高集群的可伸缩性和安全性。您可以在集群中配置专用节点池和公共节点池的混合使用。

灵活性:创建集群后,您可以随时更改隔离设置。您可以在公开访问和私密访问控制平面之间切换,并更改节点池和工作负载的互联网可访问性,而无需创建新集群。

限制

控制平面同时具有内部端点和外部端点。控制平面的内部端点不支持在网址中对您配置的任何 webhook 使用内部 IP 地址。如果您的 Webhook 的网址中包含内部 IP 地址,您可以按照以下步骤缓解此不兼容问题:

  1. 创建无选择器的无头 Service,以手动管理此 Service 将流量定向到的端点。以下示例展示了一个在端口 3000 上监听 webhook 的服务:

    apiVersion: v1
    kind: Service
    metadata:
      name: <service-name>
    spec:
      clusterIP: None
      ports:
      - port: 3000
        targetPort: 3000
    
  2. 为所需的目标位置创建相应的端点。例如,如果您的 Webhook 在网址中使用内部 IP 地址 10.0.0.1,您可以创建以下端点:

    apiVersion: v1
    kind: Endpoints
    metadata:
      name: <service-name>
    subsets:
    - addresses:
      - ip: 10.0.0.1
      ports:
      - port: 3000
    
  3. 更新网络钩子配置:在网络钩子配置中,删除包含内部 IP 地址的网址,并添加您在第一步中创建的服务。例如:

    ...
    kind: ValidatingWebhookConfiguration
    ...
    webhooks:
    - name: <webhook-name>
    ...
      clientConfig:
        service:
          name: <service-name>
          namespace: <namespace>
          path: "/validate"
          port: 3000
    

    在上面的示例中,Webhook 的路径为 /validate,并监听端口 3000。

  4. 验证您的网络钩子:确认您的网络钩子可以继续接收 API 服务器请求,并且可以根据自定义逻辑批准、拒绝或修改请求。如果您在验证 Webhook 时遇到错误,可能需要创建新证书,然后使用新证书的详细信息更新 Webhook 配置。例如:

    ...
    kind: ValidatingWebhookConfiguration
    ...
    webhooks:
    - name: <webhook-name>
    ...
      clientConfig:
        ...
        caBundle: <new-certificate>
    ...
    

架构

下图简要介绍了使用 PSC 的集群的架构:

GKE 中 Private Service Connect 的架构。
图: Private Service Connect 架构

以下是启用 PSC 的集群的核心组件:

控制平面:每个 GKE 集群都有一个由控制平面管理的 Kubernetes API 服务器。控制平面在由 Google 管理的项目的 VPC 网络中的一个虚拟机 (VM) 上运行。区域级集群有多个控制平面副本,每个副本都在其各自的虚拟机上运行。

控制平面同时具有一个内部端点(Private Service Connect 端点,用于内部集群通信)和一个外部端点。您可以选择停用外部端点。 节点和控制平面之间的流量完全使用内部 IP 地址进行路由。如需了解集群配置,请参阅验证控制平面配置

VPC 网络:这是一个虚拟网络,您可以在其中创建具有内部 IP 地址范围的子网,专门用于集群的节点和 Pod。

Private Service Connect 端点:这是集群控制平面中位于项目 VPC 网络内的内部端点。PSC 端点充当访问集群控制平面的入口点。

服务连接:服务连接是一种资源,可在您的 VPC 网络与提供方 VPC 网络之间建立安全且私密的连接。如上图所示,PSC 端点通过专用连接访问服务连接,并允许流量在节点和控制平面之间流动。

配置集群访问权限

您可以通过多种方式配置启用 PSC 的集群上的控制平面访问权限和节点访问权限。创建集群后,您可以随时更改这些配置。如需配置集群访问权限,请参阅自定义网络隔离

控制平面访问

  • 仅使用基于 DNS 的端点访问控制平面(推荐)。您可以通过创建 IAM 允许政策来授权请求访问控制平面。

  • 仅使用基于 IP 的端点访问控制平面。您可以选择同时使用控制平面的外部和内部端点,也可以停用外部端点,以仅允许从 Google 预留的 IP 地址(用于集群管理)和 GKE 集群内部 IP 地址进行访问。

    如果您使用的是 IP 地址,我们建议您使用授权网络来限制对集群控制平面的访问权限。借助授权网络,您还可以禁止从具有 Trusted Cloud by S3NS 外部 IP 的 Trusted Cloud by S3NS 虚拟机、Cloud Run 或 Cloud Run functions 访问控制平面。

  • 使用基于 DNS 的端点基于 IP 的端点访问控制平面。

集群节点访问权限

借助启用 PSC 的集群,您可以配置混合模式集群。您可以配置集群,使其节点具有内部或外部访问权限。您还可以根据所用集群的类型更改节点网络配置:

  • 对于 Autopilot 集群,您可以配置一些工作负载在专用节点上运行,而其他工作负载在公共节点上运行。例如,您可能在集群中混合运行多种工作负载,其中一些需要互联网访问权限,而另一些则不需要。您可以在具有外部 IP 地址的节点上部署工作负载,以确保只有此类工作负载可公开访问。

  • 对于标准集群,您可以为部分节点预配内部 IP 地址,而其他节点可以使用外部 IP 地址。

使用 Private Service Connect 的集群

如需检查您的集群是否使用 Private Service Connect,请运行 gcloud container clusters describe 命令。如果您的集群使用 Private Service Connect,则 privateClusterConfig 资源具有以下值:

  • peeringName 字段为空或不存在。
  • privateEndpoint 字段已被分配了一个值。

如需为集群启用 PSC,请在 1.29 版或更高版本上创建集群。 否则,对于 1.28 版及更早版本,请创建集群,但不要启用私有节点。您可以在创建集群后随时更新此设置并启用专用节点。

后续步骤