configmap更改时,舵图重新启动pod

Ark*_*kon 5 yaml kubernetes kubernetes-helm

如果有confimap或秘密更改,我尝试重新启动Pod。我已经尝试过以下代码中描述的同一段代码:https : //github.com/helm/helm/blob/master/docs/charts_tips_and_tricks.md#automatically-roll-deployments-when-configmaps-or-secrets-change 但是,更新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 }}
Run Code Online (Sandbox Code Playgroud)

小智 11

它对我有用,下面是我的deployment.yaml文件中的代码片段,确保您的configmap和秘密yaml文件与注释中引用的内容相同:

spec:
  template:
    metadata:
      annotations:
        checksum/config: {{ include (print $.Template.BasePath "/my-configmap.yaml") . | sha256sum }}
        checksum/secret: {{ include (print $.Template.BasePath "/my-secret.yaml") . | sha256sum }}
Run Code Online (Sandbox Code Playgroud)


Ric*_*ico 6

Helm和Kubernetes均未提供针对ConfigMap更改的特定滚动更新。解决办法已经有一段时间了,只是对部署进行修补,从而触发滚动更新:

kubectl patch deployment your-deployment -n your-namespace -p '{"spec":{"template":{"metadata":{"annotations":{"date":"$(date)"}}}}}'
Run Code Online (Sandbox Code Playgroud)

您可以看到状态:

kubectl rollout status deployment your-deployment
Run Code Online (Sandbox Code Playgroud)

请注意,这在nix机器上有效。直到添加了此功能


arm*_*ear 5

https://helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments Helm3 现在有这个功能。当 configmap 模板文件发生变化时,部署就会推出。

  • 我觉得这应该是当今公认的答案。比手动调用 patch 更干净、更直接。 (2认同)