ConfigMap¶
https://kubernetes.io/docs/concepts/configuration/configmap/
Key value pairs exposed into a pod used application configuration settings
Decouple application and pod configurations
Create ConfigMaps¶
kubectl create configmap mysql-cfg \
--from-literal=MYSQL_ROOT_PASSWORD=root \
--from-literal=MYSQL_USER=demo \
--from-literal=MYSQL_PASSWORD=demo
from a file
kubectl create configmap mysql-cfg --from-file=appconfig
from yaml file
apiVersion: v1
kind: ConfigMap
metadata:
name: appconfig
data:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: demo
MYSQL_PASSWORD: demo
Using ConfigMaps¶
Environment Variables¶
apiVersion: v1
kind: Pod
metadata:
name: mysql
spec:
containers:
- name: mysql
image: mysql:8.0
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
configMapKeyRef:
name: mysql-secret
key: MYSQL_ROOT_PASSWORD
- name: MYSQL_USER
valueFrom:
configMapKeyRef:
name: mysql-secret
key: MYSQL_USER
- name: MYSQL_PASSWORD
valueFrom:
configMapKeyRef:
name: mysql-secret
key: MYSQL_PASSWORD
or
apiVersion: v1
kind: Pod
metadata:
name: mysql
spec:
containers:
- name: mysql
image: mysql:8.0
envFrom:
- configMapRef:
name: appconfig
Volumes¶
apiVersion: v1
kind: Pod
metadata:
name: pod-env
spec:
volumes:
- name: appconfig
configMap:
name: appconfig
containers:
- name: busybox
image: busybox
command: ["sh", "-c", "while true; do echo $(date) >> /tmp/index.html; sleep 10; done"]
volumeMounts:
- name: appconfig
mountPath: "/etc/appconfig"