问题描述
我已将我的集群 (k3d) 设置为具有一些 RBAC 规则,并且还创建了一个证书来为 kubectl
命令识别我的用户。我已将用户设置为通过特定命名空间中的 Role
获得 RoleBinding
。
我想让他们可以创建 Deployment
、Pod
、Service
,但不能创建 Secret
或 ConfigMap
。如果我这样做,他们是否能够使用 Helm 来安装东西? Helm 不将有关发布的信息存储在 Secret
或 ConfigMap
中吗?
示例角色
#################################################################################
################################## Example Role #################################
#################################################################################
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
Metadata:
name: my-role
namespace: my-namespace
rules:
- apiGroups: ["","extensions","apps"]
# Leaving out "configmaps" and "secrets"
resources: ["pods","deployments","services"]
verbs: ["*"]
解决方法
是的,不幸的是你必须这样做。但从好的方面来说,你可以通过将动词定义为
来限制["get,list,create"]
不是
["*"]
这赋予了全部权限。 我建议你检查https://kubernetes.io/docs/reference/access-authn-authz/rbac 以获得清晰的视图并确定您在 kubernetes 方面的需求和能力。
示例动词:
verbs: ["get","list","watch","create","update","patch","delete"]
您也可以使用以下链接中的 can-i 工具检查您的用户能力。
https://kubernetes.io/docs/reference/access-authn-authz/authorization/
希望这些链接可以帮助您。
顺便说一句,看看 Kind: 标签的图表和 yaml 文件。
这些是您需要访问的内容。