哪项功能使用“Connect”

主题上次修改日期:2021 年 11 月 4 日

使用 Connect 向 Google Cloud 注册 Kubernetes 集群后,集群和 Google Cloud 控制层面之间会建立长期有效的经过身份验证和加密的连接。此连接显示了 Google Cloud 控制台中的集群的相关信息,并允许您使用 GKE Enterprise 组件和功能(例如 Config Management)管理配置和资源并将其部署到集群。

本主题描述了 Google Cloud 与 Connect 之间的连接的性质,并详细介绍了通过 Connect 在集群上运行的 Google Cloud 端控制器。

关于 Google Cloud 与 Connect 之间的连接

安全功能主题中所述,只有 Google Cloud 控制层面会通过 Connect 向每个连接的集群(例如,集群的 API 服务器)发出请求,并且集群会将响应发送回该控制层面。(集群服务和资源无法通过 Connect 向控制层面发起请求。)此连接允许已获授权的用户和 Google 端自动化访问集群并对其进行身份验证。

例如,Connect 可让 Google Cloud 控制台获取有关工作负载和服务的信息;也可以允许 Config Management 安装或更新 Connect 集群内代理并观察同步状态。Connect 还可让计量代理观察连接的集群中的 vCPU 数量。

Connect 不会为容器映像、负载均衡、数据库连接、日志记录或监控提供数据传输功能。您必须通过自己的机制并行为其建立连接。

Google Cloud 控制台用户通过 Connect 访问集群

在您的组织中的用户通过 Google Cloud 控制台登录集群后,用户将拥有取决于分配给他们的基于角色的访问权限控制 (RBAC) 的特定集群权限。集群(而非 Connect)会强制授权。通过标准 Kubernetes 日志,您可以审核每个用户在管理集群时所执行的操作。

下表显示了 Google Cloud 控制台的哪些组件允许用户通过 Connect 与集群进行交互。

Google Cloud 控制台部分 用户可执行的操作
GKE Enterprise 管理在舰队中注册的集群和工作负载;管理 GKE Enterprise 组件。
Kubernetes Engine 管理在队列中注册的集群和工作负载。
Knative serving 构建、部署和管理服务和应用。
应用商店 部署和管理第三方应用。

Google Cloud 端控制器通过 Connect 访问集群

Google Cloud 端控制器使用 Connect Agent 从 Google Cloud 控制层面访问集群。这些控制器可管理和自动化您在集群上启用的功能。例如,Config Management 具有一个 Google Cloud 端控制器,有助于定向集群内代理的生命周期,并且提供了一个界面,用于配置和查看跨多个集群运行的 Config Management 的状态。

不同的控制器使用不同的身份访问集群,您可以在 Kubernetes 审核日志中审核每个控制器的活动。

下表总结了 Google Cloud 端控制器如何通过 Connect 运行。下表重点列出了有关控制器的重要详细信息:控制器所需的权限、控制器在 Kubernetes 审核日志中的 ID,以及您是否可停用控制器。

在这种情况下,停用某个组件意味着完全停用该组件,而且无法在集群中使用该组件的个别部分。

组件名称 是否可以停用? 集群角色/RBAC 权限 说明 集群审核日志中的 ID
Feature Authorizer 否(默认处于启用状态 cluster-admin

Feature Authorizer 可添加针对 Kubernetes 集群上运行的支持队列的组件(也称为功能)的 RBAC,从而确保每个集群仅具有履行其职能所需的权限。

只要在项目中注册了成员资格,您就无法停用 Feature Authorizer。

如需了解详情,请参阅队列中的功能授权

service-project-number@gcp-sa-gkehub.iam.gserviceaccount.com
配置管理 是(默认处于停用状态 cluster-admin

Config Management 控制器负责管理其自己的集群内代理,并提供一个界面,显示舰队中所有集群的 Config Management 状态。

控制器会安装其集群内组件,并创建具有适当权限的本地服务账号,以代表用户部署所有类型的 Kubernetes 配置。未安装或管理集群内组件时,Config Management 控制器会从其集群内代理读取状态信息。

service-project-number@gcp-sa-acm.iam.gserviceaccount.com
用量计量 否(默认处于启用状态 请参阅 RBAC 定义

计量控制器会读取连接的集群的基本信息,以便提供结算服务。

此控制器需要具备执行以下操作的权限:

  • 根据节点 vCPU 容量进行计量。
  • 监视和删除 metering.gke.io/usagerecords 自定义资源。
  • 创建和更新 anthos.gke.io/entitlements 自定义资源。

只要在项目中注册了成员资格,您就无法停用计量。

service-project-number@gcp-sa-mcmetering.iam.gserviceaccount.com

通过 Connect 运行的特定组件的 RBAC

以下 API 定义显示了通过 Connect 运行的不同组件资源的访问权限控制权限。

基于 Connect 的用量计量 RBAC

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    hub.gke.io/owner-feature: metering
    hub.gke.io/project: [PROJECT_ID]
  name: metering
  selfLink: /apis/rbac.authorization.k8s.io/v1/clusterroles/metering
rules:
- apiGroups:
  - ""
  resources:
  - nodes
  verbs:
  - get
  - watch
  - list
- apiGroups:
  - metering.gke.io
  resources:
  - usagerecords
  verbs:
  - get
  - list
  - watch
  - delete
- apiGroups:
  - anthos.gke.io
  resources:
  - entitlements
  verbs:
  - create
  - delete
  - get
  - list
  - update
  - watch
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - create
  - list
  - watch
- apiGroups:
  - apiextensions.k8s.io
  resourceNames:
  - entitlements.anthos.gke.io
  resources:
  - customresourcedefinitions
  verbs:
  - get