Preinstall Hook Helm - удобное сообщение об ошибке

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

    apiVersion: batch/v1
kind: Job
metadata:
  name: px-etcd-preinstall-hook
  labels:
    heritage: {{.Release.Service | quote }}
    release: {{.Release.Name | quote }}
    chart: "{{.Chart.Name}}-{{.Chart.Version}}"
  annotations:
    "helm.sh/hook": pre-install
    "helm.sh/hook-weight": "-5"
    "helm.sh/hook-delete-policy": hook-succeeded, hook-failed
spec:
  backoffLimit: 2
  template:
    spec:
      restartPolicy: Never
      containers:
      - name: pre-install-job
        imagePullPolicy: Always
        image: "hrishi/px-etcd-preinstall-hook:v1"
        command: ['/bin/sh']
        args: ['/usr/bin/etcdStatus.sh',"{{ .Values.etcdEndPoint }}"]

Этот док-контейнер просто проверяет, доступна ли конечная точка ETCD или нет. Идея состоит в том, чтобы подождать несколько секунд и несколько попыток, а затем выйти.
Вот начальный сценарий оболочки, который выполняется как часть этого контейнера.

set -x
echo "Initializing..."
svcname=$1
echo $svcname
etcdURL=$(echo "$svcname" | awk -F: '{ st = index($0,":");print substr($0,st+1)}')
echo $etcdURL

response=$(curl --write-out %{http_code} --silent --output /dev/null "$etcdURL/version")
echo $response

if [[ "$response" != 200 ]]
then
    echo "Provided etcd url is not reachable. Exiting.."
    exit 1
fi 

Все хорошо, если URL ETCD доступен, но если URL etcd недоступен, я получаю сообщение об ошибке Error: Job failed: BackoffLimitExceeded”

Я хочу проверить, есть ли способ установить удобное сообщение об ошибке, указывающее, что URL-адрес недоступен или что-то в этом роде. Кажется, сейчас нет способа сделать это, не то, что я знаю. Я пытался это просто Pod вместо Job и это тоже не работает.

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

1 ответ

Я не думаю, что это возможно. Но я бы выбрал другой подход.

Если ваше приложение требует ETCD, почему бы вам не проверить, доступен ли ETCD в качестве одного из ваших датчиков Pod, например, на жизнеспособность или готовность? Таким образом, если нет соединения между вашим приложением и ETCD, ваше приложение не запустится, и вы узнаете, что при описании вашего модуля Pod произошел сбой, более понятным образом.

Кроме того, вы можете даже сделать helm install ждать, пока все стручки Ready Это означает, что команда helm install потерпит неудачу, если ваше приложение не подключится к ETCD.

Другие вопросы по тегам