- ConfigMaps separan la configuración del código y permiten cambios dinámicos sin reconstruir images
- 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
- Buenas prácticas: versionado, Kustomize con hash, RBAC, evitar secretos ja usar inmutables cuando proceda

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, portables y fáciles de mantener.
Además de lo básico, hay matices importantes: límites de tamaño, aktualización automática al montarlos como volumen, cómo afectan los cambios a 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 on Kubernetes'i API-objekti konfiguratsioon, mis ei võimalda konfidentsiaalset konfiguratsiooni. Su objetivo es desacoplar la configuración specí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 muutujaid de entorno, argumentos de arranque, ficheros montados en volúmenes või 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.
Kujutage ette muutuja DATABASE_HOST rakendust. En local apuntas a localhost, y en la nube usas el nombre de un Service que expone la base de datos. Con un ConfigMap puedes alternar esos valores sin tocar la imagen ni el binario, depurando el mismo código en cualquier entorno.
Mul on võti piiranguks: un ConfigMap no debe superar 1 MiB. Kui vajate rohkem, jagage konfiguratsiooni ja eri ConfigMapsi või kasutage välist teenust, kasutage konfiguratsiooniandmete baasi.

Objeto ConfigMap: campos, nombres y claves válidas
A diferencia de la Mayoría de objetos con campo spec, ConfigMap defineerib su contenido en los campos data y binaryData. data espera texto UTF-8; binaryData lubab contenido binario codificado et base64, ideaalne para formaadid ilma UTF-8.
El nombre del ConfigMap ha de ser un alamdominio DNS válido y las claves bajo data o binaryData deben contener caracteres alfanuméricos, guion, guion bajo või punto. Las claves de data no pueden solaparse con las de binaryData, así que organízalas con criterio para evitar convertos.
Desde Kubernetes v1.19 puedes crear ConfigMaps inmutables añadiendo el campo muutumatu: tõsi. La inmutabilidad, stabiilne desde v1.21, evita cambios randomales y carga en el el API server cerrando los watches, a costa de que, si necesitas cambiar algo, tendrás que borrar y recrear el objeto.
ConfigMaps ja Pods: cuatro form de consumo
Para que un Pod use un ConfigMap, ambos deben estar en el mismo nimeruumi. Hay cuatro maneras principales de consumirlos según lo que necesite tu aplicación.
- Pasar valores en command y args del contenedor, referentsdatos del ConfigMap. Útil para binarios que leen configuración solo por argumentos.
- Exponer pares clave-valor como muutujad de entorno dentro del contenedor. La suvand rohkem común para apps que leen del entorno.
- Montar el ConfigMap como ficheros en un volumen de soolo lectura. Perfecto para aplicaciones que esperan archivos de configuración.
- Lugege konfiguratsioonikaarti, mis sisaldab API-d, mis on mõeldud koodi jaoks. Luba tellida kambios y reaccionar en caliente, sealhulgas desde otros nimeruumid ja usas la API.
Cuando se usa como volumen, Kubernetes crea archivos por clave. Si määratleb üksused en el volumen, puedes seleccionar y renombrar claves concretas; ei, se proyectan todas. También puedes elegir rutas específicas y permisos POSIX para cada fichero.
Actualización de ConfigMaps montados ja muutujad de entorno
Üksikasjalik kriitika: cuando montas un ConfigMap en un volumen, los cambios se propagan automaticamente con un pequeño retro. El kubelet comprueba el contenido en cada sincronización y se apoya en una caché local.
See side sõltub konfiguratsioonist MapAndSecretChangeDetectionStrategy, mis hõlmab kella, TTL-i või otse API-serverit. El retardo total será la suma del periodo de sync del kubelet más la propagación de caché; defektiga, 1 minut sünkroonimine 1 minut TTL-i suponer hasta 2 minutes de latencia.
Selle asemel las variables de entorno derivadas de ConfigMaps no se aktualizan automaticamente. Necesitarás reiniciar el Pod o hacer un rollout para que el proceso recoja los nuevos valores. Un truco común para forzar una recarga et Deployments es modificar una anotación del Pod Template, provocando un nuevo ReplicaSet.
Looge kubectl-iga ConfigMaps
Puedes crearlos con kubectl loob konfiguratsioonikaardi, o mediante generadores de Kustomize en kustomization.yaml. kubectl lubada varias fuentes: directorios, ficheros individuales, literales y env-failid.
Direktorilt
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 alamkataloogid või simbólicos.
kubectl create configmap game-config --from-file=configure-pod-container/configmap/
Al describir el ConfigMap versioon, näiteks game.properties y ui.properties bajo andmed, koos originaaltekstiga. Es la forma más cómoda de llevar ficheros de configuración tal cual al clúster.
Betoonplaatidest
También puedes pasar varios – failist repetidos para 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=path. 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
Sõnasõnalistest väärtustest
Con –from-literal määratleb pares clave-valor en línea, repitiendo la option las veces necesarias. Ideaalne para ajustes rápidos o un puñado de propiedades.
kubectl create configmap special-config
--from-literal=special.type=charm
--from-literal=special.how=very
Desde env-failid
–from-env-file crea claves a partir de un archivo de variables de entorno al estilo .env. Desde v1.23 puedes especificar varias veces –from-env-file para combinar fuentes.
kubectl create configmap my-config --from-env-file=app.env --from-env-file=extra.env
Üldine ConfigMaps koos Kustomize'iga
Kustomize lubae deklareerida generadores en kustomization.yaml para producir ConfigMaps desde ficheros o literales. El nombre generado incluye un sufijo hash del contenido para garantizar un nuevo objeto al cambiar los datos.
configMapGenerator:
- name: game-config-4
files:
- configure-pod-container/configmap/game.properties
También es posible fijar la clave distinta al nombre del fichero. Esta técnica facilita despliegues declarativos y evita problems de caché de configuración.
configMapGenerator:
- name: game-config-5
files:
- game-special-key=configure-pod-container/configmap/game.properties
Usar ConfigMaps koos muutujatega de entorno
Tienes dos patrones põhimõtted. Con envFrom importas todas las claves del ConfigMap koos muutujatega del contenedor. Rápido y cómodo cuando la aplicación espera muchas muutujad.
envFrom:
- configMapRef:
name: my-config
Si soolo quieres algunas claves või 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 accepten un conjunto restringido de caracteres. Si una clave del ConfigMap no es válida para una env var, se omite y se registrará un evento de tipo InvalidEnvironmentVariableNames, Pod arrancará nime all.
Montar ConfigMaps como ficheros
Para exponer datos como archivos, añade el volumen en spec.volumes configMap.name y monta ese volumen con 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 specificos usando items y path, o montar una sola clave con alamtee. 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
Tähtis märkus: si en la imagen ya eksisteerinud 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 texto se expone et UTF-8; para otras codificaciones või binarios, usa binaryData. Al actizar el ConfigMap, el contenido proyectado se refrescará con el retardo antes mencionado. Puedes acelerar la aktualización cambiando una anotación del Pod para forzar relectura.
Referencias opcionales, namespaces y restricciones
Viidake ConfigMap puede marcarse'ile, mis on valikuline. Si el ConfigMap ei eksisteeri, 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.
Registripidaja eeskirjad: debe existir el ConfigMap antes de referents salvo que lo marques como opcional, y tanto Pod como ConfigMap deben estar en el mismo nimeruumi. Los ConfigMaps no son compatibles koos staatiliste kaustadega, mis on suunatud kubeletile.
ConfigMapsi muutmatud elemendid
La funcionalidad de ConfigMaps inmutables aporta dos ventajas claras en cústeres con muchos montajes: protege frente a cambios indeseados que põhjust caídas y vähendada carga del API server al cerrar kellad. Una vez muutumatu es true, no podrás editar data ni binaryData; toca borrar y recrear, y normalmente reiniciar los Pods que lo montaban para evitar referencias huérfanas.
Límites, tamaño y almacenamiento interno
Los ConfigMaps se Guaran en 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í.
Olemas on ajavahemiku piirang: el objeto completo debe ser menor a 1 MiB. Superarlo generará un error de entidad demasiado grande. Si te acercas a ese techo, reparte la configuración en varios ConfigMaps o cambia de enfoque a volúmenes o servicios externos.
Võrdlus: ConfigMaps, sisestusmuutujad ja saladused
Varias opciones resuelven la configuración. ConfigMaps centralizan datos no sensibles y tunnistan aktualizaciones dinámicas. Muutujad de entorno puras también separan configuración, pero exigen redeploy para cambios. Saladused almacenan datos sensibles codificados en base64; no es cifrado real, pero permiten políticas de acceso separadas y mejores controles.
- ConfigMaps: no sensibles, dinámicos, fáciles de montar como archivos o env. No cifrados por defecto.
- Keskkonnamuutujad: sencillas, pero poco prácticas si hay muchas y no se aktualizan en caliente.
- saladused: datos sensibles; separan credenciales de la configuración normal, requieren tratamiento specífico.
Head tavad ja ohutus
Mantén versiones de tus ConfigMaps en git y usa nombres descriptivos o sufijos de version. Con Kustomize, los hashes de contenido te ayudan a forzar relecturas en despliegues sin trucos adicionales.
Evita introducir secretos en ConfigMaps; usa Secrets y RBAC para limitar accesos. Valida la sintaxis con linters y pruebas básicas antes de aplicar para reducir errores de formato o indentación.
Juhtige juurdepääsu RBAC-ile. Näiteks sooloengute rull para configmaps et un namespace:
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 cómodo y aplica en vivo, pero en producción es preferible flujo declarativo con apply y revisión por PR. Si usas variables de entorno, planea el rollout al editar el ConfigMap para que los Pods recojan los nuevos valores.
Patrones avanzados y escenarios reales
Entornos arhiivid: loo ConfigMaps spetsialiseerunud arendus, lavastus ja prod. Así evitas mezclar ajustes y vähendab vigu promorite versioonides.
Copiar entre clústeres: al ser manifiestos, puedes moverlos y aplicarlos con kubectl donde lo necesites. See on DR-i migratsiooni agiliza.
Aplicaciones que reaccionan a cambios: si sea configMaps desde la API, scríbete a eventos y reacciona al vuelo. Este enfoque lubae adaptar comportamiento sin reinicios, aunque implica más complejidad de código.
Despliegues con Deployments: referents ConfigMaps con envFrom või volúmenes. Para forzar renovación cuando cambie un ConfigMap consumido como env, añade una anotación checksum o incrementa una etiqueta en el Pod Template, lo que desencadenará un nuevo ReplicaSet.
Detalles finos de volúmenes proyectados
Si el Pod define un volumen desde varios orígenes, usa projected volumes para combinarlos. Las claves mapeadas con items permiten nombres de archivo coherentes con lo que tu app espera. SubPath es teeil para montar una única clave sin montar el directorio completo.
Recuerda que los montajes de ConfigMap son de soolo lectura y que en imágenes 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 y detección de cambios en detaille
Kubelet otsustada cómo detectar cambios según configMapAndSecretChangeDetectionStrategy. Watch es el modo por defecto, TTL mantiene una caché con caducidad y direct konsulta Siempre al API server. Escoger uno u otro afecta latencia y carga del control plane.
El refresco efectivo de claves montadas puede tardar hasta el periodo de sync más la propagación de caché. Si necesitas aktualizació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.
Piirangud ja vead
Siia referentsid un ConfigMap inexistente sin marcarlo como opcional, el Pod no arrancará. Del mismo modo, referents claves que no bloqueará el inicio salvo que esas referents concretas sean opcionales.
Cuando usas envFrom, las claves con nombres incompatibles para variables de entorno se omiten y verás un evento con la list de claves salatadas. Esto evita fallos de arranque pero puede sorprender si esperabas esas variables.
Ejemplos prácticos habituales
Looge kirjelduse ja konfiguratsioonikaardi kirjeldus
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 kirjeldada te ayuda a verificar que las claves se han empaquetado como esperabas.
Muutujad 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 Process. Es especialmente itil si el ConfigMap incluye fragmentos multiclave que no quieres exponer íntegros.
Montaje selectivo koos esemete ja lubadega
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 vähendavad fuga de información y alinea la estructura con la jerarquía esperada port tu aplicación. Usa defaultMode para un valor por defecto y sobreescríbelo por clave cuando lo necesites.
Levinud probleemide tõrkeotsing
Muutujad mal nombradas: revisa que las claves en el ConfigMap sean válidas como nombres de env si usas envFrom. Consulta eventos del Pod para ver si se han descartado por nombres inválidos.
Montajes que ocultan arhiivid: 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 või passa alamtee 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 aktualizando una anotación. Si quieres cero espera, evalúa la estrategia direct para detección de cambios.
Vead por tamaño: si recibes entidad demasiado grande, divide el ConfigMap o cambia la estrategia de configuración. Taastage objektiks 1 MiB.
Seguridad: evita secretos ja ConfigMaps; USA saladused ja rakendus RBAC. Arvestades el cifrado en reposo de etcd si tu plataforma lo soporta y tu política lo exige.
Organisatsiooni patroonid ja mantenimiento
Eraldi konfiguratsioonikaardid funktsionaalseks domineerimiseks: andmete baas, API, kasutajaliides. Esto vähendada plahvatuse raadiust de cambios y facilita la rotación de valores concretos.
Documenta propósito, claves y contacto. Aunque kubectl get te lista objetos, la documentación viva en el repo ayuda a evitar malentendidos. Inluye eemplos de consumo con env y con volúmenes para cada ConfigMap.
Automatize validation con linters y tests de humo al aplicar, sobre todo si generas desde minevikuiples fuentes. Combina pruebas de sintaxis YAML con checks de presencia de claves críticas.
Para despliegues, una estrategy robusta es anotar el Pod Template con un checksum del ConfigMap, de 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 sencilla, pero su valor real aparece cuando dominas las variantes de consumo, la política de aktualizaciones y el gobierno de cambios. Siguiendo las prácticas anteriores, tendrás configuraciones seguras, controladas y listas para escalar.