我试图在kubernetes集群上安装helm软件包,但据称该集群禁用了RBAC。我收到了一个权限错误,提示clusterroles.rbac.authorization.k8s.io
,如果RBAC * 启用 *,我会收到这个错误。
是否有方法使用kubectl
检查RBAC是否真的被禁用?
我尝试过:
kubectl describe nodes --all-namespaces | grep -i rbac
:未出现任何内容kubectl describe rbac --all-namespaces | grep -i rbac
:未出现任何内容kubectl config get-contexts | grep -i rbac
:未出现任何内容k get clusterroles
它说“No resources found”,而不是一个错误消息。那么这是否意味着RBAC * 是 * 启用的?kuebctl describe cluster
不是一个东西
我知道这可能是x-y problem,因为我正在安装的helm包可能希望启用RBAC。但我仍然想知道如何检查它是否启用/禁用。
8条答案
按热度按时间5ssjco0h1#
您可以通过执行命令
kubectl api-versions
来检查这一点;如果启用了RBAC,您应该会看到API版本.rbac.authorization.k8s.io/v1
。在AKS中,最好的方法是检查resources.azure.com处的群集资源详细信息。如果您能发现
"enableRBAC": true
,则说明您的群集启用了RBAC。请注意,现有的未启用RBAC的AKS群集当前无法更新为使用RBAC。(感谢@DennisAmeling的澄清)vxf3dgd42#
我希望有更好的方法,但我使用的是:
如果您可以执行它,您应该会看到
RBAC
列在那里或没有,如果您没有权限这样做,那么,RBAC可能是启用的。snz8szmq3#
对于Azure(AKS)来说,这有点棘手。虽然
kubectl api-versions
命令确实返回rbac.authorization.k8s.io/v1
,但kubectl get clusterroles
命令不返回默认的system:
前缀角色。检查AKS的最佳方法是检查群集的资源详细信息,例如resources.azure.com。如果
"enableRBAC": true
,则说明您的群集已启用RBAC。现有未启用RBAC的AKS群集cannot currently be updated可供RBAC使用。因此,如果要在AKS上启用RBAC,则必须创建新群集。vbopmzt14#
对于Azure(AKS),我认为Azure CLI工作得很好。
它与使用resources.azure.com基本相同,但我发现使用Azure CLI更快
ejk8hzay5#
选项#1:如果您有访问主节点的权限,请登录并检查以下内容
选项2:
希望这对你有帮助
鲁格兹·苏达卡尔
inb24sb26#
ps -aef | grep -i apiserver
是找出答案的最简单方法。gkl3eglg7#
对于AKS,如果您有多个集群(您确实有,对吗?),您可以通过以下方式获得
enabledRbac
属性的列表r8xiu3jd8#
这些解决方案没有一个是通用的。它们在某些地方工作,但在其他地方不工作。唯一可靠的方法是实际测试RBAC API,看看它是否强制实施权限。您可以这样做:
由于此服务帐户没有角色绑定,因此在启用RBAC时无法执行任何操作。在禁用RBAC时,此情况会发生变化。
然后,您可以使用kubectl来确定是否强制执行访问权限
RBAC关闭
启用RBAC