Tekton Hub
配置
目录
概述
本指南涵盖了 Tekton Hub
实例的基本配置,包括安装和核心系统设置。了解如何配置 Tekton Hub
部署的基础部分。
重要提示:如果您是通过 TektonConfig
部署的 Tekton Hub
,请在 TektonConfig
资源中修改目录配置,而不要直接编辑 ConfigMap
。直接修改 ConfigMap
会被 Tekton Operator
控制器覆盖。
命名空间说明:本指南中 <tekton-pipelines>
用作 Tekton Hub
命名空间的占位符,请替换为您的实际命名空间名称。默认安装使用 tekton-pipelines
命名空间。
核心配置领域
本指南涵盖了 Tekton Hub
的关键配置主题:
- 目录刷新:自动资源同步
- 分类:资源分类与组织
- Hub Resolver:与
Tekton Pipelines
集成
目录刷新配置
默认刷新间隔
默认情况下,Tekton Hub
每 30 分钟刷新一次目录,以获取配置仓库中的最新资源。
修改刷新间隔
刷新间隔可通过修改 tekton-hub-api
ConfigMap 中的 CATALOG_REFRESH_INTERVAL
设置来配置。
支持的时间单位:
s
(秒):30s
、60s
m
(分钟):15m
、30m
、45m
h
(小时):1h
、2h
、12h
d
(天):1d
、2d
w
(周):1w
、2w
示例配置:
apiVersion: v1
kind: ConfigMap
metadata:
name: tekton-hub-api
namespace: <tekton-pipelines>
data:
CATALOG_REFRESH_INTERVAL: 30m
禁用自动刷新
若要完全跳过自动刷新,将间隔设置为空或 "0":
data:
CATALOG_REFRESH_INTERVAL: "0"
分类配置
默认分类
Tekton Hub
提供以下标准分类用于资源组织:
- Automation
- Build Tools
- CLI
- Cloud
- Code Quality
- Continuous Integration
- Deployment
- Developer Tools
- Image Build
- Integration & Delivery
- Git
- Kubernetes
- Messaging
- Monitoring
- Networking
- Openshift
- Publishing
- Security
- Storage
- Testing
- Script
添加自定义分类
您可以通过修改 tekton-hub-api
ConfigMap 中的 CATEGORIES
部分来添加自定义分类:
apiVersion: v1
kind: ConfigMap
metadata:
name: tekton-hub-api
namespace: <tekton-pipelines>
data:
CATEGORIES: |
- Automation
- Build Tools
- CLI
- Cloud
- Code Quality
- Continuous Integration
- Deployment
- Developer Tools
- Image Build
- Integration & Delivery
- Git
- Kubernetes
- Messaging
- Monitoring
- Networking
- Publishing
- Security
- Storage
- Testing
- My Custom Category
- Data Processing
- Machine Learning
分类指南:
- 使用清晰且描述性的名称
- 遵循标题大小写格式
- 避免重复已有分类
- 保持名称简洁且有意义
应用分类更改
更新分类后:
-
应用更新后的 ConfigMap:
$ kubectl apply -f tekton-hub-api-configmap.yaml
-
刷新 Hub 配置:
# 重启 API pod
$ kubectl delete pod app=tekton-hub-api -n <tekton-pipelines>
在资源中使用分类
目录中的资源可以通过注解引用这些分类:
metadata:
annotations:
tekton.dev/categories: "Build Tools,Continuous Integration"
Hub Resolver 配置
Hub
resolver 使用户能够在 TaskRuns
和 PipelineRuns
中引用 Hub
资源。正确配置对于目录资源解析至关重要。
前提条件
Tekton Pipelines
v0.41.0 或更高版本
- 已安装内置远程解析器
- 启用了 Beta 功能(如果使用 Beta 解析器功能)
启用 Hub Resolver
通过在 feature-flags
ConfigMap 中设置功能标志启用 Hub
resolver:
apiVersion: v1
kind: ConfigMap
metadata:
name: feature-flags
namespace: <tekton-pipelines>
data:
enable-hub-resolver: "true"
Hub Resolver 配置
通过 hubresolver-config
ConfigMap 配置 Hub
resolver 默认值:
apiVersion: v1
kind: ConfigMap
metadata:
name: hubresolver-config
namespace: <tekton-pipelines>
data:
# 任务的默认目录
default-tekton-hub-catalog: "tekton-catalog-tasks"
# 流水线的默认目录
default-tekton-hub-pipeline-catalog: "tekton-catalog-pipelines"
# 默认 artifact hub 目录
default-artifact-hub-task-catalog: "tekton-catalog-tasks"
default-artifact-hub-pipeline-catalog: "tekton-catalog-pipelines"
# 默认资源类型(task 或 pipeline)
default-kind: "task"
# 默认 hub 类型(artifact 或 tekton)
default-type: "artifact"
自定义 Hub 端点
在大多数情况下,应保持默认的 TEKTON_HUB_API
端点(http://tekton-hub-api.tekton-pipelines:8000/
)不变。
仅在需要集成外部 hub API 时修改此端点。
对于自定义 Tekton Hub
实例,通过解析器部署中的环境变量配置 API 端点:
apiVersion: apps/v1
kind: Deployment
metadata:
name: tekton-pipelines-remote-resolvers
namespace: <tekton-pipelines>
spec:
template:
spec:
containers:
- name: controller
env:
# 自定义 Tekton Hub API 端点
- name: TEKTON_HUB_API
value: "https://your-tekton-hub-api.example.com"
# 自定义 Artifact Hub API 端点(如果使用 artifact 类型)
- name: ARTIFACT_HUB_API
value: "https://your-artifact-hub-api.example.com"
应用配置
更新解析器配置后:
-
应用 ConfigMap 变更:
$ kubectl apply -f hubresolver-config.yaml
-
重启解析器部署:
$ kubectl delete pod app=tekton-pipelines-resolvers -n <tekton-pipelines>
测试 Hub Resolver
使用简单的 TaskRun
测试解析器配置:
apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
name: test-hub-resolver
spec:
taskRef:
resolver: hub
params:
- name: catalog
value: "your-custom-catalog" # 必须与 Hub 中的目录名称匹配
- name: type
value: tekton
- name: kind
value: task
- name: name
value: echo-hello
- name: version
value: "0.1"
常见配置问题
Hub Resolver 问题
问题:无法通过 Hub
resolver 解析资源
解决方案:
- 验证是否启用
Hub
resolver:kubectl get cm feature-flags -n <tekton-pipelines> -o yaml
- 检查解析器配置:
kubectl get cm hubresolver-config -n <tekton-pipelines>
- 确保目录名称在
Hub
配置和解析器参数中匹配
目录刷新问题
问题:目录未自动更新
解决方案:
- 检查刷新间隔设置:
CATALOG_REFRESH_INTERVAL
- 验证目录仓库的可访问性
- 查看 API pod 日志是否有同步错误
- 手动重启 API pod:
kubectl delete pod app=tekton-hub-api -n <tekton-pipelines>
分类配置问题
问题:资源未出现在预期分类中
解决方案:
- 确认分类存在于
Hub
配置中
- 检查资源注解是否匹配已配置的分类
- 分类更改后重启 API pod