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