как проверить, включен ли RBAC, используя kubectl

Я пытаюсь установить пакет helm на кластере kubernetes, который, как утверждается, отключен RBAC. Я получаю ошибку разрешения, clusterroles.rbac.authorization.k8s.io, что я ожидал бы, если бы RBAC был включен.

Есть ли способ проверить с kubectl, действительно ли RBAC отключен?

Что я пробовал:

  • kubectl describe nodes --all-namespaces | grep -i rbac kubectl describe nodes --all-namespaces | grep -i rbac: ничего не получается
  • kubectl describe rbac --all-namespaces | grep -i rbac kubectl describe rbac --all-namespaces | grep -i rbac: ничего не получается
  • kubectl config get-contexts | grep -i rbac kubectl config get-contexts | grep -i rbac: ничего не получается
  • k get clusterroles говорит "Нет ресурсов", а не сообщение об ошибке. Значит ли это, что RBAC включен?
  • kuebctl describe cluster не вещь

Я знаю, что, возможно, это проблема xy, потому что возможно, что пакет helm, который я устанавливаю, ожидает, что RBAC будет включен. Но все же, я хотел бы знать, как проверить, включено ли оно или нет.

Ответ 1

Вы можете проверить это, выполнив команду kubectl api-versions; если RBAC включен, вы должны увидеть версию API .rbac.authorization.k8s.io/v1.

В AKS лучший способ - проверить информацию о ресурсах кластера на resources.azure.com. Если вы можете определить "enableRBAC": true, в вашем кластере включен RBAC. Обратите внимание, что существующие кластеры AKS, не поддерживающие RBAC, в настоящее время не могут быть обновлены для использования RBAC. (спасибо @DennisAmeling за разъяснения)

Ответ 2

Я хочу, чтобы был лучший способ, но то, что я использую:

$ kubectl cluster-info dump | grep authorization-mode

Если вы можете его выполнить, вы должны либо увидеть там RBAC либо нет, и если у вас нет разрешений для этого, есть вероятность, что RBAC включен.

Ответ 3

Для Azure (AKS) это немного сложнее. В то время как команда kubectl api-versions действительно возвращает rbac.authorization.k8s.io/v1, команда kubectl get clusterroles не возвращает систему по умолчанию system: роли с префиксами.

Лучший способ проверить наличие AKS - это проверить информацию о ресурсах кластера, например, на resources.azure.com. Если "enableRBAC": true, в вашем кластере включен RBAC. Существующие кластеры AKS, не поддерживающие RBAC, в настоящее время не могут быть обновлены для использования RBAC. Поэтому, если вы хотите включить RBAC на AKS, вам придется создать новый кластер.

Ответ 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

Ответ 5

ps -aef | grep -i apiserver ps -aef | grep -i apiserver - самый простой способ выяснить это.

Ответ 6

Для 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