是否有可能在 Tekton 管道中的多个任务中保留边车?
Is it possible to have a sidecar persist across multiple tasks in a Tekton pipeline?
Tekton 的内置 sidecar 功能允许您定义将 运行 与单个任务一起并在任务完成时停止的 sidecar。我关心的具体用例是使用 Docker-in-Docker sidecar 在一个任务中构建图像,然后在单独的任务中将该图像推送到注册表。
在 Kubernetes 术语中,Tekton 任务是 Pods。如果你 运行 两个任务:充其量,你可以在两个任务中重复使用相同的 sidecar 代码。但简短的回答:不,你不能在两个 Pods.
之间共享一个边车容器
关于您的用例:构建和推送。我首先建议您将两者作为同一任务的“步骤”来实现,而不是不同的任务。
Task 是一个步骤列表,每个步骤都是 Pod 中的一个单独容器。他们将按顺序 运行(第一步是 start,退出,然后第二步是 start,...)。如果您的任务中有一个边车,那么该容器将在整个任务执行过程中存在:您的两个步骤容器都可以查询它,共享相同的 运行 时间数据。
TektonCD 目录存储库有一些示例可以帮助您,例如 docker-build 任务:https://github.com/tektoncd/catalog/blob/main/task/docker-build/0.1/docker-build.yaml
如果出于某种原因,您将构建和推送两个实现作为单独的任务,那么执行此操作的一种方法可能是使用附加到这两个任务的 PersistentVolumeClaim。共享您的 DIND sidecar 数据卷,或将您的图像导出为 .tar 存档,一旦您完成图像构建,并将其加载到下一个任务的 运行 时间。
Tekton 的内置 sidecar 功能允许您定义将 运行 与单个任务一起并在任务完成时停止的 sidecar。我关心的具体用例是使用 Docker-in-Docker sidecar 在一个任务中构建图像,然后在单独的任务中将该图像推送到注册表。
在 Kubernetes 术语中,Tekton 任务是 Pods。如果你 运行 两个任务:充其量,你可以在两个任务中重复使用相同的 sidecar 代码。但简短的回答:不,你不能在两个 Pods.
之间共享一个边车容器关于您的用例:构建和推送。我首先建议您将两者作为同一任务的“步骤”来实现,而不是不同的任务。
Task 是一个步骤列表,每个步骤都是 Pod 中的一个单独容器。他们将按顺序 运行(第一步是 start,退出,然后第二步是 start,...)。如果您的任务中有一个边车,那么该容器将在整个任务执行过程中存在:您的两个步骤容器都可以查询它,共享相同的 运行 时间数据。
TektonCD 目录存储库有一些示例可以帮助您,例如 docker-build 任务:https://github.com/tektoncd/catalog/blob/main/task/docker-build/0.1/docker-build.yaml
如果出于某种原因,您将构建和推送两个实现作为单独的任务,那么执行此操作的一种方法可能是使用附加到这两个任务的 PersistentVolumeClaim。共享您的 DIND sidecar 数据卷,或将您的图像导出为 .tar 存档,一旦您完成图像构建,并将其加载到下一个任务的 运行 时间。