web-dev-qa-db-ja.com

cluster-adminのGKE clusterrolebindingがアクセス許可エラーで失敗する

Kubernetes 1.7.5を実行しているGoogle Container Engineを使用して、新しいRBAC権限を有効にして新しいクラスターを作成しました。一部のサービスにアクセス許可を割り当てる際に問題が発生したため、次のようになりました。

RBACでコンテナエンジンを使用するための docs は、次のコマンドを実行して、ユーザーに許可ロールを作成する権限を付与する必要があることを示しています。

kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin [--user=<user-name>]

ただし、これは権限がないため失敗します(上記のコマンドを実行して付与しようとしている権限とまったく同じ権限であると想定します)。

Error from server (Forbidden): 
User "<user-name>" cannot create clusterrolebindings.rbac.authorization.k8s.io at the cluster scope.: 
  "Required \"container.clusterRoleBindings.create\" permission." 
  (post clusterrolebindings.rbac.authorization.k8s.io)

これにより、クラスターサービスに必要なアクセス許可を作成できなくなりますので、ご協力いただければ幸いです。

15
rmtmckenzie

Janosの答えは、パスワードを使用して作成されたGKEクラスターで機能しますが、可能な限りそのパスワードの使用を避けること(またはパスワードなしでGKEクラスターを作成すること)をお勧めします。

IAMの使用:ClusterRoleBindingを作成するには、呼び出し元にcontainer.clusterRoleBindings.create権限が必要です。 OWNERおよびKubernetes Engine Admin IAMロールのみにそのアクセス許可が含まれます(GKEクラスターのアクセス制御の変更が許可されるため)。

したがって、[email protected]がそのコマンドを実行できるようにするには、それらのロールのいずれかを付与する必要があります。例えば。:

gcloud projects add-iam-policy-binding $PROJECT \
  --member=user:[email protected] \
  --role=roles/container.admin
20
CJ Cullen

Kubeconfigがgcloudによって自動的に作成された場合、ユーザーは強力な管理ユーザーではありません-バインディングを作成しようとしています。

クラスターで gcloud container clusters describe <clustername> --zone <zone> を使用し、passwordフィールドを探します。

その後、kubectl --username=admin --password=FROMABOVE create clusterrolebinding ...を実行します

32
Janos Lenart