ConfigMap


Cette page décrit l'objet ConfigMap de Kubernetes et son utilisation dans Google Kubernetes Engine (GKE).

Présentation

Les ConfigMaps lient les artefacts de configuration non sensibles tels que les fichiers de configuration, les arguments de ligne de commande et les variables d'environnement à vos conteneurs de pod et composants système lors de l'exécution.

Un ConfigMap sépare vos configurations du pod et des composants, ce qui permet de maintenir la portabilité des charges de travail. Cela facilite la modification et la gestion de leurs configurations, et évite le codage en dur des données de configuration dans les spécifications des pods.

Créer un ConfigMap

Vous pouvez créer un ConfigMap à l'aide de la commande suivante :

kubectl create configmap NAME DATA

Remplacez les éléments suivants :

  • NAME : nom de votre objet ConfigMap.
  • DATA : données de configuration du ConfigMap, qui peuvent être les suivantes :

    • un chemin d'accès à un répertoire contenant un ou plusieurs fichiers de configuration, désigné à l'aide de l'option --from-file ;
    • des paires clé/valeur, chacune spécifiée à l'aide d'options --from-literal.

Pour en savoir plus sur kubectl create, reportez-vous à la documentation de référence.

Vous pouvez également créer un ConfigMap en définissant un objet ConfigMap dans un fichier manifeste YAML et en le déployant à l'aide de la commande kubectl create -f FILE_NAME.

Créer un ConfigMap à partir de fichiers

Pour créer un ConfigMap à partir d'un ou de plusieurs fichiers, utilisez --from-file. Vous pouvez spécifier des fichiers au format texte brut, tels que .properties, .txt ou .env, à condition que les fichiers contiennent des paires clé/valeur.

Il est recommandé de stocker vos fichiers ConfigMap dans Git. Cela vous permet de bénéficier d'un pipeline d'intégration et de livraison continues (CI/CD).

Pour transmettre un ou plusieurs fichiers, exécutez la commande suivante :

kubectl create configmap NAME \
    --from-file FILE_PATH_1 \
    --from-file FILE_PATH_2

Remplacez les éléments suivants :

  • NAME : nom de votre objet ConfigMap.
  • FILE_PATH_1 : chemin d'accès à votre fichier, par exemple path/to/file.properties.
  • FILE_PATH_2 : chemin d'accès à un deuxième fichier, par exemple path/to/file2.properties.

Pour transmettre un répertoire contenant plusieurs fichiers, exécutez la commande suivante :

kubectl create configmap NAME \
    --from-file DIRECTORY

Remplacez les éléments suivants :

  • NAME : nom de votre objet ConfigMap.
  • DIRECTORY : chemin d'accès au répertoire, par exemple path/to/directory.

Lorsque vous créez un ConfigMap à partir de fichiers, la clé est définie par défaut sur le nom de base du chemin d'accès au fichier, et la valeur sur le contenu du fichier. Vous pouvez également spécifier une clé secondaire.

Lorsque vous créez un ConfigMap à partir de répertoires, chaque fichier portant un nom de base qui est une clé valide du répertoire est empaqueté dans le ConfigMap. kubectl ignore les fichiers non standards, tels que les liens symboliques, les appareils et les canaux. kubectl ignore également les sous-répertoires, car kubectl create configmap ne les inclut pas.

Par exemple, la commande suivante crée un ConfigMap nommé game-data à partir d'un répertoire (game-configs) qui contient deux fichiers properties (game.properties et ui.properties) :

kubectl create configmap game-data \
    --from-file game-configs/

L'exécution de kubectl get configmap game-data -o yaml renvoie le résultat suivant :

apiVersion: v1
data:
  game.properties: |
    enemies=aliens
    lives=3
    ...
  ui.properties: |
    color.good=purple
    color.bad=yellow
    allow.textmode=true
    ...
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: game-data
  namespace: default
  resourceVersion: ...
  selfLink: /api/v1/namespaces/default/configmaps/game-data
  uid: ...

Créer un ConfigMap à partir de valeurs littérales

Pour créer un ConfigMap à partir de valeurs littérales, utilisez --from-literal.

Par exemple, la commande suivante crée un ConfigMap nommé LITERAL_DATA qui contient deux paires clé/valeur :

kubectl create configmap LITERAL_DATA \
    --from-literal key1=VALUE_1 \
    --from-literal key2=VALUE_2

Spécifiez --from-literal pour chaque paire clé/valeur.

L'exécution de kubectl get configmap literal-data -o yaml renvoie le résultat suivant :

apiVersion: v1
data:
  key1: VALUE_1
  key2: VALUE_2
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: LITERAL_DATA
  namespace: default
  resourceVersion: ....
  selfLink: /api/v1/namespaces/default/configmaps/literal-data
  uid: ...

Utiliser un ConfigMap

Pour utiliser un ConfigMap avec vos charges de travail, vous pouvez spécifier une variable d'environnement qui référence les valeurs de ConfigMap, ou installer un volume contenant le ConfigMap. Pour en savoir plus, consultez la section Configurer un pod pour utiliser un ConfigMap.

Étape suivante