как проверить, включен ли 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