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(对于集群级别的角色)。这些绑定将角色与主体相关联,从而实现访问控制。
本文来自博客园,作者:dashery,转载请注明原文链接:https://www.cnblogs.com/ydswin/p/18053807
热门相关:总裁大人,又又又吻我了 抗战老兵之不死传奇 唐朝小官人 妖夏 盛唐小园丁