解析器
解析器是 Tekton 中的一个组件,可实现对任务和管道等资源的远程解析。解析器允许您从外部位置引用和获取资源,而不是直接在 Kubernetes 集群中定义它们。
解析器的必要性
传统资源管理的挑战
在 CI/CD 系统中,跨团队和项目管理和共享资源面临若干挑战:
- 版本控制:难以跟踪和管理 CI/CD 资源的版本
- 共享:跨团队和组织共享资源的能力有限
- 维护:多个管道使用的资源更新和维护的挑战
- 发现性:发现和使用其他人创建的资源的难度
- 一致性:确保各环境中的资源定义一致
Tekton 的解决方案
Tekton 解析器通过以下方式解决这些挑战:
- 远程解析:在运行时从外部位置获取资源
- 版本管理:允许引用特定版本的资源
- 集中存储:使资源能够存储在中央仓库中
- 动态获取:在需要时检索资源的最新版本
- 灵活来源:支持多种资源来源(Git、Bundles、HTTP 等)
优势
- 可重用性:资源可以轻松分享和重用于团队和项目之间
- 版本控制:资源可以在源代码管理中进行版本化和跟踪
- 减少重复:消除重复资源定义的需要
- 简化更新:可以在一个地方更新资源,所有使用者自动使用更新
- 改善发现性:资源可以在中央仓库中组织和发现
- 一致性:确保各环境中的资源定义一致
场景
解析器在各种场景中都很有用,包括:
- 共享任务库:维护常用任务的中央仓库
- CI/CD 模板:为团队提供标准化的管道模板
- 跨环境一致性:确保开发、测试和生产环境中的资源定义一致
- 组织标准:强制执行组织的 CI/CD 流程标准
- 第三方集成:利用社区开发的任务和管道
- 替换集群任务:提供共享任务而无需集群范围的资源
约束和限制
- 解析器需要网络访问外部资源位置
- 解析发生在 TaskRun/PipelineRun 创建时,而不是执行时
- 某些解析器可能需要额外的身份验证配置
- 网络问题可能会影响远程解析资源的可用性
- 使用外部资源时必须考虑安全性
原则
解析过程
当解析资源引用时:
- Tekton 从资源引用中识别解析器类型
- 调用适当的解析器以获取资源
- 解析器从外部位置检索资源
- 验证资源并将其转换为适当的 Tekton 资源
- 使用已解析的资源于 TaskRun 或 PipelineRun 中
资源引用
资源引用指定:
- 要使用的解析器类型(git、bundle、hub 等)
- 资源的位置
- 可选参数,如版本、分支或路径
- 如需,身份验证信息
配置示例
Git 解析器示例
apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
name: git-resolver-example
spec:
taskRef:
resolver: git
params:
- name: url
value: https://github.com/tektoncd/catalog.git
- name: revision
value: main
- name: pathInRepo
value: task/git-clone/0.9/git-clone.yaml
Hub 解析器示例
apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
name: remote-task-reference
spec:
taskRef:
resolver: hub
params:
- name: catalog # 可选
value: tekton-catalog-tasks
- name: type # 可选
value: artifact
- name: kind
value: task
- name: name
value: git-clone
- name: version
value: "0.6"
HTTP 解析器示例
apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
name: http-resolver-example
spec:
taskRef:
resolver: http
params:
- name: url
value: https://raw.githubusercontent.com/tektoncd/catalog/main/task/git-clone/0.9/git-clone.yaml
内置解析器
Git 解析器
Git 解析器从 Git 仓库获取资源。
使用案例
- 在与应用程序代码相同的仓库中存储任务和管道
- 与应用程序代码一起对 CI/CD 资源进行版本控制
- 通过 Git 仓库跨团队共享资源
原则
Git 解析器:
- 克隆指定的 Git 仓库
- 检出指定的修订版(分支、标签或提交)
- 从指定路径检索资源
- 通过 Kubernetes 秘密支持身份验证
Hub 解析器
Hub 解析器从 Tekton Hub 获取资源。
使用案例
- 发现和使用社区贡献的任务和管道
- 访问策划的 CI/CD 资源目录
- 在经过良好测试和维护的资源上实现标准化
原则
Hub 解析器:
- 连接到 Tekton Hub API
- 按名称和版本检索指定资源
- 支持不同目录和版本
- 提供访问社区贡献的资源
HTTP 解析器
HTTP 解析器从远程 HTTP 服务器获取资源。
使用案例
- 从远程服务器获取资源
- 访问自定义或私有资源
- 利用现有的网络服务进行资源解析
原则
HTTP 解析器:
- 从远程服务器获取指定资源
- 提供访问自定义或私有资源
参考文献