Kubernetes 中的 ConfigMap 示例:所有实际情况

最后更新: 11/17/2025
作者: C 源跟踪
  • ConfigMaps 分隔代码配置并允许重新构建图像
  • Cuatro consumos clave: env, args, ficheros en volúmenes y lecture via API con suscripción a cambios
  • 自动执行卷和环境所需的操作;因叛逃而犯下的 1 MiB 罪行
  • 实用知识:versionado、Kustomize con hash、RBAC、evitar Secretos 和 usar inmutables cuando proceda

Kubernetes 配置映射示例

如果 Kubernetes 的工作需要单独配置,那么 ConfigMap 也是最重要的。 允许在 esa configuración dentro de la imagen 中使用 Pods 来禁用 clave-valor no sensibles, lo que facilita desspliegues limpios, 便携式设备和设备。

基本知识、重要的信息:限制、自动实现体积、影响变化的因素、安全的实践和可观察的策略。 这是 ConfigMap 的主要必要事项之一.

ConfigMap 是由用户提供的

ConfigMap 是 Kubernetes 的 API 对象,它提供了所有配置数据,并且没有机密信息。 内容的目标和图像内容的特定配置, evitando que tengas que reconstruirlas cada vez que cambie un parametro.

Pods 会使用 ConfigMap 来提供输入变量、排列参数、大量数据或直接 API 的信息。 这是 12-Factor 应用程序的因子配置和在设计、编辑和生产过程中的可移植性的最佳配置.

想象一下您如何应用变量 DATABASE_HOST。在本地主机上,您可以使用名称为数据基础的服务名称。 Con un ConfigMap puedes alternar esos valores sin tocar la imagen ni el binario, depurando elmismo código en cualquier entorno。

Hay una limitación clave: un ConfigMap no debe superar 1 MiB。如果需要,请将配置划分为不同的 ConfigMap 或使用外部服务、卷或配置数据的基础。

在 Kubernetes 中使用 ConfigMap

Objeto ConfigMap: 名称、名称和有效值

与田野规格不同的主要物品, ConfigMap 定义了包含数据和二进制数据的内容。数据文本为 UTF-8;二进制数据以 base64 形式承认内容二进制编码,理想的格式不是 UTF-8。

ConfigMap 的名称是子域名 DNS 验证和二进制数据的容器,包含数字、字符、字符和双关语。 数据的克拉夫斯无法解析二进制数据,就像组织冲突的标准一样。

Kubernetes v1.19 发布了 ConfigMaps inmutables añadiendo el Campo immutable: true。 La inmutabilidad, estable desde v1.21, evita cambios意外和减少在 el API 服务器上的手表,这是必要的,需要 cambiar algo,tendrás que borrar y rerear el object。

ConfigMaps 和 Pods:消费格式

在 Pod 中使用 ConfigMap,并使用 Mismo 命名空间。 消费者主要的干草 según lo que necesite tu applicación.

  1. 请参阅命令和内容参数,参考 ConfigMap 数据。 Útil para binarios que leen configuración alone por argumentos.
  2. 指数将在竞争者的内部变量中发挥重要作用。 与应用程序相关的选项.
  3. Montar el ConfigMap 是一个完整的单独讲座卷。 完美的世界档案配置应用程序.
  4. 了解 ConfigMap 是与属性相关的 API。 允许使用 API 中的 cambios 和 reaccionar,包括其他命名空间.

我们可以通过 Kubernetes 创建卷来创建归档。 Si 定义了体积、选择和具体特征的项目; si no, se proyectan todas。 También puedes elegir rutas específicas y permisos POSIX para cada fichero。

ConfigMap 的实现和内部变量

关键细节: 可以通过 ConfigMap 和体积来实现自动宣传和小规模回归。 El kubelet comprueba el contenido en cada sincronización y se apoya en una caché local.

该功能依赖于 configMapAndSecretChangeDetectionStrategy,并支持直接 API 服务器的 TTL。 库贝莱特同步周期和缓存传播的总延迟;由于缺陷,同步时间为 1 分钟,TTL 时间为 1 分钟,延迟时间为 2 分钟。

相反, ConfigMap 衍生的变量不是自动实现的。需要重新部署 Pod 才能恢复新的价值。我们可以通过部署和修改 Pod 模板来进行重新部署,从而激发新的 ReplicaSet。

使用 kubectl 创建 ConfigMaps

使用 kubectl 创建 configmap,或者在 kustomization.yaml 中创建 Kustomize 生成器。 kubectl 承认变量:directorios、ficheros individuales、literes y env-files.

从指导方针

kubectl empaqueta todos los ficheros Regulares con nombre válido del directio,usando el nombre de cada archivo como clave y su contenido como valor。 Entradas que no son ficheros Regulares se ignoran como 子目录或 simbólicos。

kubectl create configmap game-config --from-file=configure-pod-container/configmap/

ConfigMap 的描述,例如,game.properties 和 ui.properties 的数据,均与原始文本一致。 集群配置文件的格式.

Desde ficheros concretos

También puedes pasar varios –from file repetidos para Combinar fuentes。 Por defeto 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,美国 la forma clave=路径。 这就是各种档案室的名称或亲爱的名称的更多表现形式.

kubectl create configmap game-config-3 
  --from-file=game-special-key=configure-pod-container/configmap/game.properties

Desde valores literales

Con –from-literal 定义了 pares clave-valor en linea,repitiendo la opción las veces necesarias。 理想的调节速度或财产的惩罚.

kubectl create configmap special-config 
  --from-literal=special.type=charm 
  --from-literal=special.how=very

从环境文件

–from-env-file 创建 .env 中变量的一部分存档。 Desde v1.23 提供特定的变量 –from-env-file para Combinar fuentes.

kubectl create configmap my-config --from-env-file=app.env --from-env-file=extra.env

与 Kustomize 相关的通用 ConfigMap

Kustomize 允许在 kustomization.yaml 中声明生成器以生成文件或文字的 ConfigMap。 包括内容的名称 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。 该技术有助于解决声明和配置缓存问题.

configMapGenerator:
- name: game-config-5
  files:
  - game-special-key=configure-pod-container/configmap/game.properties

使用 ConfigMap 来更改输入变量

Tienes dos 守护神。 Con envFrom importas todas las claves del ConfigMap 和变量 del contenedor。 快速且快速地应用多种变量.

envFrom:
- configMapRef:
    name: my-config

您可以单独使用 algunas claves 或 renombrarlas,美国 env 和 valueFrom.configMapKeyRef。 Así eliges puntuales y el nombre de la Variable puede ser different.

env:
- name: CONFIGMAP_USERNAME
  valueFrom:
    configMapKeyRef:
      name: my-config
      key: username

Ojo: 承认变量的名称与字符的限制相结合。 如果 ConfigMap 不支持环境变量,请忽略并注册 InvalidEnvironmentVariableNames 事件, aunque el Pod arrancará.

Montar ConfigMaps como ficheros

Para exponer datos como archivos, añade el volumen en spec.volumes con 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

地图绘制了一条规则,并在路径中使用了精确的名称,或者在子路径上使用了唯一的标记。 请调整默认模式下的存档权限.

volumes:
- name: config-volume
  configMap:
    name: special-config
    items:
    - key: SPECIAL_LEVEL
      path: keys

请注意: 如果图像存在于蒙塔赫的目录中,那么它的体积是神秘的。请注意,在执行过程中不需要进行任何归档。

El texto se expone en UTF-8;其他二进制代码,美国二进制数据。 实际实现 ConfigMap,并在之前提及的延迟项目中进行参考。加速实际化,并通过 anotacion del Pod para forzar relectura。

可选参考、命名空间和限制

Una 参考 ConfigMap puede marcarse como 可选。 如果 ConfigMap 不存在,则体积会变得空空如也,并且变量也不会变得勇敢; si la clave concreta no Existe, la ruta o la Variable estarán ausentes。

Reglas a recordar: ConfigMap 存在于可选的参考列表中, y tanto Pod 与 ConfigMap 一起使用 Mismo 命名空间。 ConfigMap 与 kubelet 直接管理的静态 Pod 不兼容。

ConfigMap 不可变

ConfigMaps 的不可变功能具有以下特点: 保护我们的利益,减少 API 服务器的负担。 Una vez immutable es true, no podrás editar data ni binData;托卡·博拉(Borrar)和休闲,以及正常的 Pods que lo montaban para evitar Referencias huérfanas。

限制、限制和内部限制

ConfigMaps 保护着 etcd 和 API 对象的恢复。 没有叛逃者;您可以访问 etcd 或在内容中备份 podrá leer su contenido,因为没有任何秘密。

Existe un límite de tamaño: el objeto completo debe ser menor a 1 MiB。超级一般错误是严重的。除了这些技术之外,还可以通过各种 ConfigMap 进行配置,以获取大量外部服务。

快速比较:ConfigMap、变量和秘密

各种选项可重新配置。 ConfigMaps 集中数据,无需任何感知并允许动态实现。不同的配置中存在不同的变量,但需要重新部署。 Base64 中的秘密数据;没有真实的情况,但允许政治上的独立和主要控制。

  • 配置映射:没有任何敏感信息、恐龙、档案或环境设施。没有叛逃者。
  • 环境变量: sencillas, pero poco prácticas si hay muchas y no se effectiveizan en caliente.
  • 秘密: 明智的人;正常配置的单独凭证,需要特定的配置。

良好实践和安全

ConfigMap 的版本必须在 git 和美国版本描述或版本号中指定。 Con Kustomize, los hashes de contenido te ayudan a forzar relecturas en despliegues sin adicionales.

Evita 介绍 ConfigMaps 的秘密; usa Secrets 和 RBAC para limitar accesss。 验证 linters 的语法和应用前的基本知识 减少格式或缩进错误。

控制 RBAC 的访问。例如, un rol de solo lectura para configmaps 和 un 命名空间:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: configmap-reader
rules:
- apiGroups: ['']
  resources: ['configmaps']
  verbs: ['get', 'list', 'watch']

对于 cambios,kubectl 可以在体内进行编辑和应用,但可以通过 PR 的应用和修订来进行生产和声明。 如果使用变量,请在 ConfigMap 中编辑 ConfigMap 来重新设置 Pod 的新值.

赞助人的多样化和真实场景

多个实体:创建针对开发、暂存和产品的特定 ConfigMap。 Así evitas mezclar 调整并减少启动器版本中的错误.

集群中的所有内容:所有声明、移动和应用程序都需要。 Esto agiliza migraciones o DR.

反应和反应的应用程序:通过 API 的 ConfigMap,可以支持事件和反应。 最好允许适应与 Reicios 相关的内容,这意味着它是完整的代码.

有关部署的说明:参考 ConfigMaps 和 envFrom 或 volúmenes。 为了重新启动 ConfigMap,使用 ConfigMap 来更新环境,并在 Pod 模板中添加校验和或增量,这是新的 ReplicaSet 的详细信息。

项目卷的最终细节

Si el Pod 定义了各种不同的体积,美国预计的体积组合。 拉斯克拉夫地图上的项目允许与您的应用程序埃斯佩拉相关的存档名称。子路径是一个完整的目录。

请参阅 ConfigMap 的单独讲座和图像以及有关卷的神秘规则的图像。 图像中的重要人工制品的平面.

详细情况的实际化和检测

Kubelet 决定使用 configMapAndSecretChangeDetectionStrategy 来检测探测器。 观看 es el modo por defeto,TTL mantiene una caché con caducidad 并直接咨询 siempre al API 服务器。 Escoger uno u otro afecta Latencia y carga del controlplane。

El refresco efectivo de claves montadas puede tardar hasta el periodo desync más la propagación de caché. 如果需要立即实现,请修改 Pod desencadena una sincronización que fuerza la relectura。您经常会遇到不可接受的缺陷或缺陷。

错误的限制和配合

如果 ConfigMap 不存在,则可以选择,但 Pod 没有配置。 Del Mismo Modo,Referenciar Claves que no Existen bloqueará el inicio salvo que esas Referencias concretes Sean Opcionales.

在使用 envFrom 时,与 claves 名称不兼容的变量将被省略,并且与 claves 列表中的事件相同。 Esto evita Fallos de arranque pero puede sorprender si esperabas esas 变量.

习惯性实践

创建并描述文件中的 ConfigMap

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。 检查物体并描述与 las claves se han empaquetado como esperabas 的验证.

具体的内部变量

env:
- name: PORT
  valueFrom:
    configMapKeyRef:
      name: app-config
      key: port

您可以控制出口过程中的出口。 特别是 ConfigMap 包括 multiclave 片段,但没有完整的指数.

选择性蒙塔杰项目和许可

volumes:
- name: config-volume
  configMap:
    name: special-config
    items:
    - key: SPECIAL_TYPE
      path: conf/type
      mode: 0640

Proyectar claves en rutas concretes con permisos adecuados less fuga de information y alinea la estructura con la jerarquía esperada por tu applicación. 美国的默认模式是为了叛逃而勇敢,为了必要的条件而写的.

解决常见问题

变量名称:将 ConfigMap 中的 claves 修改为 envFrom 的环境名称。 咨询无效的 Pod 事件.

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 alone necesitas una clave.

实际情况:需要重新部署或部署时需要考虑变量;就音量而言,希望同步或有力地推动实际行动。 Si quieres cero espera, evalua la estrategia direct para detección de cambios.

错误原因:如果您需要将 ConfigMap 分开,或将其配置为配置策略。 对象限制为 1 MiB.

安全:在 ConfigMaps 中隐藏秘密;美国秘密和 RBAC 应用。 考虑将 cifrado 存储在 etcd 平台上,以支持交流和政治活动.

组织和管理的赞助人

单独的 ConfigMap 具有多种功能:数据基础、API、UI。 减少爆炸半径并促进具体价值的旋转.

Documenta propósito、claves y contacto。请参阅 kubectl 获取对象列表、生活文档和存储库,以防止损坏。 包括 ConfigMap 的环境和容量消耗示例.

自动验证与应用程序的短绒和测试,所有这些都属于多种功能。 结合 YAML 的语法和评论的存在检查.

对此,Pod 模板的稳健性与 ConfigMap 的校验和一样,是在首次推出时出现的。 这就是我们对新价值的承诺.

ConfigMaps 的本质是,它可以在消费、现实政治和政府的各种变化中发挥真正的作用。 前面的实践、安全配置、控制和升级列表.

相关文章: