Artifact Registry te permite autenticar repositorios remotos en Docker Hub. Aunque extraer imágenes públicas no requiere autenticación, la autenticación aumenta tu límite de frecuencia de descarga. Para autenticarte, configura tu repositorio remoto con tu nombre de usuario de Docker Hub y un token de acceso personal guardado como Secret.
Antes de comenzar
Verifica los siguientes requisitos:
- Creaste un repositorio remoto de Docker de Artifact Registry.
- Tienes una cuenta de Docker Hub.
Roles obligatorios
Para obtener los permisos que necesitas para configurar la autenticación en Docker Hub para repositorios remotos, pídele a tu administrador que te otorgue los siguientes roles de IAM 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 otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Crea un token de acceso personal de Docker Hub
- Accede a 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 entorno local o en Cloud Shell.
Guarda tu token de acceso personal en una versión del Secret
- Crea un secreto en Secret Manager.
- Guarda tu token de acceso personal de Docker Hub como una versión del Secret.
Otorga a la cuenta de servicio de Artifact Registry acceso a tu secreto
El agente de servicio de Artifact Registry actúa en nombre de Artifact Registry cuando interactúa con los servicios de Google Cloud . Para permitir que el agente de servicio use secretos almacenados en Secret Manager, debes otorgarle permiso para ver la versión del secreto.
El identificador del agente de servicio es el siguiente:
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
PROJECT-NUMBER es el número del proyecto de Google Cloud en el que se ejecuta Artifact Registry.
Para otorgar al agente de servicio de Artifact Registry el rol de descriptor de acceso a secretos de Secret Manager, haz lo siguiente:
Console
-
Ve a la página de Secret Manager en la consola de Google Cloud .
-
En la página de Secret Manager, haz clic en la casilla de verificación junto al nombre del secreto.
-
Si aún no está abierto, haz clic en Mostrar panel de información para abrir el panel.
-
En el panel de información, haz clic en Agregar principal.
-
En el área de texto Principales nuevas, ingresa las direcciones de correo electrónico de los miembros que quieras agregar.
-
En el menú desplegable Selecciona una función, selecciona Secret Manager y, luego, Administrador y descriptor de acceso a Secretos.
gcloud
$ gcloud secrets add-iam-policy-binding secret-id \
--member="member" \
--role="roles/secretmanager.secretAccessor"
Donde member es un miembro de IAM, 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 Configura la autenticación para 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 Configura la autenticación para 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 Configura la autenticación para 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 Configura la autenticación para 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 Configura la autenticación para 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 Configura la autenticación para 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 Configura la autenticación para un entorno de desarrollo local.
API
Nota: A diferencia de los otros ejemplos, esto reemplaza toda la política de IAM.
$ 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 otorgar o revocar el acceso a los secretos, consulta Administra el acceso a los secretos.
Agrega credenciales de Docker Hub a tu repositorio remoto
Para actualizar tu repositorio remoto con tus credenciales de Docker Hub, sigue estos pasos:
Console
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 Modo de autenticación del repositorio remoto, actualiza o agrega tu nombre de usuario de Docker Hub y la versión del Secret que contiene tu token de acceso de Docker Hub.
gcloud CLI
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
Reemplaza lo siguiente:
REPOSITORY: Es el nombre de tu repositorio remoto de Artifact Registry.PROJECT_ID: Es el ID del proyecto de Google Cloud .LOCATION: es la ubicación regional o multirregional del repositorio. Puedes omitir esta marca si estableces un valor predeterminado. Para ver una lista de las ubicaciones admitidas, ejecuta el comandogcloud artifacts locations list.USERNAME: tu nombre de usuario de Docker Hub.SECRET_PROJECT_ID: Es el ID del proyecto de Google Cloud en el que creaste el secreto.SECRET_ID: Es el nombre que le diste al Secret.SECRET_VERSION: Es la versión del secreto en la que guardaste 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 ascendente.
¿Qué sigue?
- Obtén más información sobre los repositorios de Artifact Registry.
- Extrae imágenes con Docker.
- Toma el repositorio remoto de Docker Hub quickstart.