是否可以直接修改configMap
挂载的文件?我们有一个应用程序读取类型为configMap
的配置文件,并且如果configMap
与其他Pod共享并且Pod重新启动时,该应用程序应该能够编辑该文件并且更改应保留。
如果configMap
并不是这个意思,那么我们应该在consul
上中继什么来保存配置?
答案 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一样。