Utilisation des mappes de configuration
Apprenez à utiliser des mappes de configuration dans Code Engine. Dans Code Engine, vous pouvez stocker vos informations sous forme de paires clé-valeur dans des mappes de configuration qui peuvent être consommées par votre application, votre travail ou votre charge de travail à l'aide de variables d'environnement.
Que sont les mappes de configuration et pourquoi les utiliserais-je?
Dans Code Engine, les secrets et les mappes de configuration sont des paires clé-valeur. Lorsqu'elles sont mappées à des variables d'environnement, les relations NAME=VALUE sont définies de telle sorte que le nom de la variable
d'environnement correspond à la "clé" de chaque entrée de ces mappes, et la valeur de la variable d'environnement est la "valeur" de cette clé.
Une mappe de configuration fournit une méthode permettant d'inclure des informations de données non sensibles à votre déploiement. En référençant des valeurs de votre mappe de configuration en tant que variables d'environnement, vous pouvez découpler des informations spécifiques de votre déploiement et conserver votre application, votre travail ou votre fonction portables. Une mappe de configuration contient des informations dans des paires clé-valeur.
Etant donné que les secrets et les mappes de configuration sont des entités similaires (sauf que les secrets sont stockés de manière plus sécurisée), la façon dont vous interagissez et travaillez avec les secrets et les mappes de configuration est également similaire. Pour en savoir plus sur les secrets, voir Utilisation des secrets.
Je vois des mappes de configurationque je n'ai pas créés. Puis-je les supprimer ?
Non. Code Engine crée automatiquement les mappes de configuration istio-ca-root et kube-root-ca dans votre espace de nom. Code Engine utilise ces mappes de configuration en interne. Si vous les supprimez, Code Engine
les recrée automatiquement.
Création de mappes de configuration
Créez des mappes de configuration à l'aide de Code Engine.
Création d'une mappe de configuration à partir de la console
Créez des mappes de configuration à l'aide de la console Code Engine.
Avant de commencer, créez un projet.
- Une fois que votre projet est à l'état Actif, cliquez sur le nom de votre projet sur la page des projets Code Engine.
- Sur la page Présentation, cliquez sur Secrets et mappes de configuration.
- Sur la page Secrets et mappes de configuration, cliquez sur Créer pour créer votre mappe de configuration.
- Dans la page Créer un secret ou une mappe de configuration, procédez comme suit:
- Cliquez sur Configmap, puis sur Suivant.
- Indiquez un nom, par exemple
myconfigmap. - Cliquez sur Ajouter une paire clé-valeur. Indiquez une ou plusieurs paires clé-valeur pour cette mappe de configuration. Par exemple, indiquez une clé
key1ayant pour valeurvalue1, ainsi qu'une autre clékey2ayant pour valeurvalue2. Notez que vous pouvez spécifier des valeurs sur une ou plusieurs lignes. Il n'est pas nécessaire que le nom choisi pour votre clé soit identique au nom de votre variable d'environnement. - Cliquez sur Créer pour créer la mappe de configuration.
Maintenant que votre mappe de configuration est créée à partir de la console, accédez à la page Secrets et mappes de configuration pour afficher une liste des secrets et des mappes de configuration définis. Vous pouvez appliquer des filtres pour personnaliser la liste en fonction de vos besoins.
Création d'une mappe de configuration à l'aide de l'interface de ligne de commande
Créez des mappes de configuration à l'aide de l'interface de ligne de commande Code Engine.
Vous pouvez remplir une mappe de configuration de plusieurs manières. Vous pouvez la remplir en spécifiant les paires clé-valeur directement sur la ligne de commande, ou vous pouvez pointer vers un fichier.
Avant de commencer
- Configurez votre environnement d'interface de ligne de commande Code Engine.
- Créez et utilisez un projet.
Quand vous créez (ou mettez à jour) une mappe de configuration à partir d'un fichier, le format doit être --from-file FILE ou --from-file KEY=FILE. Dans Code Engine, lorsque vous utilisez un fichier pour spécifier
des valeurs de mappes de configuration, tout le contenu du fichier devient la valeur de la paire valeur-clé. Lorsque vous utilisez le format d'option --from-file KEY=FILE, KEY correspond au nom de la variable
d'environnement connue de votre application, de votre travail ou de votre charge de travail de fonction. Lorsque vous utilisez le format d'option --from-file FILE, FILE est le nom de la variable d'environnement
connue de votre travail, application ou fonction. Si votre fichier contient une ou plusieurs paires clé-valeur, utilisez l'option --from-env-file afin d'ajouter une variable d'environnement pour chaque paire clé-valeur dans
le fichier spécifié. Toutes les lignes du fichier indiqué qui sont vides ou commencent par #sont ignorées.
Création d'une mappe de configuration via l'interface de ligne de commande
Créez une mappe de configuration à l'aide de la commande configmap create de l'une des façons suivantes :
-
Créez une mappe de configuration directement dans la ligne de commande en utilisant l'option
--from-literalau formatKEY=VALUE. Par exemple :ibmcloud ce configmap create --name myliteralconfigmap --from-literal TARGET=Sunshine -
Créez une mappe de configuration à l'aide de l'option
--from-filepour pointer vers un fichier. En utilisant cette option, tout le contenu du fichier devient la valeur pour la paire valeur-clé. Pour cet exemple, utilisez un fichier nommécolors.txtqui contient le texteblue, green, red.-
Dans l'exemple suivant, le format
--from-file KEY=FILEest utilisé avec la commandeconfigmap create:ibmcloud ce configmap create --name mycolorconfigmap --from-file TARGET=colors.txt -
Dans l'exemple ci-après, le format
--from-file FILEest utilisé avec la commandeconfigmap create. Dans cet exemple,TARGET(sans extension) est le nom du fichier, qui est identique au nom de la variable d'environnement connue de l'exemple de travailmyjob.ibmcloud ce configmap create --name mycolorconfigmap2 --from-file TARGET
-
-
Créez une mappe de configuration à l'aide de l'option
--from-env-filepour pointer vers un fichier contenant une ou plusieurs lignes correspondant au formatKEY=VALUE. Chaque ligne du fichier spécifié est ajoutée en tant que paire clé-valeur. Toutes les lignes du fichier indiqué qui sont vides ou commencent par#sont ignorées. Pour cet exemple, utilisez un fichier nommécolors_multi.txtqui contient les paires clé-valeurcolor1=yellow,color2=orangeetcolor3=purple.ibmcloud ce configmap create --name mycolorconfigmapmulti --from-env-file colors_multi.txt
Affichage de la liste des mappes de configuration à l'aide de l'interface de ligne de commande
Maintenant que la mappe de configuration est créée, utilisez la commande configmap list pour répertorier toutes les mappes de configuration de votre projet ou servez-vous de la commande configmap get pour afficher des détails sur une mappe de configuration spécifique. Par exemple :
ibmcloud ce configmap get --name mycolorconfigmap
Exemple de sortie
Getting configmap 'mycolorconfigmap'...
OK
Name: mycolorconfigmap
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 11s
Created: 2020-10-14 14:10:57 -0400 EDT
Data:
---
TARGET: blue, green, red
Mise à jour des mappes de configuration
Vous pouvez modifier les paires clé-valeur des mappes de configuration existantes.
Mise à jour des mappes de configuration à partir de la console
Vous pouvez mettre à jour une mappe de configuration existante et ses paires clé-valeur à partir de la console.
-
Vous pouvez mettre à jour les paires clé-valeur de vos mappes de configuration définies à partir de la console de l'une des manières suivantes.
- Accédez à la page Secrets et mappes de configuration de votre projet et recherchez la mappe de configuration que vous souhaitez mettre à jour. Cliquez sur le nom de la mappe de configuration à mettre à jour pour l'ouvrir.
- Si votre mappe de configuration est référencée par une application, un travail ou une charge de travail de fonction, utilisez les liens du tableau des variables d'environnement dans l'onglet Variables d'environnement de votre charge de travail. Ces liens vous permettent d'accéder directement à votre mappe de configuration.
-
Cliquez sur Editer et apportez les mises à jour à votre mappe de configuration.
-
Cliquez sur Sauvegarder pour enregistrer les modifications apportées à votre mappe de configuration.
Si votre mappe de configuration mise à jour est référencée par une application, un travail ou une charge de travail de fonction, votre charge de travail doit être redémarrée pour que les nouvelles données soient prises en compte.
- Applications : dans la page de votre application, cliquez sur Nouvelle révision, puis sur Sauvegarder et déployer. Vous pouvez également attendre que votre application soit mise à l'échelle par diminution jusqu'à zéro, après quoi elle utilise la mappe de configuration mise à jour lorsqu'elle est mise à l'échelle par augmentation.
- Travaux : dans la page de votre travail, cliquez sur Soumettre un travail pour exécuter votre travail. Vous pouvez aussi réexécuter un travail. Cette nouvelle exécution de travail utilise la mappe de configuration mise à jour.
- Fonction-Votre fonction est redémarrée lorsqu'elle est appelée à nouveau. Vous pouvez tester votre fonction en cliquant sur Tester la fonction dans la page de la fonction.
Mise à jour des mappes de configuration via l'interface de ligne de commande
Vous pouvez mettre à jour une mappe de configuration existante et ses paires clé-valeur via l'interface de ligne de commande.
-
Pour modifier la valeur d'une paire clé-valeur dans une mappe de configuration, utilisez la commande
configmap update. Mettez à jour la mappe de configurationmyliteralconfigmappour remplacer la valeur de la cléTARGET,Sunshine, parStranger.ibmcloud ce configmap update --name myliteralconfigmap --from-literal "TARGET=Stranger" -
Maintenant que votre mappe de configuration est mise à jour, utilisez la commande
configmap getpour afficher les détails d'une mappe de configuration spécifique. Par exemple :ibmcloud ce configmap get --name myliteralconfigmapExemple de sortie
Getting configmap 'myliteralconfigmap'... OK Name: myliteralconfigmap ID: abcdefgh-abcd-abcd-abcd-c88e2775388e Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 21m Created: 2021-05-14T07:57:11-04:00 Data: --- TARGET: Stranger
Référencement de mappes de configuration
Votre charge de travail d'application, de travail ou de fonction peut consommer et utiliser les informations stockées dans une mappe de configuration à l'aide de variables d'environnement.
Référencement de mappes de configuration à partir de la console
Vous pouvez utiliser la console pour créer des variables d'environnement pour votre charge de travail d'application, de travail ou de fonction qui font référence à une mappe de configuration ou à des clés individuelles dans une mappe de configuration.
Avant de pouvoir référencer une mappe de configuration, celle-ci doit exister. Voir Création d'une mappe de configuration.
A partir de la console, vous ne pouvez référencer qu'une seule clé individuelle d'une mappe de configuration définie par variable d'environnement. Si vous devez faire référence à plusieurs clés d'une mappe de configuration, répétez les étapes pour définir une autre variable d'environnement qui fait référence à une clé différente.
-
Pour référencer une mappe de configuration définie à partir de votre application, travail ou charge de travail de fonction, créez une variable d'environnement. La variable d'environnement peut référencer une mappe de configuration existante intégrale ou une clé individuelle dans une mappe de configuration existante. Par exemple, référençons intégralement la mappe de configuration
myconfigmapà partir de l'applicationmyapp. Lorsque vous référencez intégralement une mappe de configuration (ou un secret), vous pouvez éventuellement spécifier un fichierprefix. En utilisant un préfixe tel quemyconfigmap_, chaque clé est préfixée avecmyconfigmap_. -
Après avoir créé des variables d'environnement, vous devez redémarrer votre application, votre travail ou votre charge de travail pour que les modifications soient prises en compte. Pour les applications, sauvegardez et déployez l'application concernée pour la mettre à jour avec les variables d'environnement que vous avez définies. Pour les travaux et les fonctions, votre charge de travail est mise à jour lors de son prochain appel avec les variables d'environnement que vous avez définies.
-
Lorsque l'application prend le statut Prêt, vous pouvez la tester. Cliquez sur Tester l'application, puis sur Envoyer une demande dans le panneau de test de l'application. Pour ouvrir l'application dans une page Web, cliquez sur URL de l'application. Dans cet exemple
myapp, car nous avons spécifié un préfixe pour la mappe de configurationmyconfigmapentièrement référencée, toutes les clés de cette mappe de configuration sont référencées en tant que variables d'environnement et préfixées avecmyconfigmap_. Par exemple, ces variables d'environnement s'affichent sous la formemyconfigmap_key1=value1etmyconfigmap_key2=value2.
Pour mettre à jour une variable d'environnement référençant une mappe de configuration, voir Mise à jour des variables d'environnement et Points à prendre en compte pour la mise à jour des variables d'environnement.
Pour supprimer une variable d'environnement référençant une mappe de configuration, voir Suppression de variables d'environnement.
Référencement de mappes de configuration via l'interface de ligne de commande
Pour utiliser des mappes de configuration avec des charges de travail d'application, de travail ou de fonction, vous pouvez définir des variables d'environnement qui font référence à une mappe de configuration ou à des clés individuelles dans une mappe de configuration à l'aide de l'interface de ligne de commande.
Référencement des mappes de configuration existantes via l'interface de ligne de commande
Pour utiliser une mappe de configuration avec une application, un travail ou une charge de travail de fonction avec l'interface de ligne de commande, spécifiez l'option --env-from-configmap sur les commandes suivantes.
L'exemple suivant montre comment référencer une mappe de configuration existante avec une application à l'aide de l'interface de ligne de commande.
-
Utilisez la commande
configmap createpour créer les deux mappes de configuration suivantes pour ce scénario.ibmcloud ce configmap create --name myliteralconfigmap --from-literal TARGET=Sunshineibmcloud ce configmap create --name myliteralconfigmap2 --from-literal TARGET=Stranger -
Déployez une application et référencez la mappe de configuration
myliteralconfigmap. Pour cet exemple, créez une application qui utilise l'imagehello. Lorsqu'une demande est envoyée à cet exemple d'application, l'application lit la variable d'environnementTARGETet afficheHello ${TARGET}. Si cette variable d'environnement est vide,Hello Worldest renvoyé. Référencez la mappe de configurationmyliteralconfigmap. Pour plus d'informations sur le code utilisé pour cet exemple, voirhello.ibmcloud ce app create --name myhelloapp --image icr.io/codeengine/hello --env-from-configmap myliteralconfigmap -
Appelez l'application. L'application renvoie
Hello Sunshine, qui est la valeur de la cléTARGETspécifiée dans la mappe de configurationmyliteralconfigmap.curl https://myhelloapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloudExemple de sortie
Hello Sunshine -
Mettez de nouveau à jour de l'application pour utiliser la mappe de configuration
myliteralconfigmap2.Lorsque vous mettez à jour une application, un travail ou une fonction avec une variable d'environnement qui fait entièrement référence à une mappe de configuration (ou un secret) pour faire entièrement référence à une mappe de configuration (ou un secret) différente, les références complètes remplacent les autres références complètes dans l'ordre dans lequel elles sont définies (le dernier ensemble référencé remplace le premier ensemble).
ibmcloud ce app update --name myhelloapp --env-from-configmap myliteralconfigmap2Exemple de sortie
Updating application 'myhelloapp' to latest revision. [...] Run 'ibmcloud ce application get -n myhelloapp' to check the application status. OK https://myhelloapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloud -
Appelez à nouveau l'application. Cette fois, l'application renvoie
Hello Stranger, qui est la valeur spécifiée dans la mappe de configurationmyliteralconfigmap2.curl https://myhelloapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloudExemple de sortie
Hello Stranger -
Mettez à jour
myliteralconfigmap2pour modifier la paire clé-valeur.ibmcloud ce configmap update --name myliteralconfigmap2 --from-literal "TARGET=Happy day"Exécutez la commande
ibmcloud ce configmap get -n myliteralconfigmap2pour afficher les détails de la mappe de configuration.Exemple de sortie
Name: myliteralconfigmap2 [...] Data: --- TARGET: Happy day -
Redémarrez l'application pour que les nouvelles données soient appliquées.
ibmcloud ce app update --name myhelloapp -
Appelez à nouveau l'application. Cette fois, l'application renvoie
Hello Happy day, qui est la valeur spécifiée dans la mappe de configurationmyliteralconfigmap2.curl https://myhelloapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloudExemple de sortie
Hello Happy day
Référencement des mappes de configuration qui ne sont pas encore définies via l'interface de ligne de commande
Si une mappe de configuration n'existe pas avant d'être référencée, la charge de travail de l'application, du travail ou de la fonction ne se déploie pas correctement et un travail ou une fonction ne s'exécute pas correctement tant que la mappe de configuration référencée n'est pas créée.
Si vous utilisez une application, un travail ou une charge de travail de fonction et que la mappe de configuration référencée n'est pas encore définie, vous pouvez utiliser l'option --force pour éviter la vérification de l'existence
de la mappe de configuration référencée. L'option --force peut être utilisée avec les commandes suivantes.
Lorsque vous utilisez l'option --force avec ces commandes, l'action de création, de mise à jour ou d'exécution de la charge de travail se termine ; toutefois, l'application, le travail ou la charge de travail ne s'exécute pas
correctement tant que la mappe de configuration référencée n'existe pas. Si vous ajoutez l'option --no-wait en plus de l'option --force à la commande, le système exécute l'action et n'attend pas que la charge
de travail s'exécute correctement.
L'exemple suivant montre comment référencer une mappe de configuration qui n'est pas encore définie avec une application à l'aide de l'interface de ligne de commande.
-
Créez une application et référencez la mappe de configuration
myliteralconfigmap3qui n'est pas définie. Pour cet exemple, créez une application Code Engine qui utilise l'imageicr.io/codeengine/hello. Lorsqu'une demande est envoyée à cet exemple d'application, l'application lit la variable d'environnementTARGETet afficheHello ${TARGET}. Si cette variable d'environnement est vide,Hello Worldest renvoyé. Référencez la mappe de configurationmyliteralconfigmap3. Pour plus d'informations sur le code utilisé pour cet exemple, voirhello.Avec l'option
--no-waitdans la commandeapp create, l'application est créée sans attendre que l'application soit prête.ibmcloud ce app create --name myapp --image icr.io/codeengine/hello --env-from-configmap myliteralconfigmap3 --force --no-wait -
Utilisez la commande
app getpour afficher les détails de l'exécution de travail, y compris les informations relatives aux variables d'environnement. Notez que l'application est créée, mais pas encore totalement déployée.ibmcloud ce app get --name myappExemple de sortie
Name: myapp [...] Status Summary: Application is deploying Environment Variables: Type Name Value ConfigMap full reference myliteralconfigmap3 Image: icr.io/codeengine/hello Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Runtime: Concurrency: 100 Maximum Scale: 10 Minimum Scale: 0 Timeout: 300 Conditions: Type OK Age Reason ConfigurationsReady false 10s Ready false 10s RevisionMissing : Configuration "myapp" is waiting for a Revision to become ready. RoutesReady false 10s RevisionMissing : Configuration "myapp" is waiting for a Revision to become ready. Events: Type Reason Age Source Messages Normal Created 12s service-controller Created Configuration "myapp" Normal Created 12s service-controller Created Route "myapp" Instances: Name Revision Running Status Restarts Age myapp-00001-deployment-566d5c79b9-wttqs myapp-00001 0/2 Pending 0 11s -
Créez la mappe de configuration.
ibmcloud ce configmap create --name myliteralconfigmap3 --from-literal TARGET=Everyone -
Redémarrez l'application pour que les nouvelles données soient appliquées.
ibmcloud ce app update --name myapp -
Appelez l'application. L'application renvoie
Hello Everyone, qui est la valeur spécifiée dans la mappe de configurationmyliteralconfigmap3.curl https://myapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloudExemple de sortie
Hello Everyone -
Mettez à jour l'application pour référencer la mappe de configuration
myliteralconfigmap2existante. La mappe de configurationmyliteralconfigmap2est définie avec la valeurTARGET=Stranger. La mise à jour de l'application redémarre l'application .Quand vous mettez à jour une application ou un travail avec une variable d'environnement qui référence intégralement une mappe de configuration (ou un secret) pour référencer intégralement une autre mappe de configuration (ou un autre secret), les références intégrales remplacent les autres références intégrales dans l'ordre où elles sont définies (le dernier ensemble référencé remplace le premier ensemble).
ibmcloud ce app update --name myapp --env-from-configmap myliteralconfigmap2 -
Appelez à nouveau l'application. Cette fois, l'application renvoie
Hello Stranger, qui est la valeur spécifiée dans la mappe de configurationmyliteralconfigmap2.curl https://myapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloudExemple de sortie
Hello Stranger
Pour obtenir des scénarios plus détaillés sur le référencement de secrets et de mappes de configuration complets en tant que variables d'environnement, sur le remplacement de références et sur le retrait de références dans l'interface de ligne de commande, voir Référencement de secrets et des mappes de configuration.
Suppression de mappes de configuration
Lorsque vous n'avez plus besoin d'une mappe de configuration, vous pouvez la supprimer.
Suppression de mappes de configuration de la console
- Pour supprimer une mappe de configuration de la console,
- Accédez à la page Secrets et configmaps depuis votre page de projets Code Engine.
- Cliquez sur la mappe de configuration à supprimer pour ouvrir sa page.
- Dans la page de la mappe de configuration spécifique, cliquez sur Actions > Supprimer la mappe de configuration.
- Pour supprimer une paire clé-valeur pour une mappe de configuration spécifique à partir de la console,
- Accédez à la page Secrets et configmaps depuis votre page de projets Code Engine.
- Cliquez sur la mappe de configuration à modifier pour ouvrir sa page.
- Dans la page de la mappe de configuration spécifique, supprimez la paire clé-valeur que vous souhaitez supprimer.
Vous pouvez également supprimer des variables d'environnement définies qui référencent des secrets et des mappes de configuration. Pour supprimer une variable d'environnement définie, dans l'onglet Variables d'environnement de votre application, travail ou fonction, supprimez la variable d'environnement que vous souhaitez supprimer. Après avoir supprimé une variable d'environnement définie, veillez à cliquer sur Sauvegarder pour sauvegarder les modifications apportées à votre application, à votre travail ou à votre fonction. Pour plus d'informations, voir Suppression d'une variable d'environnement.
Suppression de mappes de configuration avec l'interface de ligne de commande
-
Pour supprimer une mappe de configuration à l'aide de l'interface de ligne de commande, utilisez la commande
configmap delete. Par exemple :ibmcloud ce configmap delete --name myliteralconfigmap -fExemple de sortie
Deleting configmap 'myliteralconfigmap'... OK
Vous pouvez également supprimer des variables d'environnement qui référencent des secrets et des mappes de configuration à partir de l'interface de ligne de commande.