En esta página se describe cómo iniciar sesión en Docker o Helm mediante el auxiliar de credenciales de Managed Harbor Service (MHS) o los secretos de la CLI.
Para ofrecer flexibilidad, Google Distributed Cloud (GDC) air-gapped proporciona dos métodos para autenticarte con Docker y Helm desde tu instancia de registro de Harbor. El primer método consiste en usar el gestor de credenciales de Managed Harbor Service (MHS) y tu identidad de GDC para iniciar sesión en la CLI de Docker o Helm. Después de autenticarte con GDC, puedes iniciar sesión en el cliente de Docker y realizar operaciones de Docker sin tener que crear ni gestionar secretos de CLI independientes en Harbor.
El segundo método consiste en usar secretos de la CLI. Después de autenticarte con Identity-Aware Proxy (IAP) e iniciar sesión en la interfaz de Harbor por primera vez, usa la CLI de Docker o Helm para acceder a Harbor. Las CLIs de Docker y Helm no pueden gestionar la redirección de IAP, por lo que Harbor proporciona un secreto de CLI que se puede usar al iniciar sesión desde Docker o Helm. Este método solo está disponible cuando Harbor usa la autenticación de IAP.
Antes de empezar
Para configurar la autenticación de Docker y Helm en instancias del registro de Harbor, debes tener lo siguiente:
- El asistente de credenciales de MHS
docker-credential-mhs
instalado en el entorno. El asistente de credenciales se incluye de forma predeterminada en el paquete de la CLI gdcloud. Para obtener más información, consulta la información general sobre la CLI de gdcloud. - El rol de identidad y acceso necesario. Pide al administrador de gestión de identidades y accesos de tu organización que te conceda el rol de lector de instancias de Harbor (
harbor-instance-viewer
).
Iniciar sesión en Docker con tu identidad de GDC
Usa el asistente de credenciales de MHS con tu identidad de GDC para iniciar sesión en la CLI de Docker. Para autenticarte con Docker, sigue estos pasos:
Inicia sesión en el servidor de la API Management con la CLI de GDC siguiendo las instrucciones de Iniciar sesión.
Configura Docker para que use el asistente 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}
Haz los cambios siguientes:
PROJECT_NAME
: el nombre de tu proyecto de arrendatario. Es el mismo nombre de proyecto que proporcionaste al crear tu instancia de Harbor.HARBOR_INSTANCE_NAME
: el nombre de la instancia de Harbor que se crea en Crear instancias de registro de Harbor.
Sigue las instrucciones de Configurar Docker para que confíe en la CA raíz de Harbor.
Opcional: Verifica que el asistente de credenciales se ha configurado correctamente comprobando que la entrada
mhs
se ha añadido a~/.docker/config.json
:cat DOCKER_CONFIG_PATH
Sustituye
DOCKER_CONFIG_PATH
por la ruta al archivo de configuración de Docker. Por ejemplo,~/.docker/config.json.
El resultado debería ser similar al 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 el resultado correcto de
"myinstance-e2e-test-user.org-1.zone1.google.gdch.test": "mhs"
.Configura el proyecto de cliente en
gdcloud
:TENANT_PROJECT=PROJECT_NAME gdcloud config set project $TENANT_PROJECT
Se muestra el siguiente resultado:
Updated property [core/project].
Identifica un proyecto de Harbor al que tengas acceso de gestión. Crea un proyecto de Harbor si no existe.
Realizar 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:latest
El 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}/harbor-project/nginx:latest latest: Pulling from harbor-project/nginx Digest: sha256:7ba542bde95e6523a4b126f610553e3657b8108bc3175596ee7e911ae1219bfc Status: Image is up to date for myinstance-e2e-test-user.org-1.zone1.google.gdch.test/harbor-project/nginx:latest
Si la operación no se realiza correctamente, puede 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 again
En este ejemplo, la sesión de autenticación de GDC ha caducado y debes volver a iniciar sesión en GDC. Para obtener más información, consulta el artículo Iniciar sesión.
Inicia sesión en Helm con tu identidad de GDC
Usa el asistente de credenciales de MHS con tu identidad de GDC para iniciar sesión en la CLI de Helm.
Para autenticarte con Helm, sigue estos pasos:
Después de autenticarte con GDC, recupera tus credenciales de usuario del helper de credenciales:
echo $REGISTRY | docker-credential-mhs get
El resultado debería ser similar al siguiente:
{"Username":"tokenreview$fop-infrastructure-operator@example.com","Secret":"STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bw"}
Inicia sesión en la CLI de Helm con las credenciales. Cuando se te pida que introduzcas las credenciales, usa las que haya devuelto 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_bw
El resultado correcto de esta operación es el siguiente:
Login Succeeded
Iniciar sesión en Docker o Helm con secretos de la CLI
Para iniciar sesión en Docker o Helm con secretos de la CLI, sigue estos pasos:
- Inicia sesión en 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 los botones para generar automáticamente o crear manualmente un nuevo secreto de CLI, haz clic en los puntos suspensivos
de tu perfil de usuario.Si has generado un nuevo secreto de la CLI, haz clic en
Copiar para copiarlo.Ahora puedes usar tu secreto de la CLI como contraseña al iniciar sesión en Harbor desde la CLI de Docker o Helm:
docker login -u USERNAME -p CLI_SECRET HARBOR_INSTANCE_URL
Haz los cambios siguientes:
USERNAME
: nombre de usuario de la cuenta de HarborCLI_SECRET
: el secreto de la CLI generado.HARBOR_INSTANCE_URL
: la URL de la instancia de Harbor.