Kubernete的ConfigMap是否可写?

时间:2018-08-27 21:01:01

标签: kubernetes kubernetes-helm

是否可以直接修改configMap挂载的文件?我们有一个应用程序读取类型为configMap的配置文件,并且如果configMap与其他Pod共享并且Pod重新启动时,该应用程序应该能够编辑该文件并且更改应保留。

如果configMap并不是这个意思,那么我们应该在consul上中继什么来保存配置?

3 个答案:

答案 0 :(得分:2)

是的,配置映射为not intended to be writeable。如果要与configmap中的文件进行交互,则可以将文件放在可写卷和mount the volume中。或者,您可以按照建议使用集中式配置,如领事。鉴于应用程序正在动态写入此数据,您可以认为它是状态而不是配置。然后可以将其存储在数据库中。另一个选择可以是分布式缓存such as redis或hazelcast。

答案 1 :(得分:1)

自动将对ConfigMap的更改仅存储在本地内存中。
也就是说,其他Pod看不到更改,并且在Pod重新启动后,更改将丢失。

一种解决方案是在配置更改后,从配置应用程序中使用kubectl二进制文件或kubernetes API来重新创建ConfigMap

例如kubectl apply -f /path/to/updated/config.yaml

答案 2 :(得分:0)

从Kubernetes文档中可以对其进行更新,请参见link

  

更新已在卷中使用的ConfigMap时,最终也会投影投影的键。 Kubelet正在检查是否在每个定期同步中都重新安装已安装的ConfigMap。但是,它使用其基于本地ttl的缓存来获取ConfigMap的当前值。结果,从更新ConfigMap到将新密钥投射到Pod的时间的总延迟可能与kubelet同步时间+ kubelet中ConfigMaps缓存的ttl一样。