En esta página, se describe cómo acceder a Docker o Helm con el asistente de credenciales del servicio de Harbor administrado (MHS) o los secretos de la CLI.
Las instancias de registro de Harbor en Google Distributed Cloud (GDC) aislado usan Identity-Aware Proxy (IAP) para la autenticación. Puedes acceder a tu instancia de registro de Harbor desde la CLI de Docker o Helm con cualquiera de los siguientes métodos:
- Asistente de credenciales de MHS (
docker-credential-mhs): Usa tu identidad de GDC autenticada para controlar la autenticación de IAP de forma automática. Después de acceder con la CLI de gdcloud,docker-credential-mhsrecupera tu identidad de usuario autenticada y verifica tu acceso con Harbor. Después de la verificación, Harbor proporciona un token de corta duración a Docker o Helm para que puedas realizar operaciones de registro sin crear ni administrar secretos de la CLI independientes. - Secretos de la CLI: Usa un secreto estático de la CLI de tu perfil de usuario de Harbor. Después de acceder a la interfaz web de Harbor con IAP por primera vez, puedes recuperar tu secreto de la CLI y usarlo como contraseña cuando accedas desde la CLI de Docker o Helm. Este método solo está disponible con la IU de Harbor.
Antes de comenzar
Para configurar la autenticación de Docker y Helm en las instancias de registro de Harbor, debes
tener instalado el auxiliar de credenciales de MHS (docker-credential-mhs) en tu
entorno. El asistente de credenciales se incluye de forma predeterminada en el
paquete de la CLI de gdcloud. Para obtener más información, consulta
Descripción general de la CLI de gdcloud.
Roles de IAM obligatorios
Para configurar la autenticación de las instancias de registro de Harbor, comunícate con el administrador del proyecto de IAM
y solicita el rol de Visualizador de instancias de Harbor
(harbor-instance-viewer),
que te permite obtener, enumerar y supervisar las instancias de Harbor en el espacio de nombres
del proyecto. Este rol incluye los permisos necesarios para ver los detalles de
las instancias de Harbor existentes, de modo que puedas recuperar las URLs del registro para
la autenticación.
Accede con el auxiliar de credenciales de MHS
La forma en que te autenticas con docker-credential-mhs depende de tu cliente de CLI:
puedes configurar Docker para que recupere las credenciales automáticamente o recuperar
credenciales temporales directamente para acceder a Docker.
Accede a Docker
Para autenticarte con Docker, sigue estos pasos:
Accede al servidor de la API de Management con la CLI de gdcloud siguiendo las instrucciones que se indican en Accede.
Configura Docker para usar el auxiliar de credenciales de 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}Reemplaza lo siguiente:
PROJECT_NAME: Es el nombre de tu proyecto de usuario. Este es el mismo nombre de proyecto que proporcionaste cuando creaste tu instancia de Harbor.HARBOR_INSTANCE_NAME: Es el nombre de la instancia de Harbor que creaste en Crea instancias de registro de Harbor.
Sigue las instrucciones que se indican en Configura Docker para que confíe en la AC raíz de Harbor.
Opcional: Verifica que el asistente de credenciales se haya configurado correctamente comprobando que la entrada
mhsse haya agregado a~/.docker/config.json:cat DOCKER_CONFIG_PATHReemplaza
DOCKER_CONFIG_PATHpor la ruta de acceso a tu archivo de configuración de Docker, como~/.docker/config.json.El resultado es similar a lo siguiente:
{ "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" } }En este ejemplo, se muestra un resultado exitoso de
"myinstance-e2e-test-user.org-1.zone1.google.gdch.test": "mhs".Configura el proyecto de usuario en la CLI de gdcloud:
TENANT_PROJECT=PROJECT_NAME gdcloud config set project $TENANT_PROJECTSe muestra el siguiente resultado:
Updated property [core/project].Identifica un proyecto de Harbor al que tengas acceso de administración. Si no existe, crea un proyecto de Harbor.
Realiza operaciones de Docker, como enviar o extraer una imagen:
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:latestUn resultado correcto es similar al siguiente:
# 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 la operación no se realiza correctamente, es posible que veas el siguiente resultado:
E1025 19:21:39.322290 1273587 get.go:24] failed to get user name: user is not logged in or login expired, please login againEn este ejemplo, la sesión de autenticación de GDC venció y debes volver a acceder a GDC. Para obtener más información, consulta Accede.
Accede a Helm
Para autenticarte con Helm, sigue estos pasos:
Después de autenticarte con GDC, recupera tus credenciales de usuario del auxiliar de credenciales:
echo $REGISTRY | docker-credential-mhs getEl resultado es similar a lo siguiente:
{"Username":"tokenreview$fop-infrastructure-operator@example.com","Secret":"STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bw"}Accede a la CLI de Helm con las credenciales. Cuando se te solicite que ingreses las credenciales, usa las que devolvió el asistente de credenciales.
helm registry login $REGISTRY Username: tokenreview$fop-infrastructure-operator@example.com Password: STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bwUn resultado correcto para esta operación se ve de la siguiente manera:
Login Succeeded
Accede con secretos de la CLI
Para acceder a Docker o Helm con secretos de la CLI, sigue estos pasos:
- Accede a Harbor con una cuenta de usuario de IAP.
- Haz clic en tu nombre de usuario y selecciona Perfil de usuario.
- Para copiar el secreto de la CLI asociado a tu cuenta, haz clic en Copiar.
Opcional: Para mostrar botones que generen automáticamente o creen de forma manual un secreto de la CLI nuevo, haz clic en Más en tu perfil de usuario.
Si generaste un secreto de la CLI nuevo, haz clic en Copiar para copiarlo.
Usa tu secreto de la CLI como contraseña cuando accedas a Harbor desde la CLI de Docker o Helm:
docker login -u USERNAME -p CLI_SECRET HARBOR_INSTANCE_URLReemplaza lo siguiente:
USERNAME: Es el nombre de usuario de la cuenta de Harbor.CLI_SECRET: Es el secreto de la CLI generado.HARBOR_INSTANCE_URL: Es la URL de la instancia de Harbor.
¿Qué sigue?
Después de acceder a Docker y Helm, tu registro se conectará y podrás comenzar a usarlo: