Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Configure la autenticación para Helm

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

Antes de comenzar

  1. Si no existe un repositorio para tus gráficos, crea un repositorio nuevo. Elige Docker como formato de repositorio.
  2. (Opcional) Configura valores predeterminados para los comandos de gcloud.
  3. Instala Helm 3 si aún no lo hiciste.

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

    export HELM_EXPERIMENTAL_OCI=1
    
  5. Ejecuta el siguiente comando para cargar tu archivo .bashrc (o .bash_profile) actualizado:

    source ~/.bashrc
    

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 de las aplicaciones que por lo general se integran con Artifact Registry, como Cloud Build o Cloud Run, se configuran de forma predeterminada con permisos para acceder a los repositorios que se encuentran 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
Puedes configurar Helm para obtener las opciones de configuración del registro desde el archivo de configuración de Docker. Si configuraste Docker con el auxiliar de credenciales de gcloud o la credencial independiente para autenticar con Artifact Registry, 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. 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 tu configuración de Docker

Si configuraste Docker con el auxiliar de credenciales o gcloud independiente para autenticar con Artifact Registry, Docker almacena la configuración de registro en su archivo config.json. las rutas "a GCP".

De forma predeterminada, Helm almacena la configuración de registro en ~/.config/helm/registry.json. En lugar de mantener la configuración de registro en dos archivos de configuración diferentes, puedes configurar Helm para la autenticación con cualquier host de Artifact Registry que está configurado para Docker.

Para configurar Helm a fin de que use su configuración de registro de Docker, siga estos pasos:

Linux

  1. Agrega las siguientes líneas a ~/.bashrc (o ~/.bash_profile en macOS, o donde tu shell almacene las variables de entorno):

    export DOCKER_CONFIG="~/.docker"
    export HELM_REGISTRY_CONFIG="${DOCKER_CONFIG}/config.json"
    
    • DOCKER_CONFIG es la variable de entorno de Docker para la ubicación del archivo de configuración de cliente de Docker, config.json. La ubicación predeterminada es ~/.docker.
    • HELM_REGISTRY_CONFIG es la variable de entorno de Helm para el archivo de configuración de registro. Apunta al archivo Docker config.json.
  2. Ejecuta el siguiente comando para cargar tu archivo .bashrc (o .bash_profile) actualizado:

    source ~/.bashrc
    

Windows

Ejecuta los siguientes comandos a fin de configurar las variables de entorno del usuario para los archivos de configuración de Docker y Helm:

setx DOCKER_CONFIG %USERPROFILE%\.docker
setx HELM_REGISTRY_CONFIG %DOCKER_CONFIG%\config.json
  • DOCKER_CONFIG es la variable de entorno de Docker para la ubicación del archivo de configuración de cliente de Docker, config.json. La ubicación predeterminada es %USERPROFILE%\.docker.
  • HELM_REGISTRY_CONFIG es la variable de entorno de Helm para el archivo de configuración de registro. Apunta al archivo Docker config.json.

Helm ahora está configurado para usar las mismas credenciales que Docker usa para Artifact Registry. Puedes enviar y extraer gráficos de los repositorios de Artifact Registry en ubicaciones de host que configuraste para Docker.

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 se autentica 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 de registro de artefactos específica 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 se autentica con Artifact Registry.

¿Qué sigue?