用于在GKE上访问kubernetes集群的Python客户端

时间:2019-10-06 11:28:54

标签: python kubernetes google-kubernetes-engine

我正在努力以编程方式访问在Google Cloud上运行的kubernetes集群。我已经建立了一个服务帐户,并将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))

我收到这样的错误消息:

禁止播客:用户“ 12341234123451234567”无法在群集范围内的API组“”中列出资源“ pods”:必需的“ container.pods.list”权限。

我发现this website描述了container.pods.list,但是我不知道应该在哪里添加它,或者它与API作用域described here之间的关系。

1 个答案:

答案 0 :(得分:2)

根据错误:

  

禁止播客:用户“ 12341234123451234567”无法列出资源   群集范围内的API组“”中的“ pods”:必需   “ container.pods.list”权限。

看来您要使用的用户凭据似乎没有列出豆荚的权限。

https://cloud.google.com/kubernetes-engine/docs/how-to/iam中提到的权限的完整列表说明如下:

这里可以考虑到不同的角色:

  • 如果您能够获得集群,则可以使用多个角色部分进行介绍,例如:Kubernetes Engine Cluster AdminKubernetes Engine Cluster ViewerKubernetes Engine Developer和{{1} }
  • 因此,如果您要列出广告连播Kubernetes Engine Viewer,则可能需要kub.list_pod_for_all_namespaces(watch=False)访问权限。

enter image description here

您应该能够添加多个角色。