Utiliser des ConfigMaps

Découvrez comment créer un ConfigMap et configurer ensuite vos services et révisions Knative serving de façon à 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 page ConfigMaps de la documentation GKE. 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 Knative serving. 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

Remplacez :

  • NAME est le nom de votre objet ConfigMap.
  • DATA peut être soit :

    • L'option --from-file et le chemin d'accès à chaque répertoire contenant un ou plusieurs fichiers de configuration.
    • L'option --from-literal et la paire clé/valeur pour chacune des données que vous souhaitez ajouter au fichier ConfigMap.

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 Knative serving en tant que volume ou variables d'environnement à l'aide de la console Google Cloud ou de la Google Cloud CLI lorsque vous déployez un nouveau service ou mettez à jour un service existant et déployez une révision :

Console

  1. Accédez à Knative serving dans la console Google Cloud :

    Accéder à Knative serving

  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 et secrets.

  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 Suivant pour passer à la section suivante.

  6. Dans la section Configurer la manière dont ce service est déclenché, sélectionnez la connectivité que vous souhaitez utiliser pour appeler le service.

  7. Cliquez sur Créer pour déployer l'image sur Knative serving et attendez la fin du déploiement.

Ligne de commande

Vous pouvez utiliser Google Cloud CLI 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 run services update avec l'un des paramètres suivants :

    Exemple :

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

    Remplacez :

    • SERVICE par le nom de votre service.
    • KEY1=VALUE1,KEY2=VALUE2 par une liste de paires nom/valeur séparées par des virgules 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 pour plus de lisibilité. Exemple :
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"
      
  • Pour les nouveaux services, définissez le ConfigMap en exécutant la commande gcloud run deploy avec le paramètre --set-config-maps :

    gcloud run deploy 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/cloudrun/hello ;
    • SERVICE par le nom de votre service.
    • KEY1=VALUE1,KEY2=VALUE2 par une liste de paires nom/valeur séparées par des virgules 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 pour plus de lisibilité. Exemple :
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"