0

是否可以从 Tekton 任务运行 docker 映像?我看到的大多数示例都与使用 Tekton 构建和部署 Docker 映像有关,但与如何运行已构建的映像无关。

我正在使用 cron 作业来触发 Tekton EventListener,然后运行 ​​Taskrun。我希望任务运行托管在私有 docker repo 上的 docker 映像。Taskrun 指的是这个Task。

apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
  name: update-ip
spec:
  steps:
    - name: update-ip
      image: [<private-docker-repo>]
      command: ["docker"]
      args: ["run", <private-docker-repo/path-to-image>]

这是我看到的常见教程的示例

https://developer.ibm.com/tutorials/build-and-deploy-a-docker-image-on-kubernetes-using-tekton-pipelines/

任何帮助,将不胜感激

4

2 回答 2

0

您正在寻找tekton 的DinD(Docker In Docker)功能:

这是一个完整的示例,它应该可以满足您的需求:

专注于添加 dind 容器的边车部分(L42 -> L66) 。

于 2021-12-06T20:12:18.463 回答
0

每个 Tekton 任务的“任务”是运行一个容器(镜像)。因此,说明您的容器图像就足够了,仅此而已。

你的例子应该看起来像

apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
  name: update-ip
spec:
  steps:
    - name: update-ip
      image: <private-docker-repo/path-to-image/image-name:image-tag>

command并且args是可选的,如果您想执行由容器映像定义的 ENTRYPOINT 和/或 CMD 以外的其他内容。为了获得更大的灵活性,您可以选择声明 a script,它允许在容器中执行多个命令,例如 shell 脚本。

提示

  • 对于您的私有注册表,请记住向服务帐户添加一个 pull secret(如果您的 repo 具有受限访问权限)。
  • 在较新版本的 Tekton 中,apiVersion 更改为tekton.dev/v1beta1.
于 2022-01-13T16:19:05.270 回答