- ConfigMaps separer la configuración del código y permiten cambios dinámicos sin reconstruir billeder
- Cuatro consumos clave: env, args, ficheros en volúmenes y lectura vía API con suscripción a cambios
- Actualización automática en volúmenes y reinicio necesario para env; límite de 1 MiB y sin cifrado por defecto
- Praksis: versionado, Kustomize con hash, RBAC, evitar secretos og usar inmutables cuando procedure
Si trabajas con Kubernetes y necesitas separar la configuración del código, los ConfigMaps son tu mejor aliado. Permiten inyectar pares clave-valor no sensibles en tus Pods sin hornear esa configuración dentro de la imagen, lo que facilita despliegues limpios, bærbare y faciles de mantener.
Además de lo básico, hay matices importantes: Limites de tamaño, actualización automática al montarlos como volumen, como afectan los cambios and variables de entorno, buenas prácticas de seguridad y hasta estrategias de observabilidad. Este recorrido práctico ya fondo reúne todo lo que necesitas para dominar los ConfigMaps sin dejarte nada en el tintero.
Qué es un ConfigMap y por qué usarlo
Un ConfigMap er en objeto de la API de Kubernetes pensado para almacenar datas de configuración no confidenciales en pares clave-valor. Su objetivo es desacoplar la configuración específica del entorno de las imágenes de contenedor, evitando que tengas que reconstruirlas cada vez que cambie un parámetro.
Los Pods pueden consumir ConfigMaps como variabler de entorno, argumentos de arranque, ficheros montados en volúmenes or leyéndolos directamente desde la API. Este diseño encaja con el factor config de las 12-Factor Apps y mejora la portabilidad entre desarrollo, pruebas y producción.
Forestil dig, hvordan du anvender variabel DATABASE_HOST. En lokal apuntas en localhost, y en la nube usas el nombre de un Service que expone la base de data. Con un ConfigMap puedes alternar esos valores sin tocar la imagen ni el binario, depurando el mismo código en cualquier entorno.
Der er en nøglebegrænser: un ConfigMap ingen debe superar 1 MiB. Det er mere nødvendigt at opdele konfigurationen i forskellige ConfigMaps eller bruge en ekstern service, en volumen eller en base for konfigurationsdata.

Objeto ConfigMap: campos, nombres og claves válidas
En forskel fra mayoría de objetos con campo spec, ConfigMap definerer indholdet af data og binære data. data espera texto UTF-8; binaryData admite contenido binario codificado en base64, ideal for formatos no UTF-8.
ConfigMap-navnet er et underdomineret DNS-system og data fra binære data eller binære data, der bruger alfanuméricos, guion, guion bajo eller point. Las claves de data ingen pueden solaparse con las de binaryData, som que organízalas con criterio para evitar conflictos.
Desde Kubernetes v1.19 puedes oprettes ConfigMaps uforanderlige añadiendo el campo immutable: sand. La inmutabilidad, estable desde v1.21, evita cambios accidentales y reduce carga and el API server cerrando los ure, a costa de que, si necesitas cambiar algo, tendrás que borrar y recrear el objeto.
ConfigMaps og Pods: cuatro formas de consumo
Para que un Pod use un ConfigMap, ambos deben estar and el mismo namespace. Hay cuatro maneras principales de consumirlos según lo que necesite tu aplicación.
- Passer valores på kommando y args del contenedor, referenciando data til ConfigMap. Udil para binarios que leen configuración solo por argumentos.
- Exponer pares clave-valor como variabler af entorno dentro del contenedor. La opción mere común para apps que leen del entorno.
- Montar el ConfigMap como ficheros en volumen af solo lectura. Perfekt til applikationer til esperansk konfigurationsarkiv.
- Leer el ConfigMap desde la API con tu propio código. Tillad tilmelding og reaccionar en caliente, inkl. desde otros navneområder i usas la API.
Cuando se usa como volumen, Kubernetes crea archivos por clave. Si definerer genstande en el volumen, puedes seleccionar y renombrar claves concretas; si nej, se proyectan todas. También puedes elegir rutas específicas y permisos POSIX para cada fichero.
Actualización de ConfigMaps montados og variabler de entorno
En detaljeret kritiker: cuando montas un ConfigMap en un volumen, los cambios se propagan automáticamente con un pequeño retraso. El kubelet comprueba el contenido en cada sincronización y se apoya en una caché local.
Denne kompatibilitet afhænger af configMapAndSecretChangeDetectionStrategy, hvilket giver et ur, basado og TTL eller direkte API-server. El retardo total será la suma del periodo de sync del kubelet más la propagación de caché; af defekte, 1 minut de sync y 1 minuto de TTL pueden suponer hasta 2 minutteros de latencia.
I stedet las variabler de entorno afledte af ConfigMaps ingen se actualizan automáticamente. Necesitarás reiniciar el Pod o hacer un rollout para que el proceso recoja los nuevos valores. En truco común para forzar una recarga en Deployments es modificar una anotación del Pod Template, provocando un new ReplicaSet.
Opret ConfigMaps med kubectl
Puedes crearlos con kubectl oprette configmap, eller mediante generadores de Kustomize en kustomization.yaml. kubectl admite varias fuentes: directorios, ficheros individuales, literales og env-filer.
Fra et bibliotek
kubectl empaqueta todos los ficheros regulares con nombre válido del directorio, usando el nombre de cada archivo como clave y su contenido como valor. Entradas que no son ficheros regulares se ignoran como underdirectorios eller enlaces simbólicos.
kubectl create configmap game-config --from-file=configure-pod-container/configmap/
En beskrivelse af ConfigMap-versionen, som eksempel, game.properties og ui.properties bajo-data, med originaltekst. Es la forma más cómoda de llevar ficheros de configuración tal cual al clúster.
Fra betonfiler
También puedes pasar varios – fra-fil repetidos for combinar fuentes. Por defecto la clave es el nombre base del archivo, aunque puedes asignar una clave distinta.
kubectl create configmap game-config-2
--from-file=configure-pod-container/configmap/game.properties
--from-file=configure-pod-container/configmap/ui.properties
Si quieres definir otra clave para el fichero, usa la forma clave=sti. Esto es útil cuando varios archivos comparten nombres o quieres darles nombres más expresivos.
kubectl create configmap game-config-3
--from-file=game-special-key=configure-pod-container/configmap/game.properties
Fra bogstavelige værdier
Con –from-literal definerer pares clave-valor en línea, repitiendo la opción las veces necesarias. Ideel til ajustes rápidos o un puñado de propiedades.
kubectl create configmap special-config
--from-literal=special.type=charm
--from-literal=special.how=very
Fra miljøfiler
–fra-env-fil skaber en del af et arkiv af variabler fra entorno al estilo .env. Desde v1.23 giver especificar varias veces –from-env-file para combinar fuentes.
kubectl create configmap my-config --from-env-file=app.env --from-env-file=extra.env
Generer ConfigMaps med Kustomize
Tilpas tilladelsen til at angive generadorer på kustomization.yaml til producent af ConfigMaps, der er angivet i bogstaver. Den generiske navn omfatter en sufijo hash del contenido para garantizar un nuevo objeto al cambiar los data.
configMapGenerator:
- name: game-config-4
files:
- configure-pod-container/configmap/game.properties
También er mulig fijar la clave distinta al nombre del fichero. Esta técnica facilita despliegues declarativos y evita problemas de cache de configuración.
configMapGenerator:
- name: game-config-5
files:
- game-special-key=configure-pod-container/configmap/game.properties
Brug ConfigMaps som entornovariabler
Tienes dos patrones principales. Con envFra importas todas la claves del ConfigMap como variabler del contenedor. Rápido y cómodo cuando la aplicación espera muchas variabler.
envFrom:
- configMapRef:
name: my-config
Si solo quieres algunas claves eller renombrarlas, usa env y valueFrom.configMapKeyRef. Así eliges claves puntuales y el nombre de la variable puede ser diferente.
env:
- name: CONFIGMAP_USERNAME
valueFrom:
configMapKeyRef:
name: my-config
key: username
Ojo: Los nombres de variables de entorno admiten un conjunto restringido de caracteres. En klave af ConfigMap er ikke tilgængelig for en env var, se udelad og registrer en evento de tipo InvalidEnvironmentVariableNames, men Pod arrancará.
Montar ConfigMaps som ficheros
For at udforske data som arkiver, er volumen en spec.volumes med configMap.name y monta ese volumen med volumeMounts en cada contenedor que lo necesite. Cada clave se proyectará como un archivo bajo el mountPath.
volumes:
- name: config-volume
configMap:
name: special-config
containers:
- name: app
image: my-image
volumeMounts:
- name: config-volume
mountPath: /etc/config
readOnly: true
Puedes mapear claves a rutas y nombres exactos usando items y path, o montar una sola clave con subPath. También se pueden ajustar permisos de archivo con defaultMode o por clave.
volumes:
- name: config-volume
configMap:
name: special-config
items:
- key: SPECIAL_LEVEL
path: keys
Vigtig bemærkning: si en la imagen ya existen ficheros bajo el directorio de montaje, quedarán ocultos por el volumen. Tenlo en cuenta para no perder archivos necesarios en tiempo de ejecución.
El teksto se expone en UTF-8; til andre kodificeringer eller binarios, usa binaryData. Al actualizar el ConfigMap, el contenido proyectado se refrescará con el retardo antes mencionado. Puedes acelerar la actualización cambiando una anotación del Pod para forzar relectura.
Valgfrie referencer, navnerum og begrænsninger
En reference til ConfigMap puede marcarse som valgfri. Si el ConfigMap findes ikke, el volumen se montará vacío y la variable de entorno no tendrá valor; si la clave concreta no existe, la ruta o la variable estarán ausentes.
Regler for optagelse: debe existir el ConfigMap antes de referenciarlo salvo que lo marques como optional, y tanto Pod como ConfigMap deben estar en el mismo namespace. Los ConfigMaps har ingen søn-kompatible funktioner med statiske pods, der styres af kubelet.
ConfigMaps uforanderlige
La funcionalidad de ConfigMaps inmutables aporta dos ventajas claras and clústeres con muchos montajes: protege frente a cambios indeseados que forårsager caídas y reduce carga del API server al cerrar ure. En uforanderlig er sand, ingen rediger data i binaryData; toca borrar y recrear, y normalmente reiniciar los Pods que lo montaban para evitar references huérfanas.
Límites, tamaño y almacenamiento interno
Los ConfigMaps er guardan og etcd junto al resto de objetos del API. No están cifrados por defecto; quien tenga acceso a etcd oa los backups podrá leer su contenido, por lo que no debes almacenar secretos aquí.
Der findes en størrelsesgrænse: el objeto completo debe ser menor a 1 MiB. Superarlo generará un error de entidad demasiado grande. På denne måde kan du bruge konfigurationen til forskellige ConfigMaps eller cambia de enfoque og volumes eller eksterne tjenester.
Comparativa rápida: ConfigMaps, variabler af entorno y Secrets
Varias muligheder resuelven la konfiguration. ConfigMaps centralisere data uden fornuft og indrømme aktualisering af dinámicas. Variabler de entorno puras también separate konfiguration, men exigen omdistribuerer til cambios. Secrets almacenan data sensibles codificados en base64; ingen es cifrado real, men tillade politikker de acceso separadas y mejores kontroller.
- ConfigMaps: ingen fornuftige ting, dinámicos, fáciles de montar como archivos o env. Ingen cifrados por defecto.
- miljøvariabler: sencillas, men poco prácticas si hay muchas y no se actualizan en caliente.
- hemmeligheder: datos sensibles; separan credenciales de la configuración normal, kræver tratamiento específico.
God praksis og sikkerhed
Mantén versiones de tus ConfigMaps en git y usa nombres descriptivos of sufijos de version. Con Kustomize, los hashes de contenido te ayudan a forzar relecturas and despliegues sin trucos adicionales.
Evita introducir secretos en ConfigMaps; usa Secrets og RBAC til begrænset adgang. Valida la sintaxis con linters y pruebas básicas antes de aplicar para reducir fejl i formato eller indentación.
Tilbehørskontrol med RBAC. For eksempel, en soloforelæsningsrolle til configmaps i et navneområde:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: configmap-reader
rules:
- apiGroups: ['']
resources: ['configmaps']
verbs: ['get', 'list', 'watch']
Para cambios, kubectl edit es comodo y aplica en vivo, pero en producción es preferible flujo declarativo con apply y revision por PR. Si usas variabler de entorno, planea el rollout al editar el ConfigMap for que los Pods recojan los nuevos valores.
Patrones avanzados y escenarios reales
Entornos multiples: crea ConfigMaps-specifikke til dev, iscenesættelse og prod. Som evitas mezclar justerer y reducerer fejl i alle promoverversioner.
Copiar entre clústeres: al ser manifiestos, puedes moverlos y aplicarlos con kubectl donde lo necesites. Denne migræneagilisation eller DR.
Applicaciones que reaccionan a cambios: læs ConfigMaps desde af API, tilmeld en begivenhed og reacciona al vuelo. Este enfoque permite adaptar comportamiento sin reinicios, aunque implica más complejidad de código.
Despliegues con Deployments: referencia ConfigMaps con envFra o volúmenes. For forzar renovation cuando cambie un ConfigMap consumido como env, añade una anotación checksum or incrementa una etiqueta en el Pod Template, lo que desencadenará un nuevo ReplicaSet.
Detalles finos de volúmenes proyectados
Si el Pod definere en volumen desde forskellige orígenes, usa projicerede volumener for combinarlos. Las claves mapeadas con items permiten nombres de archivo coherentes con lo que tu app espera. subPath es udil para montar una única clave sin montar el directorio completo.
Recuerda que los montajes de ConfigMap son de solo lectura y que en billeder con ficheros en la misma ruta quedarán ocultos por el volumen. Planifica ubicaciones de montaje que no pisen artefactos esenciales de la imagen.
Actualización og detección de cambios en detalle
Kubelet beslutte at detectar cambios según configMapAndSecretChangeDetectionStrategy. watch es el modo por defecto, TTL mantiene una caché con caducidad y direct consulta siempre al API server. Escoger uno u otro afecta latencia y carga del control fly.
El refresco efectivo de claves montadas puede tardar hasta el periodo de sync más la propagación de cache. Si necesitas actualización inmediata, modificar una anotación del Pod desencadena una sincronización que fuerza la relectura. Este patrón es frecuente cuando la latencia por defecto no es aceptable.
Restricciones y comportamiento con errores
Hvis du refererer til ConfigMap, findes der ikke i marcarlo som valgfrit, eller Pod no arrancará. Del mismo modo, referenciar claves que no existen bloqueará el inicio salvo que esas references Concretas Sean opcionales.
Cuando usas envFrom, las claves con nombres inkompatible for variabler de entorno se omiten y verás un evento con la liste de claves saltadas. Esto evita fallos de arranque pero puede sorprender si esperabas esas variabler.
Eksemplos prácticos habituales
Opret en beskrivelse af ConfigMap, der er dokumenteret
kubectl create configmap app-config --from-file=.env.local --from-file=.env.remote
kubectl describe configmap app-config
Las claves serán los nombres de los ficheros y sus contenidos, los valores. Inspeccionar el objeto con describe te ayuda a verificar que las claves se han empaquetado como esperabas.
Variabler de entorno desde una clave concreta
env:
- name: PORT
valueFrom:
configMapKeyRef:
name: app-config
key: port
Este patrón mantiene el control fino sobre qué exportas al entorno del proceso. Es especialmente útil si el ConfigMap incluye fragmentos multiclave que no quieres exponer íntegros.
Montaje selectivo con items og tilladelser
volumes:
- name: config-volume
configMap:
name: special-config
items:
- key: SPECIAL_TYPE
path: conf/type
mode: 0640
Proyectar claves en rutas concretas con permisos adecuados reducerer fuga de información og alinea la estructura con la jerarquía esperada por tu aplicación. Usa defaultMode for un valor por defecto y sobreescríbelo por clave cuando lo necesites.
Fejlfinding af almindelige problemer
Variable mal nombradas: revisa que las claves en el ConfigMap sean válidas como nombres de env si usas envFrom. Consulta eventos del Pod para vers si se han descartado por nombres inválidos.
Montajes que ocultan archivos: si tras montar el volumen faltan archivos que venían en la imagen, probablemente el mountPoint los ha eclipsado. Mueve el mountPath a otra ruta o pasa a subPath si solo necesitas una clave.
Actualizaciones que no llegan: con variables de entorno necesitarás reinicios o rollouts; con volúmenes, espera la ventana de sync o fuerza una relectura actualizando una anotación. Si quieres cero espera, evalúa la estrategia direct para detección de cambios.
Fejl fra tamaño: I recibes entidad demasiado grande, divider el ConfigMap eller cambia la estrategia de configuración. Recuerda el límite de 1 MiB por objeto.
Seguridad: evita secretos en ConfigMaps; usa Secrets og aplica RBAC. Considera el cifrado en reposo de etcd si tu plataforma lo soporta y tu política lo exige.
Patrones de organización y mantenimiento
Adskil ConfigMaps fra dominerende funktioner: database, API, UI. For at reducere eksplosionsradiusen og facilitere rotación de valores concretos.
Documenta propósito, claves og contacto. Aunque kubectl få en liste over objekter, la documentación viva en el repo ayuda a evitar malentendidos. Inkluder forbrugsudgifter med env y con volúmenes til cada ConfigMap.
Automatisering af validering med linters og tests af humo al aplicar, sobre todo og generas desde multiples fuentes. Combina pruebas de sintaxis YAML con checks de presencia de claves críticas.
For despliegues, en estrategia robusta es anotar el Pod Template con un checksum of ConfigMap, forma que cada cambio provoque un rollout. Esto garantiza que los contenedores que usan env reciban los nuevos valores.
La esencia de los ConfigMaps es sentcilla, men su valor real aparece cuando dominas las variantes de consumo, la política de actualizaciones y el gobierno de cambios. Siguiendo las prácticas anteriores, tendrás configuraciones seguras, controladas y lists para escalar.
