Python-клиент для доступа к кластеру kubernetes на GKE - PullRequest
1 голос
/ 06 октября 2019

Я пытаюсь получить программный доступ к кластеру kubernetes, работающему в Google Cloud. Я настроил учетную запись службы и указал GOOGLE_APPLICATION_CREDENTIALS на соответствующий файл учетных данных. Мне удалось получить кластер и учетные данные следующим образом:

import google.auth
from google.cloud.container_v1 import ClusterManagerClient
from kubernetes import client

credentials, project = google.auth.default(
    scopes=['https://www.googleapis.com/auth/cloud-platform',])

credentials.refresh(google.auth.transport.requests.Request())

cluster_manager = ClusterManagerClient(credentials=credentials)
cluster = cluster_manager.get_cluster(project, 'us-west1-b', 'clic-cluster')

Пока все хорошо. Но затем я хочу начать использовать клиент kubernetes:

config = client.Configuration()
config.host = f'https://{cluster.endpoint}:443'
config.verify_ssl = False
config.api_key = {"authorization": "Bearer " + credentials.token}
config.username = credentials._service_account_email

client.Configuration.set_default(config)

kub = client.CoreV1Api()
print(kub.list_pod_for_all_namespaces(watch=False))

И я получаю сообщение об ошибке, подобное этому:

pods запрещено: Пользователь "12341234123451234567" не можетперечислить ресурс "pods" в группе API "" в области действия кластера: требуется разрешение "container.pods.list".

Я нашел этот веб-сайт , описывающий container.pods.list, но я не знаю, куда мне добавить его или как оно относится к областям API , описанным здесь .

1 Ответ

2 голосов
/ 06 октября 2019

В соответствии с ошибкой:

pods запрещено: пользователь "12341234123451234567" не может перечислить "pods" ресурса в группе API "" в области действия кластера: требуется разрешение "container.pods.list".

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

Полный список разрешений, упомянутых в https://cloud.google.com/kubernetes-engine/docs/how-to/iam,гласит следующее:

Существуют различные роли, которые можно здесь учитывать:

  • Если вы можете получить кластер, то он покрывается несколькими ролями разделы, такие как: Kubernetes Engine Cluster Admin, Kubernetes Engine Cluster Viewer, Kubernetes Engine Developer & Kubernetes Engine Viewer
  • Принимая во внимание, что если вы хотите перечислить стручки kub.list_pod_for_all_namespaces(watch=False), то вам может потребоваться Kubernetes Engine Viewer доступ.

enter image description here

Вы сможете добавить несколько ролей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...