web-dev-qa-db-fra.com

Exécution de scripts via des crochets Helm

J'ai écrit des crochets avant et après la mise à niveau pour mon graphique de barre, qui seront invoqués lorsque je ferai une mise à niveau de barre. Mon hook de pré-mise à niveau est censé écrire des informations dans un fichier du volume de stockage persistant partagé. D'une manière ou d'une autre, je ne vois pas la création de ce fichier bien que je puisse voir le hook appelé.

Voici à quoi ressemble mon crochet de pré-mise à niveau:

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

Je m'attends à ce que le crochet soit capable d'écrire des informations sur le volume PVC qui a déjà été créé avant la mise à niveau. Lorsque j'ai fait une description sur les modules de mise à niveau, j'ai pu voir l'erreur suivante:

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"

Le crochet ne monte-t-il pas d'abord le volume avant d'exécuter la commande? De plus, j'emballe le script avec l'image docker, donc je pense qu'il devrait être là. Je ne peux pas exécuter dans le module de raccordement car il passe à l'état Échec. Est-ce que quelqu'un peut m'aider avec ça?

[Mise à jour] J'ai ajouté une commande sleep pour entrer dans le pod et vérifier si le script est disponible et si le chemin de montage existe. Tout a l'air bien. Je ne comprends pas pourquoi cette erreur se produirait.

5
James Isaac

On dirait que je devais donner la commande différemment:

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