架构
Artifact Hub Shim 将目录摄取与目录消费分离。API 会从打包源和基于 Git 的源构建一个不可变的内存快照,然后通过 Tekton 和 ACP DevOps UI 期望的接口提供该快照。可选扩展负责准入时可见性检查以及 TaskRun 模板渲染。
核心组件
目录源
内置目录以镜像形式随插件一起交付,因此即使没有互联网访问也仍然可用。管理员可以通过创建带标签的仓库 ConfigMap 资源来添加基于 Git 的源。源定义会选择 Git URL、修订版本、目录路径、可选凭证以及可见性范围。
源加载器会独立实例化每个源。无效或暂时不可用的源会被报告,但不会阻止有效源建立索引。有关配置详情,请参阅 配置自定义 Git 仓库。
不可变目录快照
索引会规范化受支持的 Tekton 资源、检测冲突的包标识、解析目录别名、选择最新版本,并应用禁用包规则。完成刷新后会以原子方式替换活动快照,因此消费者不会看到部分更新的目录。
兼容 API
该 API Deployment 暴露三组端点:
- 与 Artifact Hub 兼容的包和搜索端点,供 Tekton hub resolver 使用。
- 与 Hub UI 兼容的列表、详情和 manifest 端点,供 ACP DevOps 使用。
- 用于运维的健康、就绪和快照状态端点。
集群内 Service 是 Tekton 和 Pipelines as Code 的集成端点。单独渲染的 Ingress 提供 ACP DevOps Hub UI 路由。
扩展 Webhook
该扩展与读取 API 分开部署,并且可以提供:
- 对 Tekton
ResolutionRequest对象的命名空间、项目或允许列表目录可见性进行验证; - 将目录提供的邮件和执行概览模板渲染到
TaskRun资源中。
如果需要回滚其准入行为,可以独立禁用该扩展。禁用它不会停止目录读取 API。
额外资源同步
目录仓库可以包含显式标记的额外 ConfigMap 资源,例如 tool-image 定义和模板。通过 leader 选举的同步控制器只会向已配置的命名空间写入,记录所有权,避免接管无关对象,并清理过时的受管对象,除非它们带有 Artifact Hub Shim keep 注解。
安全边界
- 与 UI 兼容的端点会对请求进行身份验证,并授权对虚拟
hub.tekton.dev/resources资源的get或list访问。 - 原生 resolver 请求不携带终端用户凭证。启用后,扩展会在准入时为本地 Tekton resolution 执行可见性检查。
- Git 凭证从 Kubernetes
Secret资源中读取,不会由目录 API 返回。 - Chart RBAC 将额外资源写入限制在明确允许的命名空间中。
有关详细的身份验证和 RBAC 设置,请参阅 Chart 配置。
可用性和存储
读副本独立于活动的不可变快照运行。多副本部署必须使用 Pod 本地 emptyDir 运行时存储。对于单副本场景,如果需要在 Pod 重建后保留仓库检出内容或有效载荷内容,则支持 PVC 存储。有关支持的组合,请参阅高可用性。