web-dev-qa-db-ja.com

kubectlを使用して、RBACが有効になっているかどうかを確認する方法

RBACが無効になっているとされるkubernetesクラスターにhelmパッケージをインストールしようとしています。 RBACがenabledだった場合に予想されるclusterroles.rbac.authorization.k8s.ioに言及する許可エラーが表示されます。

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の問題 であることを認識しています。インストールしようとしているhelmパッケージがRBACが有効になることを期待している可能性があるからです。それでも、有効/無効になっているかどうかを確認する方法を知りたいです。

33
falsePockets

これを確認するには、コマンドkubectl api-versions;を実行します。 RBACが有効になっている場合、APIバージョン.rbac.authorization.k8s.io/v1が表示されます。

AKSでの最善の方法は、 resources.Azure.com でクラスターのリソースの詳細を確認することです。 "enableRBAC": trueを見つけることができる場合、クラスターでRBACが有効になっています。既存の非RBAC対応AKSクラスターは、現在RBAC用に更新できないことに注意してください。 (説明をありがとう@DennisAmeling)

52
danielepolencic

もっと良い方法があればいいのですが、私が使用しているのは:

$ kubectl cluster-info dump | grep authorization-mode

実行できる場合は、RBACがリストされているかどうかが表示され、実行する権限がない場合は、RBACが有効になっている可能性があります。

12

Azure(AKS)の場合、これはもう少し注意が必要です。 kubectl api-versionsコマンドは実際にrbac.authorization.k8s.io/v1を返しますが、kubectl get clusterrolesコマンドはデフォルトのsystem:プレフィックス付きロールを返しません。

AKSを確認する最善の方法は、クラスターのリソースの詳細を確認することです。 resources.Azure.com で。 "enableRBAC": trueの場合、クラスターでRBACが有効になっています。既存の非RBAC対応AKSクラスター 現在は更新できません RBAC用。そのため、AKSでRBACを有効にするには、新しいクラスターを作成する必要があります。

6
Dennis Ameling

オプション#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

4
Sudhakar MNSR

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 を使用する方が速いことがわかります

3
Olav Nybø

ps -aef | grep -i apiserverを見つけるのが最も簡単な方法です。

1
vin84