为了从不同层级管理和使用 Connector 资源,以满足各种组织结构的需求,Connector 系统提供了不同级别的 Connector 资源及权限限制。
所有 Connector 资源均在集群内使用,不能跨集群使用。在当前集群内,Connector 资源分为三个层级:
不同层级创建的资源拥有不同的访问权限,且分别建立在不同的命名空间下。
kube-public
命名空间下,由当前集群共享。所有位于 kube-public
命名空间下的 Connector 资源属于集群级别资源。集群级别的 Connector 资源可以被当前集群内所有命名空间访问,实现集群范围共享。
例如,在 kube-public
下创建的名为 github-connector
的 Connector 资源,可以被任意命名空间中的 Pod 挂载使用。
在某个命名空间内创建的 Connector 被归类为命名空间级别资源。命名空间级别的 Connector 资源只能被当前命名空间访问。
例如,在 default
命名空间中创建的名为 github-connector
的 Connector 资源,只能被 default
命名空间中的 Pod 挂载使用。如果 ns-1
试图访问,则会出现权限拒绝错误。
Connector 系统还提供了介于集群级别和命名空间级别之间的资源级别,即项目级别,也可理解为命名空间组级别。
该级别表示关联命名空间内的 Pod 可以访问同一组下的 Connector。该组本身由一个特殊命名空间表示,组内的命名空间通过标签关联。
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 会导致权限拒绝错误。