---
# System prepended metadata

title: 'Kubernetes, ConfigMap.'
tags: [' M15', ' kubernetes', daw, ' dam', ' M8']

---

---
title: Kubernetes, ConfigMap.
tags: daw, kubernetes, M8, dam, M15
---

<div style="width: 30%; margin-left: auto;">
    
![](https://hackmd.io/_uploads/HJiR4eGJT.png)    
    
</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;">
    
![kubernetes](https://i.imgur.com/BiRTyF9.png "kubernetes" =200x120)    

</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
```

 