解析器
Resolver 是 Tekton 中的一个组件,用于实现对 Tasks 和 Pipelines 等资源的远程解析。通过 Resolver,你可以引用并从外部位置获取资源,而不是直接在 Kubernetes 集群中定义这些资源。
目录
为什么需要 Resolver传统资源管理的挑战Tekton 的解决方案优势使用场景约束与限制原理解析过程资源引用配置示例Git Resolver 示例Hub Resolver 示例HTTP Resolver 示例内置 ResolverGit Resolver使用场景原理Hub Resolver使用场景原理HTTP Resolver使用场景原理参考资料为什么需要 Resolver
传统资源管理的挑战
在 CI/CD 系统中,在团队和项目之间管理和共享资源会带来若干挑战:
- 版本控制:难以跟踪和管理 CI/CD 资源的版本
- 共享:在团队和组织之间共享资源的能力有限
- 维护:更新和维护被多个 pipeline 使用的资源存在困难
- 可发现性:难以发现和使用他人创建的资源
- 一致性:确保不同环境中的资源定义保持一致
Tekton 的解决方案
Tekton Resolvers 通过以下方式应对这些挑战:
- 远程解析:在运行时从外部位置获取资源
- 版本管理:允许引用资源的特定版本
- 集中存储:支持将资源存储在中心仓库中
- 动态获取:在需要时检索资源的最新版本
- 灵活的数据源:支持多种资源来源(Git、Bundles、HTTP 等)
优势
- 可重用性:资源可以轻松在团队和项目之间共享和复用
- 版本控制:资源可以在源代码管理中进行版本化和跟踪
- 减少重复:消除重复定义资源的需求
- 简化更新:只需在一个位置更新资源,所有使用方即可自动获得更新
- 提升可发现性:资源可以在中心仓库中组织和发现
- 一致性:确保不同环境中的资源定义保持一致
使用场景
Resolver 在多种场景中都很有用,包括:
- 共享 Task 库:维护一个公共 Tasks 的中心仓库
- CI/CD 模板:为团队提供标准化的 Pipeline 模板
- 跨环境一致性:确保开发、测试和生产环境中的资源定义保持一致
- 组织规范:强制执行组织级的 CI/CD 流程标准
- 第三方集成:利用 Community 开发的 Tasks 和 Pipelines
- 替代 ClusterTasks:提供共享 Tasks,而无需使用集群作用域资源
约束与限制
- Resolver 需要能够访问外部资源位置的网络连接
- 解析发生在 TaskRun/PipelineRun 创建时,而不是执行期间
- 某些 resolver 可能需要额外的身份验证配置
- 网络问题会影响远程解析资源的可用性
- 使用外部资源时必须考虑安全性问题
原理
解析过程
当解析某个资源引用时:
- Tekton 从资源引用中识别 resolver 类型
- 调用相应的 resolver 来获取资源
- resolver 从外部位置检索资源
- 对资源进行校验并转换为相应的 Tekton 资源
- 将解析后的资源用于 TaskRun 或 PipelineRun
资源引用
资源引用指定:
- 要使用的 resolver 类型(git、bundle、hub 等)
- 资源的位置
- 可选参数,例如版本、分支或路径
- 如果需要,还包括身份验证信息
配置示例
Git Resolver 示例
Hub Resolver 示例
当前版本中,Hub resolver 的目录资源由独立的 ArtifactHub 组件提供。有关目录配置和编写说明,请参见 ArtifactHub Shim Catalog。
HTTP Resolver 示例
内置 Resolver
Git Resolver
Git Resolver 从 Git 仓库中获取资源。
使用场景
- 将 Tasks 和 Pipelines 与应用代码存放在同一个仓库中
- 将 CI/CD 资源与应用代码一起进行版本管理
- 通过 Git 仓库在团队之间共享资源
原理
Git Resolver:
- 克隆指定的 Git 仓库
- 检出指定的 revision(branch、tag 或 commit)
- 从指定路径检索资源
- 支持通过 Kubernetes secrets 进行身份验证
Hub Resolver
Hub Resolver 从 DevOps Hub catalog 中获取资源。在 ACP DevOps
4.14 及更高版本中,默认的 Hub 后端是集群内的
artifacthub-shim service,使用与 Artifact Hub 兼容的 APIs。
使用场景
- 在 air-gapped 集群中发现并使用 Curated 的 Tasks 和 Pipelines
- 访问由
artifacthub-shim提供的 catalog - 基于经过充分测试和维护的资源进行标准化
原理
Hub Resolver:
- 连接到已配置的 Artifact Hub API endpoint
- 根据名称和版本检索指定资源
- 支持不同的 catalog 和版本
- 对内置 Tasks 使用
catalog,对内置 Pipelines 使用catalog-pipelines
HTTP Resolver
HTTP Resolver 从远程 HTTP server 获取资源。
使用场景
- 从远程 server 获取资源
- 访问自定义或私有资源
- 利用现有 web 服务进行资源解析
原理
HTTP Resolver:
- 从远程 server 获取指定资源
- 提供对自定义或私有资源的访问