首页 > 解决方案 > 如何在不重新创建整个部署文件的情况下将完整的 Kubernetes 部署作为 CronJob 运行?

问题描述

我正在运行一个使用 Helm 部署的 API 平台后端。PHP 服务器部署的图表在这里:

https://github.com/api-platform/api-platform/blob/main/helm/api-platform/templates/deployment.yaml

我希望运行一个 Kubernetes CronJob 来创建该服务的完整实例/pod,以便我可以使用数据库、邮件程序和模板服务运行一些查询并定期发送一些基于此的通知电子邮件这是我主要的 PHP 服务器设置的一部分。

Kubernetes 中 CronJob 的所有教程似乎都没有引用使用 Deployment,而是引用了作业模板。最坏的情况是我需要将整个部署模板重新创建为作业模板(它非常大,从上面可以看到),并且长期维护同一事物的两个版本是不切实际的。

完全接受我错误地接近这个想法并且有更好的方法的想法。

目前我的示例 CronJob 工作正常:

spec:
  concurrencyPolicy: Allow
  failedJobsHistoryLimit: 1
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - command:
            - echo
            - hello world
            image: bash
            imagePullPolicy: Always
            name: hello
          restartPolicy: Never
          terminationGracePeriodSeconds: 30
  schedule: '*/5 * * * *'
  successfulJobsHistoryLimit: 3
  suspend: false

但需要为服务器运行命令(在我的情况下,bin/console notifications:dailydigest)。我在他们的 ECR 中的 AWS 上的一个容器中拥有实际的 PHP 服务器,这就是我们的部署所使用的。我看到我们在此处列出了一个图像,但我不清楚如何使用它与yaml我正在使用的部署文件以及我们运行时推送的所有 CLI 变量helm upgrade --set [all the variables]

标签: kubernetesapi-platform.comkubernetes-cronjob

解决方案


推荐阅读