Как правильно добавить префикс Secret / ConfigMap ha sh в Helm? - PullRequest
0 голосов
/ 28 мая 2020

Я хочу добавить ha sh моего содержимого Secret или ConfigMap к имени ресурса, чтобы запустить непрерывное обновление и сохранить старую версию этого ресурса на случай ошибки в новой конфигурации .

Это почти может быть достигнуто с помощью "helm.sh/resource-policy": keep в Secret / ConfigMap, но они никогда не будут очищены. Есть ли способ сказать «сохранить все, кроме двух последних» в Helm или альтернативный способ добиться такого поведения?

$ helm version
version.BuildInfo{Version:"v3.2.1", GitCommit:"fe51cd1e31e6a202cba7dead9552a6d418ded79a", GitTreeState:"clean", GoVersion:"go1.13.10"}

1 Ответ

0 голосов
/ 28 мая 2020

Автоматическое развертывание развертываний

Чтобы обновить ресурс при изменении Secret или Configmap, вы можете добавить аннотацию контрольной суммы к вашему развертыванию

kind: Deployment
spec:
  template:
    metadata:
      annotations:
        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}

Вы можете вернуться к ваша предыдущая конфигурация с командой отката руля

Обновление:

Предполагая, что ваша конфигурационная карта создана с использованием файла values.yaml, вы можете добавить _helper.tpl function

{{- define "mychart.configmapChecksum" -}}
{{ printf "configmap-%s" (.Values.bar | sha256sum) }}
{{- end }}

И используйте {{ include "mychart.configmapChecksumed" . }} как имя configmap и ссылку в развертывании.

configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "mychart.configmapChecksumed" . }}
  annotations:
    "helm.sh/resource-policy": keep
data:
  config.properties: |
    foo={{ .Values.bar }}

deployment.yaml

   ...
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        # Provide the name of the ConfigMap containing the files you want
        # to add to the container
        name: {{ include "mychart.configmapChecksumed" . }}

Обратите внимание, что вы должны сохранить аннотацию "helm.sh/resource-policy": keep в Configmap, сообщающую рулю не удалять предыдущие версии.

Вы не можете использовать {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} как имя configmap напрямую, потому что рендеринг руля завершится ошибкой с

error calling include: rendering template has a nested reference name
...