Tekton 的内置 sidecar 功能允许您定义将与单个任务一起运行并在任务完成时停止的 sidecar。我关心的特定用例是使用 Docker-in-Docker sidecar 在一个任务中构建映像,然后在单独的任务中将该映像推送到注册表。
问问题
26 次
1 回答
0
在 Kubernetes 术语中,Tekton 任务是 Pod。如果您运行两个任务:充其量,您可以在两者中重复使用相同的 sidecar 代码。但简短的回答:不,你不能在两个 Pod 之间共享一个 Sidecar 容器。
关于您的用例:构建和推送。我首先建议您将两者作为同一任务的“步骤”来实现,而不是不同的任务。
任务是一个步骤列表,每个步骤都是 Pod 中的一个单独容器。它们将按顺序运行(第一步将开始,退出,然后第二步将开始,...)。如果您的任务中有一个边车,那么该容器将贯穿整个任务执行:您的两个步骤容器都可以查询它,共享相同的运行时数据。
TektonCD 目录存储库有一些可以帮助您的示例,例如 docker-build 任务:https ://github.com/tektoncd/catalog/blob/main/task/docker-build/0.1/docker-build.yaml
如果由于某种原因,您有两个实现构建和推送作为单独的任务,那么执行此操作的一种方法可能是使用附加到两个任务的 PersistentVolumeClaim。共享您的 DIND sidecar 数据卷,或将您的图像导出为 .tar 存档,一旦您完成构建图像,然后将其加载到下一个任务的运行时中。
于 2022-01-16T09:23:05.767 回答