我正在尝试在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
它说“找不到资源”,而不是错误信息。这是否意味着启用了RBAC?kuebctl describe cluster
不是一件事我知道也许这是x-y problem,因为我正在安装的helm软件包可能需要启用RBAC。但是,我仍然想知道如何检查它是否启用/禁用。
你可以通过执行命令kubectl api-versions
来检查这个;如果启用了RBAC,您应该看到API版本.rbac.authorization.k8s.io/v1
。
在AKS中,最好的方法是在resources.azure.com上检查集群的资源详细信息。如果您可以发现"enableRBAC": true
,则您的群集已启用RBAC。请注意,现有的非RBAC启用的AKS群集目前无法更新以供RBAC使用。 (感谢@DennisAmeling的澄清)
我希望有更好的方法,但我使用的是:
$ kubectl cluster-info dump | grep authorization-mode
如果你可以执行它,你应该看到在那里列出的RBAC
,如果你没有权限这样做,那么很可能启用了RBAC。
对于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,则必须创建新群集。
选项#1:如果您有权访问主节点,请登录并查看以下内容
ps -aef | grep -i apiserver
The options should have --authorization-mode=RBAC otherwise RBAC not enabled.
选项#2:
kubectl get clusterroles | grep -i rbac
希望这可以帮助
Rgds Sudhakar
ps -aef | grep -i apiserver
是最容易找到的方法。
对于Azure(AKS),我认为Azure CLI运行良好。
az resource show -g <resource group name> -n <cluster name> --resource-type Microsoft.ContainerService/ManagedClusters --query properties.enableRBAC
它与使用resources.azure.com基本相同,但我发现使用Azure CLI更快