Kubernetes Dashboard 1.7.1设View角色仍可操作,如何实现只读访问?
解决Kubernetes Dashboard 1.7.1只读模式配置问题
我之前也碰到过一模一样的情况——明明给Dashboard绑定了view集群角色,结果还是能执行删除、编辑这类写操作。后来发现问题出在两个地方:一是Dashboard默认没开启强制只读的启动参数,二是可能残留了高权限的绑定关系。下面是具体的解决步骤:
1. 清理多余的权限绑定
首先得确认Dashboard用的ServiceAccount(默认是kubernetes-dashboard)有没有绑定其他高权限角色:
kubectl get clusterrolebindings | grep kubernetes-dashboard
如果输出里有edit、admin这类角色的绑定,直接删掉:
kubectl delete clusterrolebinding <多余的绑定名称>
然后确保只保留和view角色的绑定:
kubectl create clusterrolebinding kubernetes-dashboard-view --clusterrole=view --serviceaccount=kube-system:kubernetes-dashboard
2. 修改Deployment添加只读启动参数
Dashboard 1.7.1支持通过--readonly启动参数强制禁用所有写操作,这个参数会直接隐藏删除、编辑、缩放这些操作按钮,同时拦截写请求:
- 编辑Dashboard的Deployment:
kubectl edit deployment kubernetes-dashboard -n kube-system
- 在容器的
args列表里新增--readonly参数,修改后片段如下:
spec: template: spec: containers: - args: - --auto-generate-certificates - --readonly # 新增这一行开启只读模式 image: kubernetesui/dashboard:v1.7.1 # 其余配置不变
- 保存退出后,Deployment会自动重启Pod,等Pod就绪即可:
kubectl get pods -n kube-system | grep kubernetes-dashboard
3. 验证只读效果
重新登录Dashboard后,你会发现:
- Delete、Scale、Edit YAML这些操作按钮全部消失
- 仅能查看资源详情、查看日志,无法进行任何修改类操作
如果还是有异常,排查下是否存在命名空间级别的RoleBinding给了Dashboard额外权限:
kubectl get rolebindings -A | grep kubernetes-dashboard
如果有这类绑定,直接删除即可。
内容的提问来源于stack exchange,提问作者Anita Kumar
相关产品推荐
相关产品推荐

