如何运行多步骤cron作业,但仍使其能够手动执行单个步骤?

时间:2018-09-27 13:06:06

标签: go kubernetes etl pipeline

我在Go中有一条数据管道,其中包含步骤A,B和C。目前,这是三个二进制文件。它们共享相同的数据库,但写入不同的表。在本地进行开发时,我一直在运行./a && ./b && ./c。我希望将此管道部署到我们的Kubernetes集群。

我希望A-> B-> C每天运行一次,但是有时(用于调试等),我可能只想单独运行A或B或C。

在Kubernetes中是否有一种简单的方法来实现这一目标?

我还没有找到很多资源,所以也许这表明我的应用程序设计存在问题?

1 个答案:

答案 0 :(得分:1)

创建一个包含所有三个二进制文件的docker映像和一个用于运行所有三个二进制文件的包装器脚本。

然后部署一个Kubernetes CronJob,该Kubernetes按适当的时间表按顺序运行所有三个程序(使用包装脚本作为入口点/命令)。

要进行调试,您可以只手动运行同一映像:

kubectl -n XXX run debug -it --rm --image=<image> -- /bin/sh
$ ./b
...