Ошибка запуска скрипта в хуме предварительной установки Helm - скрипт не найден - PullRequest
0 голосов
/ 03 апреля 2020

Я определил предустановочную ловушку Helm в одном из моих микросервисов, чтобы создать пользователя, базу данных и несколько таблиц в PostgreSQL до первого запуска службы. Мой файл pre-install.yaml:

apiVersion: batch/v1
kind: Job
metadata:
  name: psql-init-job
  labels:
    app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
    app.kubernetes.io/instance: {{ .Release.Name | quote }}
    app.kubernetes.io/version: {{ .Chart.AppVersion }}
    helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
  annotations:
    # This is what defines this resource as a hook. Without this line, the
    # job is considered part of the release.
    "helm.sh/hook": pre-install
    "helm.sh/hook-weight": "5"
    "helm.sh/hook-delete-policy": hook-succeeded
    # hook-succeeded, hook-failed
spec:
  template:
    metaData:
      name: psql-init-job
      labels:
        app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
        app.kubernetes.io/instance: {{ .Release.Name | quote }}
        helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
    spec:
      restartPolicy: Never
      containers:
      - name: psql-init-job
        image: registry.local:5000/sandbox/init-pgsql:1.0.0
        imagePullPolicy: "IfNotPresent"
        command: ["/bin/sh", "-c", "/k8s-init.sh" ]
        env:
          - name: DATABASE_HOST
            value: psql-postgresql.svc.cluster.local
          - name: DATABASE_PORT
            value: "5432"
          - name: DATABASE_WAIT_TIME
            value: "60s"
  backoffLimit: 0

Dockerfile включает в себя:

# Copy the SQL script.
COPY ./docker/pgsql/psql/k8s-init.sh /k8s-init.sh
# Copy the SQL files.
COPY ./docker/pgsql/psql/k8s-init-postgres.sql /k8s-init-postgres.sql
COPY ./docker/pgsql/psql/k8s-init-test.sql /k8s-init-test.sql

Сценарий, который он пытается запустить:

#!/bin/sh
# Import the SQL files.
pg_restore -d postgres://username:password@psql-postgresql.svc.cluster.local:5432/postgres --jobs 4 /k8s-init-postgres.sql
pg_restore -d postgres://username:password@psql-postgresql.svc.cluster.local:5432/test --jobs 4 /k8s-init-test.sql

Когда Я устанавливаю диаграмму Хелма, содержащую зацепку перед установкой, я получаю startError из модуля микросервиса:

/bin/sh: /k8s-init.sh: not found

Есть идеи, почему он не может найти скрипт k8s-init. sh? 1013 *

...