Tekton Catalog 高级技巧:使用 Bundles 实现无安装引用任务资源
Tekton Catalog 是一个包含可重用 Task 和 Pipeline 资源的开源项目,通过 Tekton Bundles 功能,用户可以将 Task 存储为容器镜像并直接引用,无需预先在 Kubernetes 集群中安装。本文将详细介绍如何利用 Bundles 实现任务资源的无安装引用,提升 CI/CD 流程的灵活性和效率。
什么是 Tekton Bundles?
Tekton Bundles 是 Tekton Pipelines 提供的一项核心功能,允许将 Task、Pipeline 等资源打包为 OCI 镜像并存储在容器仓库中。与传统的 Kubernetes Custom Resource 安装方式不同,Bundles 支持通过容器镜像引用资源,实现了"即用即引"的无安装模式。
图 1:Tekton 资源关系示意图,展示了 Task、Pipeline 与 Bundles 的关联方式
Bundles 的核心优势
- 无需预安装:直接通过容器镜像引用任务,避免集群资源污染
- 版本控制:每个 Bundle 镜像对应明确版本,支持精确版本控制
- 跨集群共享:通过容器仓库实现任务资源的跨集群共享
- 简化管理:减少集群中自定义资源的数量,降低维护成本
快速上手:使用 Bundles 引用任务
基本引用格式
通过 bundle 解析器引用任务资源的标准 YAML 格式如下:
apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
name: example-run
spec:
taskRef:
resolver: bundles
params:
- name: bundle
value: ghcr.io/tektoncd/catalog/upstream/tasks/golang-build:0.1
- name: name
value: golang-build
- name: kind
value: task
实际应用示例
以下是使用 git-clone 任务 Bundle 的完整示例:
apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
name: git-clone-run
spec:
taskRef:
resolver: bundles
params:
- name: bundle
value: ghcr.io/tektoncd/catalog/upstream/tasks/git-clone:0.10
- name: name
value: git-clone
- name: kind
value: task
params:
- name: url
value: https://gitcode.com/gh_mirrors/catalog3/catalog
workspaces:
- name: output
persistentVolumeClaim:
claimName: source-pvc
高级操作:发布自定义 Bundles
使用 tekton-catalog-publish 任务
项目提供了专门的发布工具 task/tekton-catalog-publish/0.2/tekton-catalog-publish.yaml,可一键将任务打包为 Bundle 并推送到容器仓库:
apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
name: publish-my-task
spec:
taskRef:
name: tekton-catalog-publish
params:
- name: REGISTRY
value: my-registry.example.com
- name: PATH
value: my-project/tasks
- name: TAG
value: v1.0.0
workspaces:
- name: catalog
persistentVolumeClaim:
claimName: catalog-repo
- name: dockerconfig
secret:
secretName: registry-credentials
手动发布命令
通过 tkn 命令行工具手动创建和推送 Bundle:
# 克隆项目仓库
git clone https://gitcode.com/gh_mirrors/catalog3/catalog
# 打包指定任务
tkn bundle push my-registry.example.com/my-tasks/git-clone:0.10 \
-f catalog/task/git-clone/0.10/git-clone.yaml
常见问题与解决方案
认证问题
症状:Bundle 拉取失败,提示认证错误
解决:通过 dockerconfig workspace 提供容器仓库认证信息:
workspaces:
- name: dockerconfig
secret:
secretName: registry-creds
TLS 验证问题
症状:私有仓库拉取 Bundle 时出现 TLS 错误
解决:配置 SSL CA 证书,可参考 task/git-clone/0.10/README.md 中的 SSL 配置说明。
版本管理
最佳实践:始终在 Bundle 镜像标签中包含明确版本,如 git-clone:0.10 而非 git-clone:latest,确保构建可重复性。
总结
Tekton Bundles 彻底改变了任务资源的管理方式,通过容器化存储和引用机制,极大简化了 CI/CD 流程的配置与维护。无论是直接使用官方 Bundle 还是发布自定义任务,都能显著提升开发效率并降低集群管理复杂度。
想要了解更多关于 Tekton Catalog 的内容,可以查阅项目 README.md 或探索 task/ 目录下的丰富任务资源。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




