如何解决kubernetes限制了对仪表板的访问
我想创建一个仅具有受限访问权限的服务帐户。
让我们说我有namespace
叫 devops
我想创建一个service account
,仅访问devops并执行我在以下角色中设置的操作。
kubectl create clusterrole devops-dash-role --verb=get,list --resource=pods --namespace=devops
我只希望该服务帐户只能在该资源上访问该命名空间。
然后这是我的service account
kubectl create serviceaccount devops-dash-sa -namespace devops
这是我如何绑定它们
kubectl create clusterrolebinding devops-dash-rb --clusterrole=devops-dash-role --serviceaccount=devops:devops-dash-sa
这就是我获取令牌的方式。
kubectl describe secret devops-dash-sa-token-spnpm -n devops
然后将令牌提取到那里。
但是登录到仪表板后,它什么也没有显示。也默认为default
名称空间。
此外,我能够使用自己的kubeconfig
文件创建自己的用户(该文件有限制),但是根据我的研究,该用户也需要令牌,因此我最终创建了服务帐户
已更新: 在命令下面尝试了这个
kubectl create role devops-admin-role --verb="*" --resource="*" --namespace=devops
kubectl create serviceaccount devops-admin-sa --namespace devops
kubectl create rolebinding devops-admin-role-sa-rb --clusterrole=devops-admin-role --serviceaccount=devops:devops-admin-sa
但是在尝试执行此kubectl --as system:serviceaccount:devops:devops-admin-sa get po -n devops
这给我一个错误:Error from server (Forbidden): pods is forbidden: User "system:serviceaccount:devops:devops-admin-sa" cannot list resource "pods" in API group "" in the namespace "devops"
解决方法
角色:
kubectl create role devops-dash-role --verb=get,list --resource=pods --namespace=devops
服务帐户
kubectl create serviceaccount devops-dash-sa --namespace devops
角色绑定:
kubectl create rolebinding devops-dash-rb --clusterrole=devops-dash-role --serviceaccount=devops:devops-dash-sa --namespace devops
这就是您所需要的。
您还可以使用:
--verb="*" --resource="*"
授予对所有资源的访问权限,并且由于角色和角色绑定是命名空间,因此这些权限将仅在它们存在的命名空间中授予。
现在开始尝试:
# default namespace
$ kubectl --as system:serviceaccount:devops:devops-dash-sa get po
Error from server (Forbidden): pods is forbidden: User "system:serviceaccount:devops:devops-dash-sa" cannot list resource "pods" in API group "" in the namespace "default"
# devops namespace
$ k --as system:serviceaccount:devops:devops-dash-sa get po -n devops
No resources found in devops namespace
在仪表板中使用它时,它应该具有相同的作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。