Helmチャートのアップグレード前フックとアップグレード後フックを記述しました。これは、helmアップグレードを実行すると呼び出されます。私のアップグレード前フックは、共有永続ストレージボリューム内のファイルに情報を書き込むことになっています。どういうわけか、フックが呼び出されるのを確認することはできますが、このファイルが作成されることはありません。
これは私のアップグレード前のフックのようです:
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"
コマンドを実行する前に、フックは最初にボリュームをマウントしませんか?また、私はDockerイメージでスクリプトをパッケージ化しているので、そこにあるはずだと思います。 Failed状態になると、フックポッドに実行できません。誰かがこれを手伝ってくれる?
[更新]ポッドに入り、スクリプトが利用可能かどうか、マウントパスが存在するかどうかを確認するためのスリープコマンドを追加しました。すべて正常に見えます。このエラーが発生する理由がわかりません。
別にコマンドを与える必要があるようです:
command: ["/bin/sh", "-c", "scripts/preUpgradeScript.sh","{{ .Values.pvc.shared_storage_path }}/{{ template "fullname" . }}"]