2.5. Création et utilisation de cartes de configuration
Les sections suivantes définissent les cartes de configuration et comment les créer et les utiliser.
2.5.1. Comprendre les cartes de configuration Copier lienLien copié sur presse-papiers!
De nombreuses applications nécessitent une configuration en utilisant une combinaison de fichiers de configuration, d’arguments de ligne de commande et de variables d’environnement. Dans Red Hat OpenShift Service sur AWS, ces artefacts de configuration sont découplés du contenu de l’image pour garder les applications conteneurisées portables.
L’objet ConfigMap fournit des mécanismes pour injecter des conteneurs avec des données de configuration tout en gardant les conteneurs agnostiques de Red Hat OpenShift Service sur AWS. La carte de configuration peut être utilisée pour stocker des informations fines telles que des propriétés individuelles ou des informations grossières comme des fichiers de configuration entiers ou des blobs JSON.
L’objet ConfigMap contient des paires clés-valeur de données de configuration qui peuvent être consommées dans des pods ou utilisées pour stocker des données de configuration pour des composants système tels que des contrôleurs. À titre d’exemple:
Définition d’objet de ConfigMap
Lorsque vous créez une carte de configuration à partir d’un fichier binaire, vous pouvez utiliser le champ de données binaires, comme une image.
Les données de configuration peuvent être consommées en pods de diverses manières. La carte de configuration peut être utilisée pour:
- Peupler les valeurs variables d’environnement dans les conteneurs
- Définir les arguments de ligne de commande dans un conteneur
- Populer des fichiers de configuration dans un volume
Les utilisateurs et les composants système peuvent stocker les données de configuration dans une carte de configuration.
La carte de configuration est similaire à un secret, mais conçue pour prendre en charge plus facilement le travail avec des chaînes qui ne contiennent pas d’informations sensibles.
Configuration des restrictions de carte
Il faut créer une carte de configuration avant que son contenu puisse être consommé en pods.
Les contrôleurs peuvent être écrits pour tolérer les données de configuration manquantes. Consultez les composants individuels configurés en utilisant des cartes de configuration au cas par cas.
Les objets ConfigMap résident dans un projet.
Ils ne peuvent être référencés que par des pods dans le même projet.
Le Kubelet ne prend en charge que l’utilisation d’une carte de configuration pour les pods qu’il obtient du serveur API.
Cela inclut tous les pods créés en utilisant le CLI, ou indirectement à partir d’un contrôleur de réplication. Il n’inclut pas les pods créés en utilisant le service Red Hat OpenShift sur le drapeau --manifest-url d’AWS node, son drapeau --config ou son API REST parce que ce ne sont pas des moyens courants de créer des pods.
2.5.2. Création d’une carte de configuration dans le Red Hat OpenShift Service sur la console web AWS Copier lienLien copié sur presse-papiers!
Il est possible de créer une carte de configuration dans le service Red Hat OpenShift sur la console web AWS.
Procédure
Créer une carte de configuration en tant qu’administrateur de cluster:
-
Dans la perspective Administrateur, sélectionnez Charges de travail
Config Maps. - En haut à droite de la page, sélectionnez Créer une carte de configuration.
- Entrez le contenu de votre carte de configuration.
- Choisissez Créer.
-
Dans la perspective Administrateur, sélectionnez Charges de travail
Créer une carte de configuration en tant que développeur:
- Dans la perspective Développeur, sélectionnez Config Maps.
- En haut à droite de la page, sélectionnez Créer une carte de configuration.
- Entrez le contenu de votre carte de configuration.
- Choisissez Créer.
2.5.3. Création d’une carte de configuration à l’aide du CLI Copier lienLien copié sur presse-papiers!
La commande suivante permet de créer une carte de configuration à partir d’annuaires, de fichiers spécifiques ou de valeurs littérales.
Procédure
Créer une carte de configuration:
oc create configmap <configmap_name> [options]
$ oc create configmap <configmap_name> [options]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.3.1. Création d’une carte de configuration à partir d’un répertoire Copier lienLien copié sur presse-papiers!
Il est possible de créer une carte de configuration à partir d’un répertoire à l’aide du drapeau --from-file. Cette méthode vous permet d’utiliser plusieurs fichiers dans un répertoire pour créer une carte de configuration.
Chaque fichier dans le répertoire est utilisé pour remplir une clé dans la carte de configuration, où le nom de la clé est le nom du fichier, et la valeur de la clé est le contenu du fichier.
À titre d’exemple, la commande suivante crée une carte de configuration avec le contenu du répertoire example-files:
oc create configmap game-config --from-file=example-files/
$ oc create configmap game-config --from-file=example-files/
Affichez les clés dans la carte de configuration:
oc describe configmaps game-config
$ oc describe configmaps game-config
Exemple de sortie
Les deux touches de la carte sont créées à partir des noms de fichiers dans le répertoire spécifié dans la commande. Le contenu de ces touches peut être grand, de sorte que la sortie d’oc décrit uniquement les noms des clés et leurs tailles.
Conditions préalables
Il faut avoir un répertoire avec des fichiers contenant les données avec lesquelles vous souhaitez remplir une carte de configuration.
La procédure suivante utilise ces exemples de fichiers: game.properties et ui.properties:
cat example-files/game.properties
$ cat example-files/game.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat example-files/ui.properties
$ cat example-files/ui.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice
color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Procédure
Créer une carte de configuration contenant le contenu de chaque fichier dans ce répertoire en entrant la commande suivante:
oc create configmap game-config \ --from-file=example-files/
$ oc create configmap game-config \ --from-file=example-files/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
La vérification
Entrez la commande oc get pour l’objet avec l’option -o pour voir les valeurs des touches:
oc get configmaps game-config -o yaml
$ oc get configmaps game-config -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.3.2. Créer une carte de configuration à partir d’un fichier Copier lienLien copié sur presse-papiers!
Il est possible de créer une carte de configuration à partir d’un fichier à l’aide du drapeau --from-file. L’option --from-file peut être transmise plusieurs fois au CLI.
Il est également possible de spécifier la clé à définir dans une carte de configuration pour le contenu importé à partir d’un fichier en passant une expression key=value à l’option --from-file. À titre d’exemple:
oc create configmap game-config-3 --from-file=game-special-key=example-files/game.properties
$ oc create configmap game-config-3 --from-file=game-special-key=example-files/game.properties
Lorsque vous créez une carte de configuration à partir d’un fichier, vous pouvez inclure des fichiers contenant des données non-UTF8 qui sont placées dans ce champ sans corrompre les données non-UTF8. Le service Red Hat OpenShift sur AWS détecte les fichiers binaires et encode de manière transparente le fichier en tant que MIME. Dans le serveur, la charge utile MIME est décodée et stockée sans corrompre les données.
Conditions préalables
Il faut avoir un répertoire avec des fichiers contenant les données avec lesquelles vous souhaitez remplir une carte de configuration.
La procédure suivante utilise ces exemples de fichiers: game.properties et ui.properties:
cat example-files/game.properties
$ cat example-files/game.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat example-files/ui.properties
$ cat example-files/ui.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice
color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Procédure
Créer une carte de configuration en spécifiant un fichier spécifique:
oc create configmap game-config-2 \ --from-file=example-files/game.properties \ --from-file=example-files/ui.properties
$ oc create configmap game-config-2 \ --from-file=example-files/game.properties \ --from-file=example-files/ui.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer une carte de configuration en spécifiant une paire clé-valeur:
oc create configmap game-config-3 \ --from-file=game-special-key=example-files/game.properties
$ oc create configmap game-config-3 \ --from-file=game-special-key=example-files/game.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
La vérification
Entrez la commande oc get pour l’objet avec l’option -o pour voir les valeurs des touches à partir du fichier:
oc get configmaps game-config-2 -o yaml
$ oc get configmaps game-config-2 -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Entrez la commande oc get pour l’objet avec l’option -o pour voir les valeurs des touches à partir de la paire clé-valeur:
oc get configmaps game-config-3 -o yaml
$ oc get configmaps game-config-3 -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- C’est la clé que vous avez définie à l’étape précédente.
2.5.3.3. Création d’une carte de configuration à partir de valeurs littérales Copier lienLien copié sur presse-papiers!
Il est possible de fournir des valeurs littérales pour une carte de configuration.
L’option --from-littérale prend une syntaxe key=valeur, qui permet de fournir des valeurs littérales directement sur la ligne de commande.
Procédure
Créer une carte de configuration en spécifiant une valeur littérale:
oc create configmap special-config \ --from-literal=special.how=very \ --from-literal=special.type=charm
$ oc create configmap special-config \ --from-literal=special.how=very \ --from-literal=special.type=charm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
La vérification
Entrez la commande oc get pour l’objet avec l’option -o pour voir les valeurs des touches:
oc get configmaps special-config -o yaml
$ oc get configmaps special-config -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.4. Cas d’utilisation: Consommer des cartes de configuration dans des pods Copier lienLien copié sur presse-papiers!
Les sections suivantes décrivent certains cas d’utilisation lors de la consommation d’objets ConfigMap dans des pods.
2.5.4.1. Populer des variables d’environnement dans les conteneurs en utilisant des cartes de configuration Copier lienLien copié sur presse-papiers!
Il est possible d’utiliser des cartes de configuration pour remplir des variables d’environnement individuelles dans des conteneurs ou pour remplir des variables d’environnement dans des conteneurs à partir de toutes les clés qui forment des noms de variables d’environnement valides.
À titre d’exemple, considérez la carte de configuration suivante:
ConfigMap avec deux variables d’environnement
ConfigMap avec une variable d’environnement
Procédure
Il est possible de consommer les clés de ce ConfigMap dans un pod à l’aide des sections configMapKeyRef.
Exemple de spécification de Pod configurée pour injecter des variables d’environnement spécifiques
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Il permet d’extraire les variables d’environnement spécifiées à partir d’un ConfigMap.
- 2
- Le nom d’une variable d’environnement de pod dans laquelle vous injectez la valeur d’une clé.
- 3 5
- Le nom du ConfigMap pour tirer des variables d’environnement spécifiques.
- 4 6
- Environnement variable à tirer du ConfigMap.
- 7
- Rend l’environnement variable optionnel. En option, le pod sera démarré même si le ConfigMap spécifié et les clés n’existent pas.
- 8
- Il permet d’extraire toutes les variables d’environnement d’un ConfigMap.
- 9
- Le nom du ConfigMap pour tirer toutes les variables d’environnement.
Lorsque ce pod est exécuté, les logs de pod incluront la sortie suivante:
SPECIAL_LEVEL_KEY=very log_level=INFO
SPECIAL_LEVEL_KEY=very log_level=INFO
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Le code SPECIAL_TYPE_KEY=charm n’est pas listé dans la sortie de l’exemple car optionnel: true est défini.
2.5.4.2. Définition des arguments de ligne de commande pour les commandes de conteneur avec des cartes de configuration Copier lienLien copié sur presse-papiers!
Il est possible d’utiliser une carte de configuration pour définir la valeur des commandes ou des arguments dans un conteneur à l’aide de la syntaxe de substitution de Kubernetes $(VAR_NAME).
À titre d’exemple, considérez la carte de configuration suivante:
Procédure
Afin d’injecter des valeurs dans une commande dans un conteneur, vous devez consommer les clés que vous souhaitez utiliser comme variables d’environnement. Ensuite, vous pouvez vous référer à eux dans la commande d’un conteneur en utilisant la syntaxe $(VAR_NAME).
Exemple de spécification de la gousse configurée pour injecter des variables d’environnement spécifiques
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Injectez les valeurs dans une commande dans un conteneur en utilisant les clés que vous souhaitez utiliser comme variables d’environnement.
Lorsque ce pod est exécuté, la sortie de la commande écho s’exécute dans le conteneur test-conteneur comme suit:
very charm
very charm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.4.3. Injecter du contenu dans un volume en utilisant des cartes de configuration Copier lienLien copié sur presse-papiers!
Il est possible d’injecter du contenu dans un volume en utilisant des cartes de configuration.
Exemple de ressource personnalisée ConfigMap (CR)
Procédure
Il existe plusieurs options différentes pour injecter du contenu dans un volume en utilisant des cartes de configuration.
La façon la plus basique d’injecter du contenu dans un volume en utilisant une carte de configuration est de remplir le volume avec des fichiers où la clé est le nom du fichier et le contenu du fichier est la valeur de la clé:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Fichier contenant la clé.
Lorsque ce pod est exécuté, la sortie de la commande chat sera:
very
very
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Il est également possible de contrôler les chemins dans le volume où sont projetées les touches cartographiques de configuration:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Chemin vers la configuration de la clé map.
Lorsque ce pod est exécuté, la sortie de la commande chat sera:
very
very
Copy to Clipboard Copied! Toggle word wrap Toggle overflow