Я написал хуки до и после апгрейда для моей диаграммы Хелма, которые будут вызываться при обновлении Хелма. Предполагается, что моя ловушка перед обновлением записывает некоторую информацию в файл на томе общего постоянного хранилища. Почему-то я не вижу, чтобы этот файл создавался, хотя я могу видеть, как вызывается хук.
Вот так выглядит мой хук перед обновлением:
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.
Кто-нибудь может мне помочь с этим?
[Обновить] Я добавил команду сна, чтобы войти в модуль и проверить, доступен ли скрипт и существует ли путь монтирования. Все выглядит хорошо. Я не понимаю, почему возникла эта ошибка.