🔐
Kubernetes

ConfigMap & Secrets Deployment

Inject environment variables from ConfigMap and Secret into a Deployment

📋Configuration Files

ConfigMap.yml

yaml
1apiVersion: v1
2kind: ConfigMap
3metadata:
4 name: node-demo-config
5data:
6 NORMAL_ENV_VALUE: "hello-from-configmap"

Secrets.yml

yaml
1apiVersion: v1
2kind: Secret
3metadata:
4 name: mysecret
5type: Opaque
6stringData:
7 SECRET_ENV_VALUE: "super-secret-value"

Deployment.yml

Deployment referencing ConfigMap and Secret via env valueFrom

yaml
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4 name: api-deploy-demo-secrets-config
5 labels:
6 app: api-deploy-demo-secrets-config
7spec:
8 replicas: 1
9 selector:
10 matchLabels:
11 app: api-deploy-demo-secrets-config
12 template:
13 metadata:
14 labels:
15 app: api-deploy-demo-secrets-config
16 spec:
17 containers:
18 - name: api-demo-cms
19 image: api-demo-cms:local
20 imagePullPolicy: IfNotPresent
21 ports:
22 - containerPort: 3000
23 env:
24 - name: SECRET_ENV_VALUE
25 valueFrom:
26 secretKeyRef:
27 name: mysecret
28 key: SECRET_ENV_VALUE
29 - name: NORMAL_ENV_VALUE
30 valueFrom:
31 configMapKeyRef:
32 name: node-demo-config
33 key: NORMAL_ENV_VALUE
34 resources:
35 limits:
36 memory: "512Mi"
37 cpu: "500m"
38 requests:
39 memory: "256Mi"
40 cpu: "250m"

Services.yml

yaml
1apiVersion: v1
2kind: Service
3metadata:
4 name: api-demo-service
5spec:
6 type: NodePort
7 selector:
8 app: api-deploy-demo-secrets-config
9 ports:
10 - port: 3000
11 targetPort: 3000
12 nodePort: 32001
📄

Step 01

Apply ConfigMap & Secrets

(01)Create ConfigMap and Secret first

Linux
1kubectl apply -f ConfigMap.yml
2kubectl apply -f Secrets.yml
3kubectl apply -f Deployment.yml
4kubectl apply -f Services.yml
5kubectl get configmap,secret,pods

(02)Verify env vars inside pod

Linux
1kubectl exec -it deploy/api-deploy-demo-secrets-config -- env | grep ENV_VALUE