我正在尝试在据称已禁用RBAC的kubernetes集群上安装helm软件包。
我收到一个提到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,因为我正在安装的头盔包可能期望启用RBAC。但是,我仍然想知道如何检查它是否已启用。
答案 0 :(得分:34)
您可以通过执行命令kubectl api-versions
进行检查;如果启用了RBAC,则应该看到API版本.rbac.authorization.k8s.io/v1
。
在AKS中,最好的方法是在resources.azure.com处检查群集的资源详细信息。
如果可以发现"enableRBAC": true
,则说明您的群集已启用RBAC。
请注意,现有的未启用RBAC的AKS群集当前无法更新以供RBAC使用。 (感谢@DennisAmeling的澄清)
答案 1 :(得分:9)
我希望有更好的方法,但是我使用的是:
$ kubectl cluster-info dump | grep authorization-mode
如果可以执行它,则应该在此处列出RBAC
,或者如果没有执行此权限,那么很可能启用了RBAC。
答案 2 :(得分: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,则必须创建一个新集群。
答案 3 :(得分:3)
选项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 苏达喀尔
答案 4 :(得分:0)
对于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更快