2

我已经从 Configmap 中为容器定义了一个环境变量,但是我想在更改 ConfigMap 中的变量值时自动应用更改。也许我们可以在卷路径中定位环境变量!?

4

2 回答 2

1

在以下几行中,我将尝试展示一个想法(它可以被视为解决方案,至少目前是这样),它包括将 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 更新到 key 投射到 pod 之间有一个延迟时间(可以是 kubelet ConfigMap 同步周期 + kubelet 中 ConfigMap 缓存的 ttl 时间)

看看这个,让它更清楚,最好的问候

于 2019-04-17T13:05:39.033 回答
0

config map 更改的传播已经讨论了很久,仍然没有实现:https ://github.com/kubernetes/kubernetes/issues/22368

我建议使用helm 升级过程(或类似过程)来推出具有新设置的相同版本的应用程序。这样你就有了额外的控制:你可以做滚动更新,你可以回滚,你可以做金丝雀等等。

于 2019-04-17T12:24:39.343 回答