10.2. Cas d'utilisation : Consommer des cartes de configuration dans les pods
Les sections suivantes décrivent quelques cas d'utilisation des objets ConfigMap dans les pods.
10.2.1. Remplir les variables d'environnement dans les conteneurs à l'aide de cartes de configuration Copier lienLien copié sur presse-papiers!
Les cartes de configuration peuvent être utilisées 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.
Prenons l'exemple de la carte de configuration suivante :
ConfigMap avec deux variables d'environnement
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
special.how: very
special.type: charm
ConfigMap avec une variable d'environnement
apiVersion: v1
kind: ConfigMap
metadata:
name: env-config
namespace: default
data:
log_level: INFO
Procédure
Vous pouvez consommer les clés de ce
ConfigMapdans un pod en utilisant les sectionsconfigMapKeyRef.Exemple de spécification
Podconfigurée pour injecter des variables d'environnement spécifiquesapiVersion: v1 kind: Pod metadata: name: dapi-test-pod spec: containers: - name: test-container image: gcr.io/google_containers/busybox command: [ "/bin/sh", "-c", "env" ] env:1 - name: SPECIAL_LEVEL_KEY2 valueFrom: configMapKeyRef: name: special-config3 key: special.how4 - name: SPECIAL_TYPE_KEY valueFrom: configMapKeyRef: name: special-config5 key: special.type6 optional: true7 envFrom:8 - configMapRef: name: env-config9 restartPolicy: Never- 1
- Stanza pour extraire les variables d'environnement spécifiées d'un site
ConfigMap. - 2
- Nom de la variable d'environnement du pod dans laquelle vous injectez la valeur de la clé.
- 3 5
- Nom de l'adresse
ConfigMapà partir de laquelle des variables d'environnement spécifiques doivent être extraites. - 4 6
- Variable d'environnement à extraire de
ConfigMap. - 7
- Rend la variable d'environnement facultative. En tant qu'optionnel, le pod sera démarré même si les
ConfigMapet les clés spécifiés n'existent pas. - 8
- Stanza pour extraire toutes les variables d'environnement d'un site
ConfigMap. - 9
- Nom de l'adresse
ConfigMapà partir de laquelle toutes les variables d'environnement doivent être extraites.
Lorsque ce module est exécuté, les journaux du module incluent la sortie suivante :
SPECIAL_LEVEL_KEY=very log_level=INFO
SPECIAL_TYPE_KEY=charm n'est pas listé dans l'exemple de sortie car optional: true est activé.
10.2.2. Définition des arguments de ligne de commande pour les commandes de conteneurs avec les cartes de configuration Copier lienLien copié sur presse-papiers!
Une carte de configuration peut également être utilisée pour définir la valeur des commandes ou des arguments dans un conteneur. Pour ce faire, on utilise la syntaxe de substitution de Kubernetes $(VAR_NAME). Considérons la carte de configuration suivante :
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
special.how: very
special.type: charm
Procédure
Pour injecter des valeurs dans une commande dans un conteneur, vous devez consommer les clés que vous souhaitez utiliser comme variables d'environnement, comme dans le cas d'utilisation de ConfigMaps dans des variables d'environnement. Vous pouvez ensuite y faire référence dans la commande d'un conteneur à l'aide de la syntaxe
$(VAR_NAME).Exemple de spécification
Podconfigurée pour injecter des variables d'environnement spécifiquesapiVersion: v1 kind: Pod metadata: name: dapi-test-pod spec: containers: - name: test-container image: gcr.io/google_containers/busybox command: [ "/bin/sh", "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ]1 env: - name: SPECIAL_LEVEL_KEY valueFrom: configMapKeyRef: name: special-config key: special.how - name: SPECIAL_TYPE_KEY valueFrom: configMapKeyRef: name: special-config key: special.type restartPolicy: Never- 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 module est exécuté, la sortie de la commande echo exécutée dans le conteneur test-container est la suivante :
very charm
10.2.3. Injecter du contenu dans un volume en utilisant des cartes de configuration Copier lienLien copié sur presse-papiers!
Vous pouvez injecter du contenu dans un volume en utilisant des cartes de configuration.
Exemple ConfigMap ressource personnalisée (CR)
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
special.how: very
special.type: charm
Procédure
Vous disposez de plusieurs options pour injecter du contenu dans un volume à l'aide de cartes de configuration.
La façon la plus simple d'injecter du contenu dans un volume à l'aide d'une carte de configuration consiste à remplir le volume avec des fichiers dont la clé est le nom et le contenu la valeur de la clé :
apiVersion: v1 kind: Pod metadata: name: dapi-test-pod spec: containers: - name: test-container image: gcr.io/google_containers/busybox command: [ "/bin/sh", "cat", "/etc/config/special.how" ] volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: special-config1 restartPolicy: Never- 1
- Fichier contenant la clé.
Lorsque ce pod est exécuté, la sortie de la commande cat sera la suivante :
veryVous pouvez également contrôler les chemins à l'intérieur du volume où les clés de configuration sont projetées :
apiVersion: v1 kind: Pod metadata: name: dapi-test-pod spec: containers: - name: test-container image: gcr.io/google_containers/busybox command: [ "/bin/sh", "cat", "/etc/config/path/to/special-key" ] volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: special-config items: - key: special.how path: path/to/special-key1 restartPolicy: Never- 1
- Chemin d'accès à la clé de la carte de configuration.
Lorsque ce pod est exécuté, la sortie de la commande cat sera la suivante :
very