Config Maps
Config maps are a feature of Kubernetes we can use to store configuration parameters that pods running on the cluster can access at runtime. A config map can be filled with data coming from different sources:
- A Yaml dictionary in a
.yaml
file - A file on disk containing one key per line with the format:
my.settings.key=myval
- A directory containing configuration files in the same format as previous bullet
- From the command line as args for
kubectl
Once a ConfigMap resource containing our data is created, a pod can use it in two different ways:
- By mounting a volume (a file will be created in the pod’s volume for each config key)
- By injecting environment variables in the pod, each value will be stored in an env var named after the key
Exercise n.1: config a Pod
Change directory into the folder
definitions
before running the commands.
First of all, we need to create the ConfigMap resource:
kubectl apply -f myconfig.yaml
You can inspect the contents of the config map by running:
kubectl describe configmap my-config
We can now use it from a pod by mounting a volume (see the definition file):
kubectl apply -f nginx-configmap-pod.yaml
At this point, we can verify the pod can actually access the configuration values:
$ kubectl exec -it nginx-configmap -- bash
$$ ls /etc/config
password username
$$ cat /etc/config/username ; echo
root
$$ cat /etc/config/password ; echo
mypass