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.