如果其他图表处于 运行 状态,我如何使 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

这两个模板例如:

我希望 cronjob.yamldatabase.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