8.2. Cas d’utilisation: Consommer des cartes de configuration dans des pods


Les sections suivantes décrivent certains cas d’utilisation lors de la consommation d’objets ConfigMap dans des pods.

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

apiVersion: v1
kind: ConfigMap
metadata:
  name: special-config 
1

  namespace: default 
2

data:
  special.how: very 
3

  special.type: charm 
4
Copy to Clipboard Toggle word wrap

1
Le nom de la carte de configuration.
2
Le projet dans lequel réside la carte de configuration. Les cartes de configuration ne peuvent être référencées que par des pods dans le même projet.
3 4
Les variables d’environnement à injecter.

ConfigMap avec une variable d’environnement

apiVersion: v1
kind: ConfigMap
metadata:
  name: env-config 
1

  namespace: default
data:
  log_level: INFO 
2
Copy to Clipboard Toggle word wrap

1
Le nom de la carte de configuration.
2
Environnement variable à injecter.

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

    apiVersion: v1
    kind: Pod
    metadata:
      name: dapi-test-pod
    spec:
      securityContext:
        runAsNonRoot: true
        seccompProfile:
          type: RuntimeDefault
      containers:
        - name: test-container
          image: gcr.io/google_containers/busybox
          command: [ "/bin/sh", "-c", "env" ]
          env: 
    1
    
            - name: SPECIAL_LEVEL_KEY 
    2
    
              valueFrom:
                configMapKeyRef:
                  name: special-config 
    3
    
                  key: special.how 
    4
    
            - name: SPECIAL_TYPE_KEY
              valueFrom:
                configMapKeyRef:
                  name: special-config 
    5
    
                  key: special.type 
    6
    
                  optional: true 
    7
    
          envFrom: 
    8
    
            - configMapRef:
                name: env-config 
    9
    
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop: [ALL]
      restartPolicy: Never
    Copy to Clipboard Toggle word wrap

    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
    Copy to Clipboard Toggle word wrap
Note

Le code SPECIAL_TYPE_KEY=charm n’est pas listé dans la sortie de l’exemple car optionnel: true est défini.

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:

apiVersion: v1
kind: ConfigMap
metadata:
  name: special-config
  namespace: default
data:
  special.how: very
  special.type: charm
Copy to Clipboard Toggle word wrap

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

    apiVersion: v1
    kind: Pod
    metadata:
      name: dapi-test-pod
    spec:
      securityContext:
        runAsNonRoot: true
        seccompProfile:
          type: RuntimeDefault
      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
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop: [ALL]
      restartPolicy: Never
    Copy to Clipboard Toggle word wrap

    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
    Copy to Clipboard Toggle word wrap

Il est possible d’injecter du contenu dans un volume en utilisant des cartes de configuration.

Exemple de ressource personnalisée ConfigMap (CR)

apiVersion: v1
kind: ConfigMap
metadata:
  name: special-config
  namespace: default
data:
  special.how: very
  special.type: charm
Copy to Clipboard Toggle word wrap

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é:

    apiVersion: v1
    kind: Pod
    metadata:
      name: dapi-test-pod
    spec:
      securityContext:
        runAsNonRoot: true
        seccompProfile:
          type: RuntimeDefault
      containers:
        - name: test-container
          image: gcr.io/google_containers/busybox
          command: [ "/bin/sh", "-c", "cat", "/etc/config/special.how" ]
          volumeMounts:
          - name: config-volume
            mountPath: /etc/config
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop: [ALL]
      volumes:
        - name: config-volume
          configMap:
            name: special-config 
    1
    
      restartPolicy: Never
    Copy to Clipboard Toggle word wrap
    1
    Fichier contenant la clé.

    Lorsque ce pod est exécuté, la sortie de la commande chat sera:

    very
    Copy to Clipboard Toggle word wrap
  • Il est également possible de contrôler les chemins dans le volume où sont projetées les touches cartographiques de configuration:

    apiVersion: v1
    kind: Pod
    metadata:
      name: dapi-test-pod
    spec:
      securityContext:
        runAsNonRoot: true
        seccompProfile:
          type: RuntimeDefault
      containers:
        - name: test-container
          image: gcr.io/google_containers/busybox
          command: [ "/bin/sh", "-c", "cat", "/etc/config/path/to/special-key" ]
          volumeMounts:
          - name: config-volume
            mountPath: /etc/config
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop: [ALL]
      volumes:
        - name: config-volume
          configMap:
            name: special-config
            items:
            - key: special.how
              path: path/to/special-key 
    1
    
      restartPolicy: Never
    Copy to Clipboard Toggle word wrap
    1
    Chemin vers la configuration de la clé map.

    Lorsque ce pod est exécuté, la sortie de la commande chat sera:

    very
    Copy to Clipboard Toggle word wrap
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat