Configura la autenticación para Helm

En esta página, se describe cómo configurar Helm para autenticar con repositorios de Artifact Registry.

Antes de comenzar

  1. Si no existe un repositorio para tus gráficos, crea un repositorio nuevo. Elige Docker como el formato del repositorio.
  2. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

    gcloud init
  3. (Opcional) Configura valores predeterminados para los comandos de gcloud.
  4. Instala Helm 3.8.0 o una versión posterior. En las versiones anteriores de Helm, la compatibilidad con gráficos en formato OCI es una función experimental.

    Ejecuta helm version para verificar tu versión.

Elige un método de autenticación

En la mayoría de las situaciones, recomendamos usar una cuenta de servicio para la autenticación en Artifact Registry.

Las cuentas de servicio para las aplicaciones que suelen integrarse en Artifact Registry, como Cloud Build o Cloud Run, están configuradas de forma predeterminada en permisos para los repositorios en el mismo proyecto. No necesitas configurar la autenticación de Docker para estas aplicaciones.

Los siguientes métodos de autenticación están disponibles:

Usa las credenciales de Artifact Registry configuradas para Docker
De forma predeterminada, Helm puede autenticarse con las mismas credenciales que usas para Docker.
Token de acceso
Las credenciales predeterminadas de la aplicación proporcionan tokens de acceso de corta duración que una cuenta de servicio usa para acceder a tus recursos de Google Cloud.
Archivo de claves JSON

Un par de claves administrado por el usuario que puedes usar como credencial para una cuenta de servicio. Debido a que la credencial es de larga duración, es la opción menos segura de todos los métodos de autenticación disponibles.

Cuando sea posible, usa un token de acceso para reducir el riesgo de acceso no autorizado a tus artefactos.

Usa la configuración de Docker

De manera predeterminada, Helm admite la configuración del registro en el archivo de configuración config.json de Docker. Helm encuentra la configuración del registro en la ubicación predeterminada o en la que se especifica en la variable de entorno DOCKER_CONFIG.

Si configuraste Docker con un auxiliar de credenciales para autenticar con Artifact Registry, Helm usa tu configuración existente para los repositorios de Docker de Artifact Registry.

Con un token de acceso

Los tokens de acceso son tokens de corta duración que proporcionan acceso a los recursos de Google Cloud. Debido a que el token es de corta duración, debes solicitarlo menos de una hora antes de usarlo para conectarte con los repositorios de Artifact Registry.

Google Cloud obtiene un token de acceso con las credenciales predeterminadas de la aplicación.

Para usar un token de acceso, haz lo siguiente:

  1. Crea una cuenta de servicio que actúe en nombre de tu aplicación o elige una cuenta de servicio existente que uses para la automatización.

    Necesitarás la ubicación del archivo de claves de la cuenta de servicio para configurar la autenticación con Artifact Registry. En las cuentas existentes, puedes ver claves y crear claves nuevas en la página Cuentas de servicio.

    Ir a la página Cuentas de servicio

  2. Otorga la función adecuada de Artifact Registry a la cuenta de servicio para proporcionar acceso al repositorio.

  3. Asigna la ubicación del archivo de claves de la cuenta de servicio a la variable GOOGLE_APPLICATION_CREDENTIALS para que el auxiliar de credenciales de Artifact Registry pueda obtener tu clave cuando se conecta con repositorios.

    export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
    

    En el ejemplo anterior, KEY-FILE es la ruta de acceso al archivo de claves de la cuenta de servicio.

  4. Obtén un token de acceso como credenciales cuando te autenticas en Artifact Registry con Docker.

    Linux/macOS

    Ejecuta el siguiente comando:

    gcloud auth application-default print-access-token | helm registry login -u oauth2accesstoken \
    --password-stdin https://LOCATION-docker.pkg.dev
    

    Windows

    Ejecuta el siguiente comando:

    gcloud auth application-default print-access-token
    ya29.8QEQIfY_...
    
    helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \
    https://LOCATION-docker.pkg.dev
    

    Donde

    • oauth2accesstoken es el nombre de usuario que se usará para la autenticación con un token de acceso.
    • gcloud auth application-default print-access-token es el comando de gcloud que se usa para obtener el token de acceso para la cuenta de servicio. Tu token de acceso es la contraseña para la autenticación.
    • LOCATION es la ubicación regional o multirregional del repositorio en el que se almacena la imagen.

Helm ahora se autentica con Artifact Registry.

Usa un archivo de claves JSON

Cualquier persona que tenga acceso a una clave privada válida para una cuenta de servicio podrá acceder a los recursos a través de la cuenta de servicio. Ten en cuenta que el ciclo de vida del acceso de la clave a la cuenta de servicio (y, por lo tanto, a los datos a los que tiene acceso la cuenta de servicio) es independiente del ciclo de vida del usuario que descargó la clave.

Usa los siguientes lineamientos para limitar el acceso a tus repositorios:

  • Crea cuentas de servicio dedicadas que solo se usen para interactuar con repositorios.
  • Otorga el rol de Artifact Registry específico para el acceso que requiere la cuenta de servicio. Por ejemplo, una cuenta de servicio que únicamente descarga artefactos solo requiere la función de lector de Artifact Registry.
  • Configura los permisos para las cuentas de servicio dedicadas en cada repositorio, en lugar de hacerlo a nivel de proyecto. Luego, puedes especificar el acceso en función del contexto del repositorio. Por ejemplo, una cuenta de servicio para las compilaciones de desarrollo puede tener la función de lector de Artifact Registry en un repositorio de producción y la función de escritor de Artifact Registry en un repositorio de etapa de pruebas.
  • Sigue las prácticas recomendadas para administrar claves de cuentas de servicio.

A fin de crear una cuenta de servicio y una clave de cuenta de servicio nueva para usar solo con los repositorios de Artifact Registry, sigue estos pasos:

  1. Crea una cuenta de servicio que actúe en nombre de tu aplicación o elige una cuenta de servicio existente que uses para la automatización.

    Necesitarás la ubicación del archivo de claves de la cuenta de servicio para configurar la autenticación con Artifact Registry. En las cuentas existentes, puedes ver claves y crear claves nuevas en la página Cuentas de servicio.

    Ir a la página Cuentas de servicio

  2. De forma opcional, puedes codificar todo el contenido del archivo de claves en Base64.

    Linux

    base64 FILE-NAME > NEW-FILE-NAME
    

    macOS

    base64 -i FILE-NAME -o NEW-FILE-NAME
    

    Windows

    Base64.exe -e FILE-NAME > NEW-FILE-NAME
    

    En el ejemplo anterior, FILE-NAME es el nombre del archivo de claves original y NEW-FILE-NAME es el archivo de claves codificado en Base64.

  3. Otorga la función adecuada de Artifact Registry a la cuenta de servicio para proporcionar acceso al repositorio.

  4. Usa la clave de la cuenta de servicio para autenticar lo siguiente:

    Linux/macOS

    Ejecuta el siguiente comando:

    cat KEY-FILE | helm registry login -u KEY-TYPE --password-stdin \
    https://LOCATION-docker.pkg.dev
    

    Windows

    Ejecuta el siguiente comando:

    helm registry login -u KEY-TYPE --password-stdin https://LOCATION-docker.pkg.dev < KEY-FILE
    

    ¿Por dónde

    • KEY-TYPE es uno de los siguientes:
      • _json_key, si usas la clave de la cuenta de servicio en formato JSON, como se proporcionó cuando creaste el archivo.
      • _json_key_base64, si codificas en Base64 todo el contenido del archivo.
    • KEY-FILE es el nombre del archivo de claves de la cuenta de servicio en formato JSON.
    • LOCATION es la ubicación regional o multirregional del repositorio en la que se almacena la imagen.

Helm ahora se autentica con Artifact Registry.

¿Qué sigue?