Tekton Hub 配置

概述

本指南介绍 Tekton Hub 实例的基本配置,包括安装和核心系统设置。了解如何配置 Tekton Hub 部署的基础方面。

重要:如果你是通过 TektonConfig 部署的 Tekton Hub,请修改 TektonConfig 资源中的 catalog 配置,而不要直接编辑 ConfigMap。直接对 ConfigMap 的修改会被 Tekton Operator 控制器覆盖。

命名空间说明:在本指南中,<tekton-pipelines> 用作你的 Tekton Hub 命名空间的占位符。请将其替换为实际的 namespace 名称。默认安装使用 tekton-pipelines namespace。

核心配置区域

本指南涵盖 Tekton Hub 配置的关键主题:

  • 目录刷新:自动资源同步
  • 分类:资源分类与组织
  • Hub 解析器:与 Tekton Pipelines 集成

目录刷新配置

默认刷新间隔

默认情况下,Tekton Hub 每 30 分钟刷新一次 catalog,以便从已配置的仓库获取最新资源。

修改刷新间隔

可以通过修改 tekton-hub-api ConfigMap 中的 CATALOG_REFRESH_INTERVAL 设置来配置刷新间隔。

支持的时间单位:

  • s(秒):30s60s
  • m(分钟):15m30m45m
  • h(小时):1h2h12h
  • d(天):1d2d
  • w(周):1w2w

配置示例:

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 提供以下用于组织资源的标准分类:

  • 自动化
  • 构建工具
  • CLI
  • 代码质量
  • 持续集成
  • 部署
  • 开发人员工具
  • 镜像构建
  • 集成与交付
  • Git
  • Kubernetes
  • 消息传递
  • 监控
  • 网络
  • Openshift
  • 发布
  • 安全
  • 存储
  • 测试
  • 脚本

添加自定义分类

你可以通过修改 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

分类指南:

  • 使用清晰、具有描述性的名称
  • 遵循标题式大小写格式
  • 避免与现有分类重复
  • 名称要简洁,但要有意义

应用分类更改

更新分类后:

  1. 应用更新后的 ConfigMap:

    $ kubectl apply -f tekton-hub-api-configmap.yaml
  2. 刷新 Hub 配置:

    # 重启 API pod
    $ kubectl delete pod app=tekton-hub-api -n <tekton-pipelines>

在资源中使用分类

catalog 中的资源可以通过注解引用这些分类:

metadata:
  annotations:
    tekton.dev/categories: "Build Tools,Continuous Integration"

Hub 解析器配置

Hub 解析器使用户能够在 TaskRunsPipelineRuns 中引用 Hub 资源。正确配置对于 catalog 资源解析至关重要。

前提条件

  • Tekton Pipelines v0.41.0 或更高版本
  • 已安装内置远程解析器
  • 已启用 beta 特性(如果使用 beta 解析器特性)

启用 Hub 解析器

通过在 feature-flags ConfigMap 中设置 feature flag 来启用 Hub 解析器:

apiVersion: v1
kind: ConfigMap
metadata:
  name: feature-flags
  namespace: <tekton-pipelines>
data:
  enable-hub-resolver: "true"

Hub 解析器配置

通过 hubresolver-config ConfigMap 配置 Hub 解析器默认值:

apiVersion: v1
kind: ConfigMap
metadata:
  name: hubresolver-config
  namespace: <tekton-pipelines>
data:
  # Default catalog for tasks
  default-tekton-hub-catalog: "tekton-catalog-tasks"

  # Default catalog for pipelines
  default-tekton-hub-pipeline-catalog: "tekton-catalog-pipelines"

  # Default artifact hub catalogs
  default-artifact-hub-task-catalog: "tekton-catalog-tasks"
  default-artifact-hub-pipeline-catalog: "tekton-catalog-pipelines"

  # Default resource kind (task or pipeline)
  default-kind: "task"

  # Default hub type (artifact or 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:
        # Custom Tekton Hub API endpoint
        - name: TEKTON_HUB_API
          value: "https://your-tekton-hub-api.example.com"

        # Custom Artifact Hub API endpoint (if using artifact type)
        - name: ARTIFACT_HUB_API
          value: "https://your-artifact-hub-api.example.com"

应用配置

更新解析器配置后:

  1. 应用 ConfigMap 更改:

    $ kubectl apply -f hubresolver-config.yaml
  2. 重启解析器部署:

    $ kubectl delete pod app=tekton-pipelines-resolvers -n <tekton-pipelines>

测试 Hub 解析器

使用一个简单的 TaskRun 测试解析器配置:

apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
  name: test-hub-resolver
spec:
  taskRef:
    resolver: hub
    params:
    - name: catalog
      value: "your-custom-catalog"  # Must match catalog name in Hub
    - name: type
      value: tekton
    - name: kind
      value: task
    - name: name
      value: echo-hello
    - name: version
      value: "0.1"

常见配置问题

Hub 解析器问题

问题:无法通过 Hub 解析器解析资源

解决方案

  1. 验证 Hub 解析器是否已启用:kubectl get cm feature-flags -n <tekton-pipelines> -o yaml
  2. 检查解析器配置:kubectl get cm hubresolver-config -n <tekton-pipelines>
  3. 确保 Hub 配置与解析器参数中的 catalog 名称一致

目录刷新问题

问题:catalog 未自动更新

解决方案

  1. 检查刷新间隔设置:CATALOG_REFRESH_INTERVAL
  2. 验证 catalog 仓库是否可访问
  3. 查看 API pod 日志以排查同步错误
  4. 手动重启 API pod:kubectl delete pod app=tekton-hub-api -n <tekton-pipelines>

分类配置问题

问题:资源未出现在预期的分类中

解决方案

  1. 验证分类是否存在于 Hub 配置中
  2. 检查资源注解是否与已配置的分类匹配
  3. 在更改分类后重启 API pod