Utiliser des ConfigMaps dans des clusters Cloud Run pour Anthos sur Google Cloud

Découvrez comment créer un ConfigMap, puis configurer vos services et révisions Cloud Run for Anthos sur Google Cloud de manière à utiliser ce ConfigMap.

Un cas d'utilisation courant pour un service consiste à séparer le code d'application de la configuration à l'aide de ConfigMaps. Un ConfigMap est semblable à un secret, à la différence près qu'un secret permet de stocker des informations sensibles, tandis qu'un ConfigMap sert à stocker des données non sensibles telles que des chaînes de connexion, des identifiants publics, des noms d'hôte et des URL. Pour en savoir plus sur l'utilisation des ConfigMaps, consultez la documentation de Google Kubernetes Engine.

Lorsque vous permettez aux conteneurs d'accéder aux ConfigMaps, vous pouvez choisir l'une des options suivantes :

  • Installez le ConfigMap en tant que volume, avec des entrées ConfigMap disponibles sous forme de fichiers dans le volume installé. Cette méthode est recommandée, car elle garantit que vous obtenez la dernière version du ConfigMap lorsque vous le lisez.
  • Transmettez le ConfigMap à l'aide de variables d'environnement.

Créer un ConfigMap

Il existe plusieurs façons de créer un ConfigMap, comme décrit dans la documentation de GKE sur les ConfigMaps. Pour plus de commodité, les étapes suivantes montrent comment créer facilement un ConfigMap.

Lorsque vous créez un ConfigMap, veillez à le créer dans le même espace de noms que le cluster qui exécute votre service Cloud Run pour Anthos. Ces instructions utilisent l'espace de noms default.

Vous pouvez créer un ConfigMap à partir de la ligne de commande :

kubectl create configmap name data

où :

  • name est le nom de votre objet ConfigMap.
  • data peut être :

    • un chemin d'accès à un répertoire contenant un ou plusieurs fichiers de configuration, désigné à l'aide de l'option --from-file ;
    • des paires clé/valeur, chacune spécifiée à l'aide d'options --from-literal.

Exemple :

kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm

Le ConfigMap est créé et importé à un emplacement où il est disponible pour les clusters dans l'espace de noms default.

Rendre un ConfigMap disponible auprès d'un service

Après avoir créé un ConfigMap, vous pouvez le mettre à la disposition de votre service Cloud Run for Anthos en tant que volume ou variables d'environnement à l'aide de Cloud Console ou de l'outil de ligne de commande gcloud lorsque vous déployez un nouveau service ou mettez à jour un service existant et déployez une révision :

Console

  1. Accédez à Cloud Run for Anthos sur Google Cloud.

  2. Cliquez sur Créer un service si vous configurez un nouveau service sur lequel effectuer un déploiement. Si vous configurez un service existant, cliquez sur celui-ci, puis sur Modifier et déployer la nouvelle révision.

  3. Sous Paramètres avancés, cliquez sur Variables.

    image

  4. Sous Reference a ConfigMap (Référencer un ConfigMap), sélectionnez le ConfigMap souhaité dans le menu déroulant.

    • Dans le menu déroulant Reference method (Méthode de référence), sélectionnez la manière dont vous souhaitez utiliser votre ConfigMap, installé en tant que volume ou exposé en tant que variables d'environnement.
    • Si vous utilisez l'installation en tant que volume, spécifiez le chemin d'accès, puis cliquez sur Terminé.
    • Si vous décidez de l'exposer en tant que variables d'environnement, procédez comme suit :
      1. Indiquez le nom de la variable et sélectionnez la valeur ConfigMap correspondante dans le menu déroulant Clé.
      2. Cliquez sur Add (Ajouter) pour ajouter une autre valeur ConfigMap.
      3. Indiquez le nom de la variable et sélectionnez la valeur ConfigMap correspondante dans le menu déroulant Clé.
      4. Cliquez sur OK.

  5. Cliquez sur Créer ou Déployer.

Ligne de commande

Vous pouvez utiliser l'une des commandes gcloud kuberun suivantes pour définir des ConfigMaps pour les nouveaux services ou pour mettre à jour des services existants :

  • Pour les services existants, mettez à jour un ConfigMap en exécutant la commande gcloud kuberun core services update avec l'un des paramètres suivants :

    Exemple :

    gcloud kuberun core services update SERVICE --update-config-maps KEY1=VALUE1,KEY2=VALUE2
    

    Remplacez :

    • SERVICE par le nom de votre service.
    • KEY1=VALUE1,KEY2=VALUE2 avec une liste de paires nom/valeur séparées par une virgule pour chaque ConfigMap. Pour chaque KEY, vous pouvez spécifier un chemin d'accès au montage ou fournir une variable d'environnement. Spécifiez un chemin d'accès au montage en commençant par une barre oblique /. Toutes les autres clés correspondent à des variables d'environnement. Pour chaque VALUE, spécifiez le nom du ConfigMap. Découvrez comment spécifier plusieurs paramètres.
    • Options des paramètres de commande

      Pour spécifier plusieurs ensembles de paires clé/valeur, vous pouvez spécifier plusieurs paramètres de lisibilité. Exemple :
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"
      
  • Pour les nouveaux services, définissez un secret en exécutant la commande gcloud kuberun core services create avec le paramètre --set-config-maps :

    gcloud kuberun core services create SERVICE --image=IMAGE_URL --set-config-maps KEY1=VALUE1,KEY2=VALUE2
    

    Remplacez :

    • IMAGE_URL par une référence à l'image de conteneur, par exemple gcr.io/myproject/my-image:latest ;
    • SERVICE par le nom de votre service.
    • KEY1=VALUE1,KEY2=VALUE2 avec une liste de paires nom/valeur séparées par une virgule pour chaque ConfigMap. Pour chaque KEY, vous pouvez spécifier un chemin d'accès au montage ou fournir une variable d'environnement. Spécifiez un chemin d'accès au montage en commençant par une barre oblique /. Toutes les autres clés correspondent à des variables d'environnement. Pour chaque VALUE, spécifiez le nom du ConfigMap. Découvrez comment spécifier plusieurs paramètres.
    • Options des paramètres de commande

      Pour spécifier plusieurs ensembles de paires clé/valeur, vous pouvez spécifier plusieurs paramètres de lisibilité. Exemple :
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"