我知道角色用于向用户或服务帐户授予权限以在特定名称空间中执行操作。典型的角色定义可能是这样的
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: mynamespace
name: my-role
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
但是在服务帐户的定义中,我们也可以看到名称空间字段
apiVersion: v1
kind: ServiceAccount
metadata:
name: my-serviceac
namespace: mynamespace
我的问题是:1.名称空间范围是否应用于用户/服务帐户或角色?2.如果服务帐户和角色中的名称空间不同,该怎么办
角色绑定定义以供参考
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: my-rolingbinding
namespace: mynamespace
subjects:
- kind: ServiceAccount
name: my-serviceac
namespace: mynamespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: my-role
服务帐户作为角色资源是命名空间范围的:这允许根据角色]将特定操作限制为给定的经过身份验证的用户(在本示例中为服务帐户) 。
由于我们正在谈论RBAC,您需要第三个资源将特定的Role资源绑定到给定的Service Account:这里是Role Binding,另一个命名空间范围的资源,将这些策略映射到给定的用户集。
由于这三个组件都是严格的名称空间,因此它们必须都位于同一名称空间中;否则,引用服务帐户将无效。