首页 文章

预安装Hook Helm - 用户友好的错误消息

提问于
浏览
1

我正在尝试为应用程序开发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 endpoints 是否可访问 . 想法是等待几秒钟和几次尝试然后退出 .
这是作为此容器的一部分运行的初始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网址,那么一切都很好,但如果无法访问etcd网址,那么我会收到错误说明 Error: Job failed: BackoffLimitExceeded”

我想检查是否有一种方法来设置用户友好的错误消息,指出该URL不可访问或类似的东西 . 似乎现在没办法做到这一点,而不是我所知道的 . 我试过这只是 Pod 而不是 Job ,这也不起作用 .

查看Helm的文档,但似乎无法找到有关此的任何信息 .

1 回答

  • 1

    我认为不可能 . 但我会采取不同的方法 .

    如果您的申请需要ETCD,为什么不检查ETCD是否可以作为您的Pod probes之一访问,就像活着或准备就绪一样?这样,如果您的应用程序和ETCD之间没有连接,那么您的应用程序在以更多kubernetes方式描述您的Pod时知道探测失败了 .

    此外,您甚至可以创建 helm install to wait until all the Pod's are Ready,这意味着如果您的应用程序未连接到ETCD,命令 helm install 将失败 .

相关问题