kubernetes - 允许 Kubernetes 用户列表/获取命名空间
问题描述
我有以下用户清单,我想允许 myapp-user 获取集群中所有命名空间的列表。从我查找的内容来看,我应该创建一个 ClusterRole,但我真的找不到足够的细节。是否有所有 apiGroups 以及相应的资源和动词的列表?
apiVersion: v1
kind: ServiceAccount
metadata:
name: myapp-user
namespace: myapp
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: myapp-user-role
namespace: myapp
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["*"]
verbs: ["*"]
- apiGroups: ["batch"]
resources:
- jobs
- cronjobs
verbs: ["*"]
- apiGroups: ["networking.k8s.io"]
resources:
- ingress
verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: myapp-user
namespace: myapp
subjects:
- kind: ServiceAccount
name: myapp-suer
namespace: myapp
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: myapp-user-role
我虽然将它添加到 role.rules 可能会有所帮助,但不幸的是没有
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["GET"]
解决方案
您可以通过以下方式获取 API 资源
kubectl api-resources
NAME SHORTNAMES APIGROUP NAMESPACED KIND
bindings true Binding
componentstatuses cs false ComponentStatus
configmaps cm true ConfigMap
endpoints ep true Endpoints
events ev true Event
limitranges limits true LimitRange
namespaces ns false Namespace
nodes no false Node
persistentvolumeclaims pvc true PersistentVolumeClaim
persistentvolumes pv false PersistentVolume
对于创建 clusterrole 和 clusterolebinding 下面的命令应该可以工作。
kubectl create clusterrole cr --verb=get,list --resource=namespaces
kubectl create clusterrolebinding crb --clusterrole=cr --serviceaccount=default:default
然后进行测试
kubectl auth can-i get ns --as=system:serviceaccount:default:default
kubectl auth can-i list ns --as=system:serviceaccount:default:default
推荐阅读
- ruby-on-rails - 如何使用 capistrano gem 部署 rails + react 项目?
- javascript - 在同一页面上运行 2 个幻灯片
- python - Python lxml将dom对象写入文件
- java - 在 java 中使用 ScriptEngineManager 定义变量
- javascript - 如何使用递归生成器动画算法步骤
- excel - 数组下标超出范围错误的 For 循环
- javascript - 自定义 vuetify 幻灯片组中的导航按钮
- excel - VBA,将所选数据从 50 个 Excel 工作簿传输到单个目标 Excel 工作簿
- amazon-web-services - 模糊角色映射规则:cognito with microsoft active directory
- python - 如何使用 Django 为每个唯一 ID 创建新网页