我已经从Configmap中为容器定义了一个环境变量,但是我想在ConfigMap中更改变量值时自动应用更改。 也许我们可以在卷路径中指定环境变量!?
答案 0 :(得分:0)
关于配置映射更改的传播已讨论了很长时间,但尚未实现:https://github.com/kubernetes/kubernetes/issues/22368
我建议使用helm upgrade process(或类似名称)仅使用新设置推出相同版本的应用程序。这样,您就可以拥有其他控件:可以进行滚动更新,可以回滚,可以执行canary等。
答案 1 :(得分:0)
在接下来的几行中,我将尝试展示一个想法(至少暂时可以将其视为解决方案),它包括将configmap值安装为Volume,
spec:
containers:
- name
...
volumeMounts:
- name: config-volume
mountPath: /etc/config #just an example
volumes:
- name: config-volume
configMap:
name : <name-of-configmap>
items:
- key: <key-in-onfigmap>
path: keys
结果是,我们将在卷文件(/ etc / config / keys)中获得configMap Key的值,可以通过执行这些命令来确保
kubectl exec -it <name-of-pod> sh #to get a shell to the running container/pod
cat /etc/config/keys #
注意:从更新ConfigMap到将键投影到吊舱之间有一个延迟时间(可以是kubelet ConfigMap同步时间+ kubelet中ConfigMap缓存的ttl的时间)
请注意this,以使其更加清晰,最诚挚的问候