Difference between revisions of "Kubernetes/ConfigMap and Secrets"
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
| Line 3: | Line 3: | ||
kubectl create configmap my-config-map --namespace=web -oyaml --dry-run > config-map.yml  | kubectl create configmap my-config-map --namespace=web -oyaml --dry-run > config-map.yml  | ||
</source>  | </source>  | ||
<  | <syntaxhighlightjs lang=yaml>  | ||
apiVersion: v1  | apiVersion: v1  | ||
kind: ConfigMap  | kind: ConfigMap  | ||
| Line 13: | Line 13: | ||
   myKey: myValue1  |    myKey: myValue1  | ||
   anotherKey: myValue2  |    anotherKey: myValue2  | ||
</  | </syntaxhighlightjs>  | ||
| Line 23: | Line 23: | ||
! Secrets mounted volume  | ! Secrets mounted volume  | ||
|-  | |-  | ||
| <  | | <syntaxhighlightjs lang=yaml>  | ||
apiVersion: v1  | apiVersion: v1  | ||
kind: Pod  | kind: Pod  | ||
| Line 39: | Line 39: | ||
           name: kubeapp-config  |            name: kubeapp-config  | ||
           key: value1  |            key: value1  | ||
</  | </syntaxhighlightjs>  | ||
| <  | | <syntaxhighlightjs lang=yaml>apiVersion: v1  | ||
kind: Pod  | kind: Pod  | ||
metadata:  | metadata:  | ||
| Line 56: | Line 56: | ||
       configMap:               # key will be a file name  |        configMap:               # key will be a file name  | ||
         name: kubeapp-config   # with value in content  |          name: kubeapp-config   # with value in content  | ||
</  | </syntaxhighlightjs>  | ||
| <  | | <syntaxhighlightjs lang=yaml>  | ||
apiVersion: v1  | apiVersion: v1  | ||
kind: Pod  | kind: Pod  | ||
| Line 74: | Line 74: | ||
       secret:  |        secret:  | ||
         secretName: kube-secret  |          secretName: kube-secret  | ||
</  | </syntaxhighlightjs>  | ||
|}  | |}  | ||
| Line 92: | Line 92: | ||
The YAML for a secret:  | The YAML for a secret:  | ||
<  | <syntaxhighlightjs lang=yaml>  | ||
apiVersion: v1  | apiVersion: v1  | ||
kind: Secret  | kind: Secret  | ||
| Line 100: | Line 100: | ||
   cert: 1234abc  |    cert: 1234abc  | ||
   key: ca.crt  |    key: ca.crt  | ||
</  | </syntaxhighlightjs>  | ||
Revision as of 23:33, 19 October 2019
ConfigMap object allows to manage application's configuration using Kubernetes primitives. YAML below:
kubectl create configmap my-config-map --namespace=web -oyaml --dry-run > config-map.yml
<syntaxhighlightjs lang=yaml> apiVersion: v1 kind: ConfigMap metadata:
creationTimestamp: null name: my-config-map namespace: web
data: # added when editing
myKey: myValue1 anotherKey: myValue2
</syntaxhighlightjs>
| As a environment | Mounted volume | Secrets mounted volume | 
|---|---|---|
| <syntaxhighlightjs lang=yaml>
 apiVersion: v1 kind: Pod metadata: name: configmap-kube spec:  containers:
 - name: nginx
   image: nginx
   command: ['sh', '-c', "echo $(VAR) && sleep 600"]
   env:
   - name: VAR
     valueFrom:
       configMapKeyRef:
         name: kubeapp-config
         key: value1
</syntaxhighlightjs>  | 
<syntaxhighlightjs lang=yaml>apiVersion: v1
 kind: Pod metadata: name: configmap-volume-kube spec:  containers:
 - name: nginx
   image: nginx
   command: ['sh', '-c', "echo $(MY_VAR) && sleep 3600"]
   volumeMounts:
     - name: configmapvolume
       mountPath: /etc/config # this will be a directory
 volumes:
   - name: configmapvolume
     configMap:               # key will be a file name
       name: kubeapp-config   # with value in content
</syntaxhighlightjs>  | 
<syntaxhighlightjs lang=yaml>
 apiVersion: v1 kind: Pod metadata: name: kube-secret-volume-pod spec:  containers:
 - name: nginx
   image: nginx
   command: ['sh', '-c', "echo $(MY_VAR) && sleep 3600"]
   volumeMounts:
     - name: secretvolume
       mountPath: /etc/certs
 volumes:
   - name: secretvolume
     secret:
       secretName: kube-secret
</syntaxhighlightjs>  | 
Deploy
kubectl apply -f configmap-pod.yaml kubectl logs configmap-pod #Get the logs from the pod displaying the value
Another way to provide values from a ConfigMap is to mount as a container's volume. The keys you can see within the container
kubectl exec configmaps-volume-kube -- ls /etc/config kubectl exec configmaps-volume-kube -- cat /etc/config/key1
The YAML for a secret:
<syntaxhighlightjs lang=yaml>
apiVersion: v1
kind: Secret
metadata:
name: kube-secret
stringData:
cert: 1234abc key: ca.crt
</syntaxhighlightjs>
Create secrets
kubectl apply -f secrets.yaml kubectl describe secrets appsecret Name: kube-secret Namespace: default Labels: <none> Annotations: Type: Opaque Data ==== cert: 5 bytes key: 5 bytes