使用 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 定义 | 计量控制器会读取连接的集群的基本信息,以便提供结算服务。 此控制器需要具备执行以下操作的权限:
只要在项目中注册了成员资格,您就无法停用计量。 |
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