问题描述
我正在我的 Kind 集群上创建 Tekton 管道。我有一个 Task
,其中第一个 step
使用 buildah 构建容器映像。现在我想验证容器映像是否已实际创建。
因此,在接下来的 step
中,我尝试“查看”我的容器映像(使用 ls
)。我已将 emptyDir
卷安装到 Task
,我的安装路径为 /var/lib/containers
(buildah 默认将其工件放置在该位置)。我尝试在以下 ls /var/lib/containers
中执行 step
,但收到 no such file or directory
响应。我猜这是因为第二个 step
发生在新容器中?但我认为这个特定的 Task
卷存在于我的所有容器中。正如你所看到的,我对它的工作原理不是很了解。
那么有什么好的方法可以验证我的容器镜像是否真的创建了?例如,我可以在 Task
完成后停止 pod 终止,以便我可以进入容器并浏览文件系统或其他内容吗?
这里是 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: {}
解决方法
那么有没有什么好的方法可以验证我的容器镜像是否真的创建了?
您似乎创建了自定义 Buildah 任务。我建议使用 Buildah-task from Tekton Catalog,或者至少将其用作灵感。
目录中的 Buildah-task 使用了一个 digestfile 是 buildah 在 push 时写的(我猜你是想推送它以便你可以部署它?)然后任务有一个 { {3}} that Task Result - 如果任何步骤失败,该步骤将显示为失败,您可以在例如仪表板或使用 cli 客户端。