耶耶耶耶耶 发表于 2024-5-13 14:28:33

K8s中Role(ClusterRole)资源类型rules字段详解

在Kubernetes(K8s)中,Role资源类型的rules字段用于界说哪些操作(verbs)可以在哪些资源(resources)上执行。Role是一种命名空间级别的资源,它答应你对命名空间内的资源举行细粒度的访问控制。

[*]resources:
resources字段指定了脚色可以访问的资源类型。这些资源类型可以是Kubernetes API中界说的任何资源,例如Pods、Services、Deployments、ConfigMaps等。你可以在resources字段中列出多个资源类型,以答应脚色访问这些类型的资源。
[*]verbs:
verbs字段界说了脚色可以对资源执行的操作。这些操作可以是尺度的HTTP方法,如get、list、watch、create、update、patch、delete等。通过在verbs字段中列出这些操作,你可以控制脚色对资源的具体行为。
rules字段是一个数组,每个元素都是一个规则对象,规则对象中界说了可以执行的操作和适用的资源。下面是一个Role资源界说的示例,其中包含了rules字段:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: pod-reader
namespace: default
rules:
- apiGroups: [""]# 空字符串表示核心API群组
resources: ["pods"]# 资源类型是pods
verbs: ["get", "list", "watch"]# 允许的操作是get、list和watch在这个例子中,我们创建了一个名为pod-reader的Role,它答应用户读取(get、list、watch)命名空间default中的Pods资源。

[*]apiGroups字段指定了资源所属的API群组。空字符串("")表示焦点API群组,即没有特定群组的资源,如Pods、Services等。对于属于特定群组的资源,你需要在这里指定相应的群组名称。
[*]resources字段是一个字符串数组,列出了该规则适用的资源类型。在这个例子中,我们指定了pods资源类型。
[*]verbs字段是一个字符串数组,列出了答应在资源上执行的操作。在这个例子中,我们答应get、list和watch操作。
除了这些根本字段外,Role规则还可以包含其他字段,如resourceNames,用于指定规则适用的具体资源对象的名称。
请注意,Role和ClusterRole之间的主要区别在于它们的作用范围:Role仅适用于特定的命名空间,而ClusterRole适用于整个集群。在创建Role或ClusterRole时,你需要根据你的需求选择合适的作用范围。
最后,为了将脚色绑定到用户、组或服务账户,你还需要创建RoleBinding(对于命名空间级别的脚色)或ClusterRoleBinding(对于集群级别的脚色)。这些绑定将脚色与主体相干联,从而实现访问控制。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: K8s中Role(ClusterRole)资源类型rules字段详解