Cette page a été traduite par l'API Cloud Translation.
Switch to English

Configurer l'authentification pour Helm

Cette page explique comment configurer Helm pour s'authentifier auprès des dépôts Artifact Registry.

Avant de commencer

  1. Si un dépôt de vos graphiques n'existe pas, créez-en un. Choisissez Docker comme format de dépôt.
  2. (Facultatif) Configurez des valeurs par défaut pour les commandes gcloud.
  3. Installez Helm 3 si ce n'est pas déjà fait.

  4. Activez la compatibilité expérimentale de Helm pour les images OCI avec la variable HELM_EXPERIMENTAL_OCI. Ajoutez la ligne suivante à ~/.bashrc (ou ~/.bash_profile sous macOS, ou à l'emplacement où votre interface système stocke les variables d'environnement):

    export HELM_EXPERIMENTAL_OCI=1
    
  5. Exécutez la commande suivante pour charger votre fichier .bashrc (ou .bash_profile) mis à jour:

    source ~/.bashrc
    

Choisir une méthode d'authentification

Dans la plupart des situations, nous vous recommandons d'utiliser un compte de service pour vous authentifier auprès d'Artifact Registry.

Les comptes de service ne sont pas associés à un utilisateur spécifique. Les applications Google Cloud peuvent utiliser la stratégie des identifiants par défaut de l'application pour obtenir automatiquement des identifiants.

Les comptes de service pour les applications qui s'intègrent généralement dans Artifact Registry, tels que Cloud Build ou Cloud Run, sont configurés par défaut avec les autorisations d'accès aux dépôts du même projet. Vous n'avez pas besoin de configurer l'authentification Docker pour ces applications.

Les méthodes d'authentification suivantes sont disponibles :

Utiliser les identifiants Artifact Registry configurés pour Docker
Vous pouvez configurer Helm pour obtenir les paramètres de registre à partir du fichier de configuration de Docker. Si vous avez configuré Docker avec gcloud ou un assistant d'identification autonome pour vous authentifier avec Artifact Registry, Helm peut s'authentifier avec les identifiants que vous utilisez pour Docker.
Jeton d'accès
Les identifiants par défaut de l'application fournissent des jetons d'accès de courte durée qu'un compte de service utilise pour accéder à vos ressources Google Cloud. La méthode la plus sûre consiste à utiliser gcloud comme assistant d'identification.
Fichier de clé JSON

Une paire de clés gérée par l'utilisateur que vous pouvez utiliser comme identifiant pour un compte de service. Les identifiants étant de longue durée, il s'agit de l'option la moins sécurisée de toutes les méthodes d'authentification disponibles.

Si possible, utilisez un jeton d'accès pour réduire le risque d'accès non autorisé à vos artefacts.

Utiliser la configuration Docker

Si vous avez configuré Docker avec gcloud ou un assistant d'identification autonome pour vous authentifier avec Artifact Registry, Docker stocke les paramètres du registre dans son fichier config.json. s'affiche en haut de l'écran.

Par défaut, Helm stocke les paramètres du registre dans ~/.config/helm/registry.json. Au lieu de gérer les paramètres du registre dans deux fichiers de configuration différents, vous pouvez configurer Helm pour s'authentifier auprès de tous les hôtes Artifact Registry configurés pour Docker.

Pour configurer Helm afin d'utiliser les paramètres de votre registre Docker:

Linux

  1. Ajoutez les lignes suivantes à ~/.bashrc (ou ~/.bash_profile sous macOS, ou à l'emplacement où votre interface système stocke les variables d'environnement):

    export DOCKER_CONFIG="~/.docker"
    export HELM_REGISTRY_CONFIG="${DOCKER_CONFIG}/config.json"
    
    • DOCKER_CONFIG correspond à la variable d'environnement Docker pour l'emplacement du fichier de configuration du client Docker, config.json. L'emplacement par défaut est ~/.docker.
    • HELM_REGISTRY_CONFIG est la variable d'environnement Helm du fichier de configuration du registre. Il pointe vers le fichier Docker config.json.
  2. Exécutez la commande suivante pour charger votre fichier .bashrc (ou .bash_profile) mis à jour:

    source ~/.bashrc
    

Windows

Exécutez les commandes suivantes pour configurer les variables d'environnement utilisateur pour les fichiers de configuration Docker et Helm:

setx DOCKER_CONFIG %USERPROFILE%\.docker
setx HELM_REGISTRY_CONFIG %DOCKER_CONFIG%\config.json
  • DOCKER_CONFIG correspond à la variable d'environnement Docker pour l'emplacement du fichier de configuration du client Docker, config.json. L'emplacement par défaut est %USERPROFILE%\.docker.
  • HELM_REGISTRY_CONFIG est la variable d'environnement Helm du fichier de configuration du registre. Il pointe vers le fichier Docker config.json.

Helm est maintenant configuré pour utiliser les mêmes identifiants que Docker. Vous pouvez transférer et extraire des graphiques pour les dépôts Artifact Registry dans des emplacements hôtes que vous avez configurés pour Docker.

Un jeton d'accès

Les jetons d'accès sont des jetons de courte durée qui permettent d'accéder à vos ressources Google Cloud. Étant donné que le jeton est de courte durée, vous devez en faire la demande moins d'une heure avant de l'utiliser pour vous connecter aux dépôts Artifact Registry.

Google Cloud obtient un jeton d'accès à l'aide des identifiants par défaut de l'application.

Pour utiliser un jeton d'accès :

  1. Créez un compte de service pour agir au nom de votre application ou sélectionnez un compte de service existant que vous utilisez pour l'automatisation.

    Vous aurez besoin de l'emplacement du fichier de clé de compte de service pour configurer l'authentification avec Artifact Registry. Pour les comptes existants, vous pouvez afficher les clés et en créer sur la page "Comptes de service".

    Accéder à la page "Comptes de service"

  2. Accordez le rôle Artifact Registry approprié au compte de service afin de fournir l'accès au dépôt.

  3. Attribuez l'emplacement du fichier de clé du compte de service à la variable GOOGLE_APPLICATION_CREDENTIALS afin que l'assistant d'identification Artifact Registry puisse obtenir votre clé lors de la connexion aux dépôts.

    export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
    

    KEY-FILE est le chemin d'accès au fichier de clé du compte de service.

  4. Obtenez un jeton d'accès en tant qu'identifiant lorsque vous vous authentifiez auprès d'Artifact Registry avec Docker.

    Linux/macOS

    Exécutez la commande suivante :

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

    Windows

    Exécutez la commande suivante :

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

    Où :

    • oauth2accesstoken est le nom d'utilisateur à utiliser pour s'authentifier avec un jeton d'accès.
    • gcloud auth application-default print-access-token est la commande gcloud permettant d'obtenir le jeton d'accès pour le compte de service. Votre jeton d'accès est le mot de passe pour l'authentification.
    • LOCATION est l'emplacement régional ou multirégional du dépôt où l'image est stockée.

Helm est désormais authentifié avec Artifact Registry.

Un fichier de clé JSON

Une clé de compte de service est une paire de clés à longue durée de vie que vous pouvez utiliser comme identifiant de compte de service. Vous êtes responsable de la sécurité de la clé privée et des autres opérations de gestion des clés, par exemple leur rotation.

Toute personne ayant accès à une clé privée valide pour un compte de service peut accéder aux ressources via le compte de service. Notez que le cycle de vie de l'accès de la clé au compte de service (et par conséquent, aux données auxquelles le compte de service a accès) est indépendant du cycle de vie de l'utilisateur ayant téléchargé la clé.

Suivez les instructions ci-dessous pour limiter l'accès à vos dépôts :

  • Créer des comptes de service dédiés permettant uniquement d'interagir avec les dépôts.
  • Attribuez le rôle Artifact Registry spécifique pour l'accès requis par le compte de service. Par exemple, un compte de service qui ne télécharge que des artefacts ne nécessite que le rôle de lecteur Artifact Registry.
  • Configurez les autorisations de vos comptes de service dédiés sur chaque dépôt plutôt que au niveau du projet. Vous pouvez ensuite spécifier l'accès en fonction du contexte du dépôt. Par exemple, un compte de service pour les compilations de développement peut disposer du rôle de lecteur d'artefacts pour un dépôt de production et du rôle Rédacteur de registre des artefacts pour un dépôt de préproduction.
  • Suivez les bonnes pratiques de gestion des identifiants.

Pour créer un nouveau compte de service et une clé de compte de service à n'utiliser qu'avec les dépôts Artifact Registry, procédez comme suit :

  1. Créez un compte de service pour agir au nom de votre application ou sélectionnez un compte de service existant que vous utilisez pour l'automatisation.

    Vous aurez besoin de l'emplacement du fichier de clé de compte de service pour configurer l'authentification avec Artifact Registry. Pour les comptes existants, vous pouvez afficher les clés et en créer sur la page "Comptes de service".

    Accéder à la page "Comptes de service"

  2. Vous avez la possibilité d'encoder tous les contenus du fichier de clé 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
    

    FILE-NAME correspond au nom du fichier de clé d'origine et NEW-FILE-NAME au fichier de clé encodé en base64.

  3. Accordez le rôle Artifact Registry approprié au compte de service afin de fournir l'accès au dépôt.

  4. Utilisez la clé de compte de service pour vous authentifier:

    Linux/macOS

    Exécutez la commande suivante :

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

    Windows

    Exécutez la commande suivante :

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

    Où :

    • KEY-TYPE est l'un des éléments suivants :
      • _json_key si vous utilisez la clé de compte de service au format JSON telle qu'elle vous a été fournie lors de la création du fichier.
      • _json_key_base64 si vous avez codé en base64 l'ensemble du contenu du fichier.
    • KEY-FILE est le nom du fichier de clé du compte de service au format JSON.
    • LOCATION est l'emplacement régional ou multirégional du dépôt où l'image est stockée.

Helm est désormais authentifié avec Artifact Registry.

Étape suivante