---
title: Kubernetes, ConfigMap.
tags: daw, kubernetes, M8, dam, M15
---
<div style="width: 30%; margin-left: auto;">

</div>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Llicència de Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />Aquesta obra està subjecta a una llicència de <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Reconeixement-CompartirIgual 4.0 Internacional de Creative Commons</a>
<div style="width: 200px;margin: 0 auto;">

</div>
# Kubernetes, ConfigMap.
## Què és?
Podem veure els configMaps com a bases de dades clau-valor, que poden ser utilitzades dins de K8s com a:
* Fitxers de configuració.
* Variables d'entorn.
* Arguments de la linia de comandes.
## Creació dels ConfigMaps.
Els configMaps els podem generar de forma automàtica a partir de diverses fonts amb l'ordre de la linia de comandes:
> kubectl create configmap <map-name> <data-source>
On _map-name_ és el nom que donarem al configMap i _data-source_ és l'origen de les dades que desarem al mateix.
El nom, ha de ser un nom vàlid per a un sub-domini DNS.
Les possibles fonts de dades son:
* Fitxers individuals.
* Fitxers multiples.
* Directoris sencers.
* Fixers de variables d'entorn.
Si generem un configMap a partir d'un fitxer, la clau per defecte serà el nom base del fitxer i el valor tot el contingut del fitxer. Aquesta opció és especialment útil per a fitxers de configuració.
Si generem un configMap a partir d'un directori, només tindrà en compte els fitxers regulars i exclou symlinks, subdirectoris, named pipes, dispositius...
## Visualització dels ConfigMap.
Per a visualitzar un configMap farem servir la comanda:
> kubectl describe configmaps <name>
O aquesta altra, si volem veure'l en format yaml:
> kubectl get configmaps <name> -o yaml
## Recuperar la informació dels ConfigMap amb kubernetes.
### Ús dels configMap com a fitxer dins dels Pods.
Podem accedir a la informació del configMap des de qualsevol Pod com si fós un fitxer, afegint el configMap a la nostra definició del Deployment.
Hem d'afegir una secció
> spec -> volumes[] -> configMap -> name
I una altra:
> spec -> containers[] -> volumeMounts[] -> mountPath
Cada clau al configMap serà un fitxer del contenidor en qüestió. Un únic configMap pot ser accessible desde diversos Pods.
Per ampliar informació podeu consultar [la documentació](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#create-a-configmap)
### Ús dels configMap com a variables d'entorn.
Dins del fitxer yaml de configuració del Deployment, es poden crear variables d'entorn que estaran disponibles als diferents Pods. Les variables es defineixen per a cada contenidor dins de la clau containers[] -> env
Per exemple:
```yaml=
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: registry.k8s.io/busybox
command: [ "/bin/sh", "-c", "env" ]
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: special.how
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: env-config
key: log_level
restartPolicy: Never
```