RBAC(Role-Based Access Control)是 Kubernetes 中用于控制用户对资源的访问权限的一种机制。通过 RBAC,您可以定义哪些用户或服务账户可以执行哪些操作,例如创建、更新或删除资源。

在 Kubernetes 中,RBAC 角色授权规则由四个主要的组成部分组成:

  1. Role:角色定义了一组权限,可以授予给用户或服务账户。角色可以限定对特定资源的操作,如 Pod、Service、Deployment 等。

  2. RoleBinding:角色绑定将角色授予给指定的用户或服务账户,将权限与用户或服务账户关联起来。

  3. ClusterRole:集群角色类似于角色,但是它作用于整个集群而不仅仅是单个命名空间。

  4. ClusterRoleBinding:集群角色绑定将集群角色授予给用户或服务账户,将权限与用户或服务账户关联起来,并作用于整个集群。

下面是一个简单的例子,演示如何创建一个角色并将其绑定到用户:

  1. 创建一个角色对象:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]
  1. 创建一个角色绑定对象,将角色绑定到指定的用户:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: default
subjects:
- kind: User
  name: alice
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

在这个例子中,我们创建了一个名为 “pod-reader” 的角色,该角色允许用户执行对 Pods 资源的 get、watch 和 list 操作。然后,我们创建了一个名为 “read-pods” 的角色绑定,将角色绑定到名为 “alice” 的用户。

通过 RBAC 权限控制,您可以细粒度地控制用户对 Kubernetes 资源的访问权限,从而增强集群的安全性。您可以根据实际需求创建不同的角色和角色绑定,以满足不同用户或服务账户的权限要求。