En este documento se describe cómo configurar la autenticación en repositorios upstream de Docker Hub para repositorios remotos de Artifact Registry.
Te recomendamos que te autentiques en Docker Hub aunque solo uses imágenes públicas, ya que así aumentarás el límite de velocidad de descarga. Para obtener más información sobre los límites de velocidad de descarga de Docker Hub, consulta Límite de velocidad de Docker Hub. Los repositorios remotos te permiten añadir tu nombre de usuario de Docker Hub y un token de acceso personal guardado como secreto para autenticarte en Docker Hub.
En este documento se presupone que ya ha creado un repositorio remoto de Docker de Artifact Registry y una cuenta de Docker Hub.
Para obtener más información sobre los repositorios remotos, consulta la descripción general de los repositorios remotos.
Roles obligatorios
Para obtener los permisos que necesitas para configurar la autenticación en Docker Hub para repositorios remotos, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el proyecto:
-
Administrador de Artifact Registry (
roles/artifactregistry.admin
) -
Administrador de Secret Manager (
roles/secretmanager.admin
)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Crear un token de acceso personal de Docker Hub
- Inicia sesión en Docker Hub.
- Crea un token de acceso personal con permisos de solo lectura.
Copia el token de acceso.
Guarda el token de acceso en un archivo de texto en tu sistema local o en Cloud Shell.
Guardar tu token de acceso personal en una versión de secreto
- Crea un secreto en Secret Manager.
- Guarda tu token de acceso personal de Docker Hub como una versión secreta.
Concede acceso a tu secreto a la cuenta de servicio de Artifact Registry
El agente de servicio de Artifact Registry actúa en nombre de Artifact Registry al interactuar con los servicios. Google Cloud Para permitir que el agente de servicio use los secretos almacenados en Secret Manager, debes concederle permiso para ver tu versión del secreto.
El identificador del agente de servicio es:
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
PROJECT-NUMBER es el número de proyecto del proyecto Google Cloud en el que se ejecuta Artifact Registry.
Para asignar el rol Lector de recursos de Secret Manager al agente de servicio de Artifact Registry, sigue estos pasos:
Consola
-
Ve a la página Secret Manager en la Google Cloud consola.
-
En la página Secret Manager, marca la casilla situada junto al nombre del secreto.
-
Si aún no lo has hecho, haz clic en Mostrar panel de información para abrirlo.
-
En el panel de información, haz clic en Añadir principal.
-
En el área de texto Nuevos administradores, introduce las direcciones de correo de los miembros que quieras añadir.
-
En el menú desplegable Selecciona un rol, elige Secret Manager y, a continuación, Permiso para acceder a los recursos de Secret Manager.
gcloud
$ gcloud secrets add-iam-policy-binding secret-id \
--member="member" \
--role="roles/secretmanager.secretAccessor"
Donde member es un miembro de gestión de identidades y accesos, como un usuario, un grupo o una cuenta de servicio.
C#
Para autenticarte en Artifact Registry, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Go
Para autenticarte en Artifact Registry, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Para autenticarte en Artifact Registry, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Para autenticarte en Artifact Registry, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
PHP
Para autenticarte en Artifact Registry, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para autenticarte en Artifact Registry, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Ruby
Para autenticarte en Artifact Registry, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
API
Nota: A diferencia de los otros ejemplos, este reemplaza toda la política de gestión de identidades y accesos.
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id:setIamPolicy" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"policy\": {\"bindings\": [{\"members\": [\"member\"], \"role\": \"roles/secretmanager.secretAccessor\"}]}}"
Para obtener más información sobre cómo conceder o revocar el acceso a secretos, consulta Gestionar el acceso a secretos.
Añadir credenciales de Docker Hub a tu repositorio remoto
Para actualizar tu repositorio remoto con tus credenciales de Docker Hub, sigue estos pasos:
Consola
Abre la página Repositorios en la consola de Google Cloud .
En la lista de repositorios, selecciona el repositorio y haz clic en Editar repositorio.
En la sección Remote repository authentication mode (Modo de autenticación de repositorio remoto), actualiza o añade tu nombre de usuario de Docker Hub y la versión secreta que contiene tu token de acceso de Docker Hub.
CLI de gcloud
Para actualizar tu repositorio remoto con tus credenciales de Docker Hub, ejecuta el siguiente comando:
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--remote-username=USERNAME \
--remote-password-secret-version=projects/SECRET_PROJECT_ID/secrets/SECRET_ID/versions/SECRET_VERSION
Haz los cambios siguientes:
REPOSITORY
por el nombre de tu repositorio remoto de Artifact Registry.PROJECT_ID
por el ID de tu proyecto. Google CloudLOCATION
con la ubicación regional o multirregional del repositorio. Puedes omitir esta marca si defines un valor predeterminado. Para ver una lista de las ubicaciones admitidas, ejecuta el comandogcloud artifacts locations list
.USERNAME
con tu nombre de usuario de Docker Hub.SECRET_PROJECT_ID
por el ID del proyectoGoogle Cloud en el que has creado el secreto.SECRET_ID
con el nombre que le has dado al secreto.SECRET_VERSION
con la versión del secreto en la que has guardado tu token de acceso de Docker Hub.
Tus credenciales se usarán la próxima vez que el repositorio remoto envíe una solicitud de un artefacto desde la fuente upstream.
Siguientes pasos
- Consulta más información sobre los repositorios de Artifact Registry.
- Extrae imágenes con Docker.
- Consulta la guía de inicio rápido del repositorio remoto de Docker Hub.