Kubernetes 当configmap更改时,舵图重新启动吊舱

Kubernetes 当configmap更改时,舵图重新启动吊舱,kubernetes,yaml,kubernetes-helm,Kubernetes,Yaml,Kubernetes Helm,当有confimap或秘密更改时,我尝试重新启动pods。我已经尝试了与中所述相同的代码: 但是,更新configmap后,我的pod不会重新启动。你知道这里会做错什么吗 apiVersion: apps/v1beta2 kind: Deployment metadata: name: {{ template "app.fullname" . }} labels: app: {{ template "app.name" . }} {{- include "global_l

当有confimap或秘密更改时,我尝试重新启动pods。我已经尝试了与中所述相同的代码: 但是,更新configmap后,我的pod不会重新启动。你知道这里会做错什么吗

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: {{ template "app.fullname" . }}
  labels:
    app: {{ template "app.name" . }}
    {{- include "global_labels" . | indent 4 }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: {{ template "app.name" . }}
      release: {{ .Release.Name }}
  template:
    metadata:
      annotations:
        checksum/config: {{ include (print $.Template.BasePath "/configmap.yml") . | sha256sum }}
        checksum/secret: {{ include (print $.Template.BasePath "/secret.yml") . | sha256sum }}

Helm和Kubernetes都没有为ConfigMap更改提供特定的滚动更新。解决方法是只修补触发滚动更新的部署:

kubectl patch deployment your-deployment -n your-namespace -p '{"spec":{"template":{"metadata":{"annotations":{"date":"$(date)"}}}}}'
您可以看到以下状态:

kubectl rollout status deployment your-deployment
注意,这在nix机器上工作。这将一直持续到添加此项为止

更新日期:2021年5月5日

舵手和kubectl现在提供:

舵手:


kubectl:
kubectl卷展栏重新启动部署工作负载\u NAME

Helm3现在具有此功能。当configmap模板文件发生更改时,将展开部署。

非常感谢。即使这不是一个“开箱即用”的功能,Helm不应该处理这种情况吗?是的,应该,但我猜K8s中不存在该功能,因此它可能也没有在Helm中解决过…问题中的模板已经包含了与您对补丁所做的几乎相同的更改,那么手动操作有什么帮助呢?但是问题中的更改是一个ConfigMap,从今天起它不会自动触发更新。如果是日期之类的另一个更改,它将触发更新。您也可以通过helm更新触发它,但不需要更改ConfigMap。@这里的JSON参数不太有效(我认为堆栈溢出去除了最初用于命令替换的严重重音)。如果有一个像bash这样的shell,这是可行的(在Mac和Ubuntu上测试):
'{“spec”:{“template”:{“metadata”:{“annotations”:{“date”:“$(date+'%s')”}}}}'
提供带有日期值的有效JSON。我觉得这应该是当今公认的答案。比手工调用补丁更干净、更直接。