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
.
- un chemin d'accès à un répertoire contenant un ou plusieurs fichiers de configuration, désigné à l'aide de l'option
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 exemplepath/to/file.properties
.FILE_PATH_2
: chemin d'accès à un deuxième fichier, par exemplepath/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 exemplepath/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.