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

how to check whether RBAC is enabled, using kubectl

我正在尝试在据称禁用了 RBAC 的 kubernetes 集群上安装 helm 包。 我收到一个提到 clusterroles.rbac.authorization.k8s.io 的权限错误,如果 RBAC enabled.

,这正是我所期望的

有没有办法检查 kubectl RBAC 是否真的被禁用了?

我尝试过的:

我知道这可能是 x-y problem 因为我正在安装的 helm 包可能需要启用 RBAC。但是,我仍然想知道如何检查它是否是 enabled/disabled。

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

$ kubectl cluster-info dump | grep authorization-mode

如果您可以执行它,您应该会看到 RBAC 列在那里,如果您没有执行它的权限,那么,很可能是 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 苏达卡尔

ps -aef | grep -i apiserver 是最简单的找出方法。

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

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

对于 Azure (AKS),这有点棘手。虽然 kubectl api-versions 命令确实 returns rbac.authorization.k8s.io/v1,但 kubectl get clusterroles 命令没有 return 默认的 system: 前缀角色。

检查 AKS 的最佳方法是检查集群的资源详细信息,例如在 resources.azure.com. If "enableRBAC": true, your cluster has RBAC enabled. Existing non-RBAC enabled AKS clusters cannot currently be updated 用于 RBAC。因此,如果您想在 AKS 上启用 RBAC,则必须创建一个新集群。

对于 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, but I find it quicker to use the Azure CLI

基本相同