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

  • 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

分类指南:

  • 使用清晰且描述性的名称
  • 遵循标题大小写格式
  • 避免重复已有分类
  • 保持名称简洁且有意义

应用分类更改

更新分类后:

  1. 应用更新后的 ConfigMap:

    $ kubectl apply -f tekton-hub-api-configmap.yaml
  2. 刷新 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 使用户能够在 TaskRunsPipelineRuns 中引用 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"

应用配置

更新解析器配置后:

  1. 应用 ConfigMap 变更:

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

    $ 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 解析资源

解决方案

  1. 验证是否启用 Hub resolver:kubectl get cm feature-flags -n <tekton-pipelines> -o yaml
  2. 检查解析器配置:kubectl get cm hubresolver-config -n <tekton-pipelines>
  3. 确保目录名称在 Hub 配置和解析器参数中匹配

目录刷新问题

问题:目录未自动更新

解决方案

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

分类配置问题

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

解决方案

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