如果我在部署后更改我的 ConfigMap 键值,是否需要重新启动使用 configMap 值的应用程序的部署?

Shr*_*kar 2 kubernetes

我有一个使用 envVar 环境变量的示例 nodejs 应用程序,我已将它部署在 kubernetes 集群上。我正在通过配置映射传递 env 变量。

一旦部署并且当 Pod 全部运行时,如果我使用新值更改我的配置映射。在此之后是否需要重新部署我的 nodejs 应用程序?

配置映射文件

kind: ConfigMap
apiVersion: v1
metadata:
  name: app1-config
  namespace: default
data:
  envVal: '12345' # initial value
  apiUrl: http://a4235a7ee247011e8aa6f0213eb6eb14-1392003683.us-west-2.elb.amazonaws.com/myapp4
Run Code Online (Sandbox Code Playgroud)

更新 configmap.yaml 后

配置映射文件

kind: ConfigMap
apiVersion: v1
metadata:
  name: app1-config
  namespace: default
data:
  envVal: '56789' # changed value
  apiUrl: http://a4235a7ee247011e8aa6f0213eb6eb14-1392003683.us-west-2.elb.amazonaws.com/myapp4
Run Code Online (Sandbox Code Playgroud)

Jak*_*kub 5

当您从 ConfigMap 挂载密钥作为环境变量时,您需要重新启动 pod 以使更改生效。

当您将它作为卷挂载到系统中时,卷中的文件将自动更新。更新不是即时的,在kubelet检查更改/执行更新之前配置了一些 TTL 。但它通常很快。然而,它仍然取决于您的应用程序如何从文件中加载数据 -当文件更改时它是否能够即时更新自己或者这些数据是否仅在启动时加载一次。