【发布时间】:2018-01-22 05:34:24
【问题描述】:
我正在尝试为应用程序开发 Helm 图表,以简化发布管理和将应用程序部署到 Kubernetes。为此,我在 Helm 图表中编写了一个预安装挂钩。
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 }}"]
此 docker 容器仅检查 ETCD 端点是否可访问。想法是等待几秒钟并尝试几次然后退出。
这是作为该容器的一部分运行的初始 shell 脚本。
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
如果可以访问 ETCD url,一切都很好,但是如果无法访问 etcd url,那么我会收到一条错误消息,指出 Error: Job failed: BackoffLimitExceeded”
我想检查是否有一种方法可以设置用户友好的错误消息,说明 url 不可访问或类似的东西。
似乎现在没有办法做到这一点,我不知道。我尝试将其设置为Pod 而不是Job,但这也不起作用。
查看了 Helm 的文档,但似乎找不到任何有关此的信息。
【问题讨论】:
标签: kubernetes kubernetes-helm