Python クライアント経由で kubernetes を呼び出す単純なスクリプトを実行しています。
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}')
このクライアントに対する私の理解に何か問題がありますか? これについて何か助けていただければ幸いです!
kubernetes python ライブラリの 3.0.0 リリースを使用しています。参考になる場合は、ここに私のものがあります.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