如果其他图表处于 运行 状态,我如何使 Helm 图表 Hooks post-install 工作
How do I make Helm chart Hooks post-install work if other charts are in running state
我在 myapp/templates/
目录中有几个 helm 图表,它们按预期部署 helm install myapp
。
这两个模板例如:
- database.yaml
- cronjob.yaml
我希望 cronjob.yaml
在 database.yaml
处于 运行ning 状态后仅 运行。我目前有一个问题,database.yaml
经常以我们预期的方式失败(这并不理想,但事实就是如此)。
我找到了钩子,但我想我要么没有正确使用它们,要么它们无法确定 pod 是否处于 运行、Pending、某种崩溃状态等...
为了使用挂钩,我没有对 database.yaml 进行任何更改,但是我的 cronjob.yaml 如果 database.yaml 在其中,我只想 运行 a 运行ning状态,我添加的注释如下:
cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: database
annotations:
"helm.sh/hook": "post-install"
labels:
app: database
service: database
spec:
schedule: "* * * * *"
successfulJobsHistoryLimit: 1
failedJobsHistoryLimit: 1
jobTemplate:
spec:
template:
spec:
containers:
- name: customtask
image: "{{ .Values.myimage }}"
command:
- /bin/sh
- -c
- supercooltask.sh
restartPolicy: Never
如果 database.yaml
部署成功且 运行 成功,我如何更改此挂钩配置以允许 cronjob.yaml
仅 运行?
在 Cron Job 的 Pod Spec 中使用 init container 检查 DB 是否启动 运行。
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#podspec-v1-core
示例:
spec:
template:
spec:
initContainers:
..
containers:
..
restartPolicy: OnFailure
我在 myapp/templates/
目录中有几个 helm 图表,它们按预期部署 helm install myapp
。
这两个模板例如:
- database.yaml
- cronjob.yaml
我希望 cronjob.yaml
在 database.yaml
处于 运行ning 状态后仅 运行。我目前有一个问题,database.yaml
经常以我们预期的方式失败(这并不理想,但事实就是如此)。
我找到了钩子,但我想我要么没有正确使用它们,要么它们无法确定 pod 是否处于 运行、Pending、某种崩溃状态等...
为了使用挂钩,我没有对 database.yaml 进行任何更改,但是我的 cronjob.yaml 如果 database.yaml 在其中,我只想 运行 a 运行ning状态,我添加的注释如下:
cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: database
annotations:
"helm.sh/hook": "post-install"
labels:
app: database
service: database
spec:
schedule: "* * * * *"
successfulJobsHistoryLimit: 1
failedJobsHistoryLimit: 1
jobTemplate:
spec:
template:
spec:
containers:
- name: customtask
image: "{{ .Values.myimage }}"
command:
- /bin/sh
- -c
- supercooltask.sh
restartPolicy: Never
如果 database.yaml
部署成功且 运行 成功,我如何更改此挂钩配置以允许 cronjob.yaml
仅 运行?
在 Cron Job 的 Pod Spec 中使用 init container 检查 DB 是否启动 运行。 https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#podspec-v1-core
示例:
spec:
template:
spec:
initContainers:
..
containers:
..
restartPolicy: OnFailure