向选择器添加自定义 Task 镜像
本指南说明如何在 UI Task 表单中为 image 参数配置选择器选项,涵盖以下两种场景:
- 为 hub Tasks 添加镜像
- 为 你自己的 namespace Tasks 添加镜像
目录
功能概述使用场景前提条件场景 A:为 Hub Task 选择器添加镜像1. 从 Task 描述符中查找 label selector2. 在 kube-public 中创建 ConfigMap3. 应用并验证场景 B:为你自己的 Task 选择器添加镜像1. 在 Task 上配置style.tekton.dev/descriptors2. 在 kube-public 中创建匹配的 ConfigMap3. 应用并验证维护建议功能概述
- 每个选择器选项都来自一个
ConfigMap,其中data.name作为标签,data.image作为值。 - 特定于 Task 的标签(例如
catalog.tekton.dev/tool-image-python)可让 UI 将ConfigMaps与正确的Task参数匹配起来。 - UI 会使用
Task描述符中定义的 label selector,查询Task注解中指定的 namespace(例如kube-public),然后根据结果渲染选择器。
使用场景
- 为
Task选择器添加自定义 registry mirror 镜像。 - 在现有选择器选项之外引入新的 runtime 次版本。
- 为自定义
Task提供加固镜像选项。
前提条件
- 已安装 Tekton Pipelines。
- 你可以在
kube-public中创建ConfigMaps。 - 你可以在目标
Task上设置style.tekton.dev/descriptors(Hub Tasks已经提供;自定义Tasks需要你自行添加)。
场景 A:为 Hub Task 选择器添加镜像
当你要扩展 Hub Task 的选择器时,请使用此流程。
1. 从 Task 描述符中查找 label selector
在 Task 上找到 style.tekton.dev/descriptors 注解,并查找 path 指向 image 参数的条目。
以 urn:alm:descriptor:expression:props.options:api 结尾的描述符包含一个 labelSelector=... 查询;其中的 label 键必须存在于你的 ConfigMap 中。
在下面的示例中,你需要在 kube-public namespace 中创建一个带有 catalog.tekton.dev/tool-image-python 标签的 ConfigMap。
有关 style.tekton.dev/descriptors 的更多信息,请参见 How to Configure Dynamic Forms。
2. 在 kube-public 中创建 ConfigMap
使用该 label 键创建一个 ConfigMap。
默认 Tasks 会随附带
catalog.tekton.dev/source: system标签的ConfigMaps,用于标识平台提供的条目。请不要修改或删除这些条目,并且你的自定义ConfigMaps不应包含此标签。
3. 应用并验证
打开 Task 表单;此时选择器应包含 Python 3.10,并将 image 设置为
registry.example.com/tekton/python:3.10。
场景 B:为你自己的 Task 选择器添加镜像
当你可以控制 Task 定义,并且需要同时配置描述符和 ConfigMaps 时,请使用此流程。
1. 在 Task 上配置 style.tekton.dev/descriptors
下面是一个 image 选择器的 Task 描述符示例:
描述符条目及其含义:
有关 style.tekton.dev/descriptors 的更多信息,请参见 How to Configure Dynamic Forms。
2. 在 kube-public 中创建匹配的 ConfigMap
使用与你的描述符查询相同的 label 键。对于自定义 Tasks,建议使用不会与默认 Task 选择器冲突的 label 键,以避免在 Hub Tasks 中被意外显示。
默认 Tasks 会随附带有
catalog.tekton.dev/source: system标签的ConfigMaps,用于标识平台提供的条目。请不要修改或删除这些条目,并且你的自定义ConfigMaps不应包含此标签。
你也可以将 ConfigMap 放在你希望的其他 namespace 中;只需确保 ConfigMap 的 namespace 与 Task 的 style.tekton.dev/descriptors 注解中指定的 namespace 相同即可。
例如,你可以像下面这样设置 Task 注解,请将 <NAMESPACE> 替换为你的 namespace。
3. 应用并验证
打开你的 Task 表单;选择器应显示 Python 3.13 (Team Edition),并将 image 设置为
registry.example.com/internal/python:3.13。
维护建议
- 通过编辑并重新应用其
ConfigMap来更新自定义选项。 - 通过仅删除你的自定义
ConfigMap来下线某个选项;请保留任何带有catalog.tekton.dev/source: system的ConfigMap不变。