Не удается пройти проверку подлинности с помощью Python-клиента Kubernetes?
Я запускаю простой скрипт, который вызывает kubernetes через клиент python:
from kubernetes import client, config
# Configs can be set in Configuration class directly or using helper utility
config.load_kube_config()
v1 = client.CoreV1Api()
print("Listing pods with their IPs:")
ret = v1.list_pod_for_all_namespaces(watch=False)
for i in ret.items:
print("%s\t%s\t%s" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))
,
Однако он не может получить правильные учетные данные. Я могу использовать интерфейс командной строки kubectl, который, как я заметил, заполняет мой .kube/config
файл с токеном доступа и сроком действия всякий раз, когда я делаю команду (например, kubectl get pods
).
Пока этот токен не истек, мой скрипт на Python работает нормально. Однако, как только срок действия этого токена истекает, он, кажется, не может его обновить, вместо этого происходит сбой и указание установить GOOGLE_APPLICATION_CREDENTIALS
, Конечно, когда я создал сервис-аккаунт с ключевым файлом и указал GOOGLE_APPLICATION_CREDENTIALS
к этому ключевому файлу, он дал мне следующую ошибку:
RefreshError: ('invalid_scope: Empty or missing scope not allowed.', u'{\n "error" : "invalid_scope",\n "error_description" : "Empty or missing scope not allowed."\n}')
Что-то не так с моим пониманием этого клиента? Цени любую помощь с этим!
Я использую версию 3.0.0 библиотеки питона kubernetes. В случае, если это полезно, вот мой .kube/config
:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: <CERTIFICATE_DATA>
server: <IP_ADDRESS>
name: <cluster_name>
contexts:
- context:
cluster: <cluster_name>
user: <cluster_name>
name: <cluster_name>
users:
- name: <cluster_name>
user:
auth-provider:
config:
access-token: <SOME_ACCESS_TOKEN>
cmd-args: config config-helper --format=json
cmd-path: /usr/lib/google-cloud-sdk/bin/gcloud
expiry: 2017-11-10T03:20:19Z
expiry-key: '{.credential.token_expiry}'
token-key: '{.credential.access_token}'
name: gcp