如何使用kubectl检查RBAC是否已启用

问题描述 投票:24回答:6

我正在尝试在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。但是,我仍然想知道如何检查它是否启用/禁用。

kubernetes kubectl rbac
6个回答
47
投票

你可以通过执行命令kubectl api-versions来检查这个;如果启用了RBAC,您应该看到API版本.rbac.authorization.k8s.io/v1

在AKS中,最好的方法是在resources.azure.com上检查集群的资源详细信息。如果您可以发现"enableRBAC": true,则您的群集已启用RBAC。请注意,现有的非RBAC启用的AKS群集目前无法更新以供RBAC使用。 (感谢@DennisAmeling的澄清)


11
投票

我希望有更好的方法,但我使用的是:

$ kubectl cluster-info dump | grep authorization-mode

如果你可以执行它,你应该看到在那里列出的RBAC,如果你没有权限这样做,那么很可能启用了RBAC。


6
投票

对于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,则必须创建新群集。


4
投票

选项#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


1
投票

ps -aef | grep -i apiserver是最容易找到的方法。


1
投票

对于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更快

© www.soinside.com 2019 - 2024. All rights reserved.