Configura la autenticación para Helm

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

La compatibilidad con Helm 3 para gráficos guardados como imágenes de contenedor de OCI es experimental. Si quieres obtener información sobre los planes de Helm para la disponibilidad general de la asistencia de OCI, consulta Propuesta de mejora de Helm para la asistencia de OCI

Antes de comenzar

  1. Si no existe un repositorio para los gráficos, crea un repositorio nuevo. Elige Docker como el formato del repositorio.
  2. Instala e inicializa el SDK de Cloud.
  3. (Opcional) Configura valores predeterminados para los comandos de gcloud.
  4. Instale Helm 3.7.1 o una versión más reciente.

    Ejecuta helm version para verificar tu versión.

    Helm 3.7.0 introdujo cambios que no son retrocompatibles con versiones anteriores de Helm. Helm 3.7.1 puede extraer gráficos de OCI empaquetados con versiones anteriores de Helm 3 y usa los comandos del gráfico que se introdujeron en Helm 3.7.0.

  5. Habilita la compatibilidad experimental con Helm para imágenes de OCI con la variable HELM_EXPERIMENTAL_OCI. Agrega la siguiente línea a ~/.bashrc (o ~/.zshrc en macOS, o donde tu shell almacene las variables de entorno):

    export HELM_EXPERIMENTAL_OCI=1
    
  6. Ejecuta el siguiente comando para cargar la configuración actualizada:

    • Bash: source ~/.bashrc
    • Z shell: source ~/.zshrc

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 no están asociadas con un usuario específico, y las aplicaciones de Google Cloud pueden usar una estrategia de credenciales predeterminadas de la aplicación para obtener credenciales automáticamente.

Las cuentas de servicio para aplicaciones que suelen integrarse en Artifact Registry, como Cloud Build o Cloud Run, se configuran de forma predeterminada permisos para los repositorios en el mismo proyecto. No es necesario que configures la autenticación de Docker para estas aplicaciones.

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

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. Es la alternativa más segura para usar gcloud como auxiliar de credenciales.
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 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 a fin de 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 está autenticado con Artifact Registry.

Usa un archivo de claves JSON

Una clave de cuenta de servicio es un par de claves de larga duración que puedes usar como credencial para una cuenta de servicio. Eres responsable de la seguridad de la clave privada y otras operaciones de administración, como la rotación de claves.

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 la función específica de Artifact Registry 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 credenciales.

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 autenticarte:

    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
    

    Donde

    • KEY-TYPE es una de las siguientes opciones:
      • _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 está autenticado con Artifact Registry.

¿Qué sigue?