1

L'im jeton d'accès obtenir avec gcloud auth print-access-token est évidemment un jeton d'accès différent de celui que je peux obtenir avec un code python de base:comment obtenir un jeton d'accès RME avec python/liste images docker

export GOOGLE_APPLICATION_CREDENTIALS=/the-credentials.json 
from oauth2client.client import GoogleCredentials 
credentials = GoogleCredentials.get_application_default() 
credentials.get_access_token() 

Qu'est-ce que je suis essayer de faire est d'obtenir un jeton qui travaillerait avec:

curl -u _token:<mytoken> https://eu.gcr.io/v2/my-project/my-docker-image/tags/list 

Je préfère ne pas installer l'utilitaire gcloud comme une dépendance pour mon application, donc mes tentatives pour obtenir jeton progrmatically l'accès par serment les informations d'identification de Google

+0

J'ai essentiellement la même question - Do Nous avons vraiment besoin d'installer l'utilitaire humongous gcloud juste pour faciliter cette étape symbolique? Sûrement il y a une autre manière ... – spechter

Répondre

2

Je pense qu'il ya quelques questions:

gcloud auth print-access-token vs GoogleCredentials.get_application_default()

gcloud ne définit pas les informations d'identification par défaut d'application par défaut plus lorsque vous effectuez une gcloud auth login, de sorte que le access_token vous » Re obtenir de gcloud auth print-access-token va être celui correspondant à l'utilisé que vous avez utilisé pour vous connecter.

Tant que vous suivez les instructions pour créer ADC pour un compte de service, ce compte a the necessary permissions et l'environnement à partir duquel vous exécutez le script a accès à l'ENV var et le fichier adc.json, vous devriez être bien.

Comment faire curl travail

L'API Docker Registre précise qu'un échange symbolique devrait se produire, échanger votre auth de base (à savoir Authorization: Basic base64(_token:<gcloud_access_token>)) pour un jeton porteur de courte durée. Ce processus peut être un peu impliqué, mais est documenté here under "How to authenticate" and "Requesting a Token". Remplacez auth.docker.io/token par eu.gcr.io/v2/token et service=registry.docker.io par service=eu.gcr.io, etc. Utilisez curl -u oauth2accesstoken:<mytoken> ici.

Voir aussi: How to list images and tags from the gcr.io Docker Registry using the HTTP API?

éviter la question tout à fait

Nous avons une lib python qui pourrait être utile à vos besoins: https://github.com/google/containerregistry

+0

Salut, malheureusement je ne trouve pas cette réponse très utile. La partie 1 explique sth que j'ai suivi et n'ai eu aucun problème avec. La deuxième partie admet que le processus peut être impliqué et spécifie qu'il existe une solution si je fais une série de remplacements et quelques requêtes. Enfin, vous faites référence à un "lib" qui n'est pas documenté du tout. Pas de description, pas de cas d'utilisation, rien. Juste "lisez-le-code-si-vous-voulez-savoir-ce-que-fait". Id appuyez sur -1 sur ce, mais im trop faible rep :( –