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名称空间。

enter image description here

此外,我能够使用自己的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

在仪表板中使用它时,它应该具有相同的作用。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...