我如何验证我的 buildah 容器镜像实际上是在我的 Tekton 任务中创建的

How can I verify that my buildah container image was actually created in my Tekton Task

我正在努力在我的 Kind 集群上创建一个 Tekton 管道。我有一个 Task,其中第一个 step 使用 buildah 构建容器镜像。现在我想验证容器镜像是否真的创建了。

所以在下一个 step 中,我尝试“查看”我的容器映像(使用 ls)。我已经将一个 emptyDir 卷挂载到 Task,我的挂载路径是 /var/lib/containers(默认情况下 buildah 放置它的工件)。我尝试在 step 中执行 ls /var/lib/containers,但我得到了 no such file or directory 响应。我猜这是因为第二个 step 发生在新容器中?但是我认为这个特定 Task 的卷存在于我的所有容器中。如您所见,我对它的工作原理不是很了解。

那么有没有什么好的方法可以验证我的容器镜像是否真的创建了呢?例如,我可以在 Task 完成后阻止 pod 终止,以便我可以 shell 进入容器并浏览文件系统或其他东西吗?

这里是 Task 定义:

---
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: build-and-deploy
spec:
  params:
    - name: contextDir
      default: .
    - name: destinationImage
      default: "$(outputs.resources.app-image.url)"
    - name: dockerFile
      default: Dockerfile
  resources:
    inputs:
      - name: repo
        type: git
    outputs:
      - name: app-image
        type: image
  steps:
    - name: build-image
      image: quay.io/buildah/stable
      workingDir: "/workspace/repo/$(inputs.params.contextDir)"
      command: ["buildah", "bud", "--layers", "-f", "$(inputs.params.dockerFile)", "-t", "$(inputs.params.destinationImage)", "."]
      volumeMounts:
        - name: varlibcontainers
          mountPath: /var/lib/containers
      securityContext:
        privileged: true
        runAsUser: 0
  volumes:
    - name: varlibcontainers
      emptyDir: {}
        

So is there any good way to verify that my container image was actually created?

您似乎创建了一个自定义 Buildah 任务。我建议使用 Buildah-task from Tekton Catalog,或者至少将其用作 inspiration

目录中的 Buildah-task 使用一个 digestfile,它在推送时由 buildah 编写(我猜你想推送它以便部署它?)然后该任务有一个 Task Result that returns the image digest - 如果任何步骤失败,该步骤将显示为失败,您可以在例如仪表板或使用 cli 客户端。