ConfigMap
ConfigMap stores key value pair configurations.
Creating ConfigMap
A ConfigMap can be created using imperative command and in a declarative way using resource yaml file.
Using imperative command
kubectl create configmap mysql-db --from-literal USER=user \
--from-literal PASSWORD=password
We can provide config data from file as well using --from-file
option.
Using declarative approach
mysql-db-cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-db-cm
namespace: default
data:
USER: user
PASSWORD: password
Using this resource file we can create ConfigMap by running command,
kubectl create -f mysql-db-cm.yaml
Using ConfigMap
Simple use case of ConfigMap is to provide environment variables to a pod.
Using above ConfigMap definition file,
mysql-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: mysql-db
labels:
type: db
spec:
containers:
- name: mysql
image: mysql
envFrom:
- configMapRef:
name: mysql-db-cm
To provide selected values from ConfigMap,
containers:
- name: mysql
image: mysql
env:
- name: USER
valueFrom:
configMapKeyRef:
name: mysql-db-cm
key: USER