我已经设置了一个 microk8s k8s 集群。
我已经在 kube-system 命名空间中启用了 kubernetes 仪表板。
我有一个名为 XXX 的命名空间,我想在仪表板中显示这个命名空间,并且只显示这个命名空间。
我已经创建了服务帐户、机密、角色和角色绑定:
apiVersion: v1
kind: ServiceAccount
metadata:
name: dashboard-account
namespace: xxx
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: dashboard-role
namespace: xxx
rules:
- apiGroups: [""]
resources: ["*"]
verbs: ["*"]
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: role-binding-dashboard-account
namespace: xxx
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: dashboard-role
subjects:
- kind: ServiceAccount
name: dashboard-account
namespace: xxx
apiVersion: v1
kind: Secret
metadata:
name: dashboard-account-secret
namespace: xxx
annotations:
kubernetes.io/service-account.name: dashboard-account
type: kubernetes.io/service-account-token
现在我需要获取某种令牌(或 kubeconfig?)。我有一个名为 Lens 的 k8s-client,在其中我可以看到以下内容:
如果我使用图片中可见的令牌连接到仪表板,我会看到所有命名空间。同样,如果我使用图片中的 kubeconfig,我也会看到所有命名空间。
我怎样才能限制仪表板仅显示命名空间 xxx?
答案1
您是否看到了 microk8s 集群的所有命名空间?
如果是这种情况,请检查仪表板帐户权限/角色。
答案2
查看
kubectl 获取 clusterrolebinding -o yaml | grep -B 5 -A 5'dashboard-account'
如果找到一个,则意味着您的仪表板帐户对集群具有某些权限。如果您什么也找不到,请检查它们是否是链接到仪表板帐户的其他命名空间的一些角色绑定。
kubectl 获取角色绑定 --all-namespaces -o yaml | grep -B 5 -A 5'dashboard-account'
如果你什么都没找到,那我就不知道了。访问权限由角色和角色绑定定义。
您可以尝试检查服务帐户部分: https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/
在此它们也是 ServiceAcccount 权限的一部分 https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/