Запуск скриптов через хэмы Helm - PullRequest
0 голосов
/ 27 июня 2018

Я написал хуки до и после апгрейда для моей диаграммы Хелма, которые будут вызываться при обновлении Хелма. Предполагается, что моя ловушка перед обновлением записывает некоторую информацию в файл на томе общего постоянного хранилища. Почему-то я не вижу, чтобы этот файл создавался, хотя я могу видеть, как вызывается хук.

Вот так выглядит мой хук перед обновлением:

apiVersion: batch/v1
kind: Job
metadata:
  name: "{{.Release.Name}}-preupgrade"
  labels:
    heritage: {{.Release.Service | quote }}
    release: {{.Release.Name | quote }}
    chart: "{{.Chart.Name}}-{{.Chart.Version}}"
  annotations:
    "helm.sh/hook": pre-upgrade
    "helm.sh/hook-weight": "0"
    "helm.sh/hook-delete-policy": hook-succeeded
spec:
  template:
    metadata:
      name: "{{.Release.Name}}"
      labels:
        heritage: {{.Release.Service | quote }}
        release: {{.Release.Name | quote }}
        chart: "{{.Chart.Name}}-{{.Chart.Version}}"
  spec:
    restartPolicy: Never
    containers:
    - name: pre-upgrade-job
      image: {{ .Values.registry }}/{{ .Values.imageRepo }}:{{ .Values.imageTag }}
      imagePullPolicy: {{ .Values.imagePullPolicy }}
      volumeMounts:
      - mountPath: {{ .Values.pvc.shared_storage_path }}/{{ template "fullname" . }}
        name: shared-pvc
        command: ['/bin/sh -c scripts/preUpgradeScript.sh {{ .Values.pvc.shared_storage_path }}/{{ template "fullname" . }}']
  volumes:
    - name: shared-pvc
      persistentVolumeClaim:
        claimName: {{ template "fullname" . }}-shared-pv-claim

Я ожидаю, что ловушка сможет записывать информацию в том PVC, который уже был создан до обновления. Когда я сделал описание модулей обновления, я увидел следующую ошибку:

Error: failed to start container "pre-upgrade-job": Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"/bin/sh -c scripts/preUpgradeScript.sh /opt/flink/share/myfl-flink\": stat /bin/sh -c scripts/preUpgradeScript.sh /opt/flink/share/myfl-flink: no such file or directory"

Разве хук не монтирует том перед запуском команды? Кроме того, я упаковываю сценарий с изображением докера, поэтому я считаю, что он должен быть там. Я не могу выполнить в модуле подключения, когда он переходит в состояние Failed. Кто-нибудь может мне помочь с этим?

[Обновить] Я добавил команду сна, чтобы войти в модуль и проверить, доступен ли скрипт и существует ли путь монтирования. Все выглядит хорошо. Я не понимаю, почему возникла эта ошибка.

1 Ответ

0 голосов
/ 28 июня 2018

Похоже, мне нужно было дать команду по-другому:

command: ["/bin/sh", "-c", "scripts/preUpgradeScript.sh","{{ .Values.pvc.shared_storage_path }}/{{ template "fullname" . }}"]
...