我如何验证我的 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 客户端。
我正在努力在我的 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 客户端。