Connector 资源级别与权限
Overview
为了从不同层级管理和使用 Connector 资源,以满足各种组织结构的需求,Connector 系统提供了不同级别的 Connector 资源及权限限制。
所有 Connector 资源均在集群内使用,不能跨集群使用。在当前集群内,Connector 资源分为三个层级:
- 集群级别
- 项目级别(命名空间组)
- 命名空间级别
不同层级创建的资源拥有不同的访问权限,并建立在不同的命名空间下。
- 集群级别:位于
kube-public命名空间下,由当前集群共享。 - 项目级别:位于以项目命名的命名空间下,在当前集群内该项目的命名空间范围内共享。
- 命名空间级别:普通命名空间中的 Connector 只能被当前命名空间访问。
Cluster Level
所有位于 kube-public 命名空间下的 Connector 资源属于集群级资源。集群级 Connector 资源可以被当前集群内所有命名空间访问,实现集群范围共享。
例如,在 kube-public 下创建的名为 github-connector 的 Connector 资源,可以被任意命名空间中的 Pod 挂载。
Namespace Level
在命名空间内创建的 Connector 被归类为命名空间级资源。命名空间级 Connector 资源只能被当前命名空间访问。
例如,在 default 命名空间中创建的名为 github-connector 的 Connector 资源,只能被 default 命名空间中的 Pod 挂载。如果 ns-1 试图访问,则会出现权限拒绝错误。
Project Level (Namespace Group)
Connector 系统还提供了介于集群级和命名空间级之间的资源级别,即项目级别,也可理解为命名空间组级别。
该级别表示关联命名空间内的 Pod 可以访问同一组下的 Connectors。该组本身由一个特殊的命名空间表示,组内的命名空间通过标签关联。
- 组本身的命名空间使用标签
cpaas.io/inner-namespace: {group name}标识。 - 组内的命名空间使用标签
cpaas.io/project: {group name}标识,表示当前命名空间属于该组。
项目级资源可以被组内的命名空间以及组本身的命名空间访问,其他命名空间无法访问。
例如,存在一个名为 group-1 的组,包含三个命名空间:ns1、ns2 和 ns3。
示例 YAML 如下:
位于 group-1 下的 github-connector 资源可以被以下访问:
ns1、ns2和ns3命名空间group-1命名空间本身- 其他命名空间访问
group-1内的 Connector 会导致权限拒绝错误。