我正在努力以编程方式访问在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之间的关系。
答案 0 :(得分:2)
根据错误:
禁止播客:用户“ 12341234123451234567”无法列出资源 群集范围内的API组“”中的“ pods”:必需 “ container.pods.list”权限。
看来您要使用的用户凭据似乎没有列出豆荚的权限。
https://cloud.google.com/kubernetes-engine/docs/how-to/iam中提到的权限的完整列表说明如下:
这里可以考虑到不同的角色:
Kubernetes Engine Cluster Admin
,Kubernetes Engine Cluster Viewer
,Kubernetes Engine Developer
和{{1} } Kubernetes Engine Viewer
,则可能需要kub.list_pod_for_all_namespaces(watch=False)
访问权限。您应该能够添加多个角色。