Cette page explique comment vous connecter à Docker ou Helm à l'aide de l'assistant d'identification Managed Harbor Service (MHS) ou des secrets de la CLI.
Pour plus de flexibilité, Google Distributed Cloud (GDC) air-gapped propose deux méthodes d'authentification auprès de Docker et Helm à partir de votre instance de registre Harbor. La première méthode consiste à utiliser l'assistant d'identification Managed Harbor Service (MHS) et votre identité GDC pour vous connecter à la CLI Docker ou Helm. Après vous être authentifié auprès de GDC, vous pouvez vous connecter au client Docker et effectuer des opérations Docker sans avoir à créer ni gérer de secrets de CLI distincts dans Harbor.
La deuxième méthode consiste à utiliser des secrets de la CLI. Après vous être authentifié à l'aide d'Identity-Aware Proxy (IAP) et vous être connecté à l'interface Harbor pour la première fois, utilisez la CLI Docker ou Helm pour accéder à Harbor. Les CLI Docker et Helm ne peuvent pas gérer la redirection pour IAP. Harbor fournit donc un secret de la CLI à utiliser lorsque vous vous connectez à partir de Docker ou Helm. Cette méthode n'est disponible que lorsque Harbor utilise l'authentification IAP.
Avant de commencer
Pour configurer l'authentification Docker et Helm pour les instances de registre Harbor, vous devez installer l'assistant d'identification MHS (docker-credential-mhs) dans votre environnement. L'assistant d'identification est inclus par défaut dans le bundle de la CLI gdcloud. Pour en savoir plus, consultez la présentation de la CLI gdcloud.
Rôles IAM requis
Pour configurer l'authentification pour les instances de registre Harbor, contactez l'administrateur IAM de votre projet afin de demander le rôle Lecteur d'instance Harbor (harbor-instance-viewer), qui vous permet d'obtenir, de lister et de surveiller les instances Harbor dans l'espace de noms du projet. Ce rôle inclut les autorisations requises pour afficher les détails des instances Harbor existantes afin de pouvoir récupérer les URL de registre pour l'authentification.
Se connecter à Docker avec votre identité GDC
Utilisez l'assistant d'identification MHS avec votre identité GDC pour vous connecter à la CLI Docker. Pour vous authentifier auprès de Docker, procédez comme suit :
Connectez-vous au serveur d'API Management avec la CLI GDC en suivant les instructions de la section Se connecter.
Configurez Docker pour qu'il utilise l'assistant d'identification MHS
docker-credential-mhs:TENANT_PROJECT=PROJECT_NAME HARBOR_INSTANCE_NAME=HARBOR_INSTANCE_NAME REGISTRY=$(kubectl get harborinstance $HARBOR_INSTANCE_NAME -n $TENANT_PROJECT -o jsonpath='{.status.url}' | sed s#https://##) docker-credential-mhs configure-docker --registries=${REGISTRY}Remplacez les éléments suivants :
PROJECT_NAME: nom de votre projet locataire. Il s'agit du même projet nom que celui que vous avez fourni lors de la création de votre instance Harbor.HARBOR_INSTANCE_NAME: nom de l'instance Harbor créée dans Créer des instances de registre Harbor.
Suivez les instructions de la section Configurer Docker pour qu'il approuve l'autorité de certification racine Harbor.
Facultatif : Vérifiez que l'assistant d'identification est correctement configuré en vous assurant que l'entrée
mhsest ajoutée à~/.docker/config.json:cat DOCKER_CONFIG_PATHRemplacez
DOCKER_CONFIG_PATHpar le chemin d'accès à votre fichier de configuration Docker. Par exemple,~/.docker/config.json.Le résultat ressemble à ce qui suit :
{ "auths": { "10.200.0.1": { "auth": "YWRtaW46YWRtaW4=" }, "10.200.16.5:10443": { "auth": "YWRtaW46ZEROVVJCVWE1a1FBcE4xQQ==" } }, "credHelpers": { "asia.gcr.io": "gcloud", "eu.gcr.io": "gcloud", "gcr.io": "gcloud", "marketplace.gcr.io": "gcloud", "myinstance-e2e-test-user.org-1.zone1.google.gdch.test": "mhs", "staging-k8s.gcr.io": "gcloud", "us-central1-docker.pkg.dev": "gcloud", "us.gcr.io": "gcloud" } }Cet exemple montre un résultat réussi de
"myinstance-e2e-test-user.org-1.zone1.google.gdch.test": "mhs".Configurez le projet locataire dans
gdcloud:TENANT_PROJECT=PROJECT_NAME gdcloud config set project $TENANT_PROJECTLe résultat suivant s'affiche :
Updated property [core/project].Identifiez un projet Harbor auquel vous avez accès en gestion. Créez un projet Harbor s'il n'en existe pas.
Effectuez des opérations Docker, telles que l'envoi ou l'extraction d'une image :
TENANT_PROJECT=PROJECT_NAME HARBOR_INSTANCE_NAME=HARBOR_INSTANCE_NAME REGISTRY=$(kubectl get harborinstance $HARBOR_INSTANCE_NAME -n $TENANT_PROJECT -o jsonpath='{.status.url}' | sed s#https://##) HARBOR_PROJECT=HARBOR_PROJECT_NAME # Push image docker pull nginx docker tag nginx ${REGISTRY}/${HARBOR_PROJECT}/nginx:latest docker push ${REGISTRY}/${HARBOR_PROJECT}/nginx:latest # Pull image docker pull ${REGISTRY}/${HARBOR_PROJECT}/nginx:latestLe résultat renvoyé en cas de succès ressemble à ce qui suit :
# Push image root@gpc-adhoc-70846130vm-bootstrapper-zone1:~# docker push ${REGISTRY}/harbor-project/nginx:latest The push refers to repository [myinstance-e2e-test-user.org-1.zone1.google.gdch.test/harbor-project/nginx] e4e9e9ad93c2: Pushed 6ac729401225: Pushed 8ce189049cb5: Pushed 296af1bd2844: Pushed 63d7ce983cd5: Pushed b33db0c3c3a8: Pushed 98b5f35ea9d3: Pushed latest: digest: sha256:7ba542bde95e6523a4b126f610553e3657b8108bc3175596ee7e911ae1219bfc size: 1778 # Pull image root@gpc-adhoc-70846130vm-bootstrapper-zone1:~# docker pull ${REGISTRY}/library/nginx:latest latest: Pulling from library/nginx Digest: sha256:7ba542bde95e6523a4b126f610553e3657b8108bc3175596ee7e911ae1219bfc Status: Image is up to date for myinstance-e2e-test-user.org-1.zone1.google.gdch.test/harbor-project/nginx:latestSi l'opération échoue, le résultat suivant peut s'afficher :
E1025 19:21:39.322290 1273587 get.go:24] failed to get user name: user is not logged in or login expired, please login againDans cet exemple, la session d'authentification GDC a expiré et vous devez vous reconnecter à GDC. Pour en savoir plus, consultez la section Se connecter.
Se connecter à Helm avec votre identité GDC
Utilisez l'assistant d'identification MHS avec votre identité GDC pour vous connecter à la CLI Helm.
Pour vous authentifier auprès de Helm, procédez comme suit :
Après vous être authentifié auprès de GDC, récupérez vos identifiants utilisateur à partir de l'assistant d'identification :
echo $REGISTRY | docker-credential-mhs getLe résultat ressemble à ce qui suit :
{"Username":"tokenreview$fop-infrastructure-operator@example.com","Secret":"STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bw"}Connectez-vous à la CLI Helm avec les identifiants. Lorsque vous êtes invité à saisir les identifiants, utilisez ceux renvoyés par l'assistant d'identification.
helm registry login $REGISTRY Username: tokenreview$fop-infrastructure-operator@example.com Password: STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bwLe résultat renvoyé en cas de succès pour cette opération ressemble à ce qui suit :
Login Succeeded
Se connecter à Docker ou Helm avec des secrets de la CLI
Pour vous connecter à Docker ou Helm avec des secrets de la CLI, procédez comme suit :
- Connectez-vous à Harbor avec un compte utilisateur IAP.
- Cliquez sur votre nom d'utilisateur, puis sélectionnez User Profile (Profil utilisateur).
- Pour copier le secret de la CLI associé à votre compte, cliquez sur Copy (Copier).
Facultatif : Pour afficher les boutons permettant de générer automatiquement ou de créer manuellement un secret de la CLI, cliquez sur les points de suspension dans votre profil utilisateur.
Si vous avez généré un secret de la CLI, cliquez sur Copy (Copier) pour le copier.
Vous pouvez maintenant utiliser votre secret de la CLI comme mot de passe lorsque vous vous connectez à Harbor à partir de la CLI Docker ou Helm :
docker login -u USERNAME -p CLI_SECRET HARBOR_INSTANCE_URL
Remplacez les éléments suivants :
USERNAME: nom d'utilisateur du compte HarborCLI_SECRET: secret de la CLI généré.HARBOR_INSTANCE_URL: URL de l'instance Harbor.
Étape suivante
Une fois que vous êtes connecté à Docker et Helm, votre registre est entièrement connecté et vous pouvez commencer à l'utiliser :