Как вызвать изменение в sha256 сумме отображаемого configmap в helm? - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть настройка в моем configmap.yaml

---
apiVersion: V2.23
kind: ConfigMap
metadata:
   name: my-configmap
data: 
   image.tag: {{ .Values.image.tag }}

Затем в deployment.yaml У меня есть эта строка:

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

Затем в values.yaml У меня есть эта строка:

image:
  repository: myrepo
  tag: latest
  pullPolicy: IfNotPresent

Если в моем Jenkinsfile

        sh """
          helm upgrade --install --force \
          --namespace=default \
          --values=values.yaml \
          --set image.tag=${output_of_git-describe} \
          --set image.pullPolicy=Always \
          myimage kubernetes/myimage
       """

вопросе

  1. Будет ли указанная ниже команда helm Будет лиsha256 для configmap.yaml на самом деле меняются в зависимости от команды helm, которая есть в моем Jenkinsfile?
  2. Есть ли команда helm, которую я могу запустить, чтобы отобразить sha256 configmap.yaml?

1 Ответ

0 голосов
/ 01 декабря 2018

Как вы уже написали ( отсюда ), Helm вычислит хэш SHA-256 файла неопознанного шаблона, который не изменится при обновлении значения.

Если ваша ConfigMap когда-либо будет содержать только это единственное значение, вы можете вместо этого использовать хэш этого значения:

checksum/config: {{ sha256sum .Values.image.tag }}

Вы можете разбить содержимое ConfigMap на отдельный обновляемый шаблон:

{{/* _config_map.tpl */}}
{{- define "config-map-contents" -}}
image.tag: {{ .Values.image.tag }}
{{- end -}}
{{/* my-configmap.yaml */}}
apiVersion: v1
kind: ConfigMap
metadata:
   name: my-configmap
data: {{ include "config-map-contents" | nindent 2 }}
{{/* in the pod spec */}}
checksum/config: {{ include "config-map-contents" | sha256sum }}

В конце дня вам нужно что-то в спецификации модуля, чтобы изменить его, чтобы Kubernetes снова его развернул.В Helm вы можете более непосредственно поместить значение в переменную окружения, не проходя через ConfigMap, что даст правильный эффект:

env:
  - name: IMAGE_TAG
    value: {{ .Values.image.tag }}

Или, если это действительно тег изображения, просто измените целевое изображениеконтейнер в модуле вызовет повторное развертывание:

image: {{ printf "%s/%s:%s" .Values.image.repository (.Values.image.image | default "myimage") .Values.image.tag | quote}}
...