Secret et ConfigMap
Nous avons vu que nous écrivons les variables d’environnement directement dans la définition des pods (template de pod). Il est toujours préférable d’externaliser les fichiers de configuration, c’est à cela que servent ConfigMap et Secret. ConfigMap Kubernetes:ConfigMap Secret Kubernetes:secret
Figure 9 : ConfigMaps et Secret
Il est possible de stocker des couples variable/valeur dans des objets de type ConfigMap et Secret. Mais là où un ConfigMap stocke les informations directement au format texte et en clair, un secret demande une valeur encodée au format base64, par exemple :
mysql_root_password: cjAwdC1hZWtpZThhaHdhaV8=
Le stockage dans la base etcd est également différent, car les secrets sont chiffrés dans la base si l’option est activée dans kube-apiserver (--encryption-provider-config).
L’encodage en base64 n’est pas un chiffrement sécurisé. Il s’agit d’un changement de référentiel de codage de l’information. Les informations binaires historiquement sur 8 bits passent sur 7 bits, c’est un chiffrement qui a pour but d’éviter les soucis de caractères spéciaux pouvant être mal interprétés lors des transferts réseau.
Il est également possible de stocker des fichiers dans les deux types d’objets.
Dans un ConfigMap :
apiVersion: v1
kind: ConfigMap
metadata: ...