发现工具镜像

本指南介绍如何发现帮助您运行 Tekton Tasks 和 Pipelines 的工具镜像。
如果找不到所需的镜像,您也可以自行构建镜像并用它来运行您的 Tasks 和 Pipelines。

目录

简要说明

  • 运行前请将 <tekton-namespace> 替换为您的 Tekton 命名空间,例如 tekton-pipelines
  • <image-name> 替换为目标镜像名称,例如 helm

运行以下命令获取镜像名称:

REG=$(kubectl -n kube-public get cm global-info -o jsonpath='{.data.registryAddress}')
IMG=$(kubectl -n <tekton-namespace> get cm -l operator.tekton.dev/tool-image=<image-name> -o jsonpath='{.items[0].data.repository}:{.items[0].data.tag}')
echo "${REG%/}/$IMG"
  • 第二行选择数组索引 0 (.items[0])。如果有多个匹配的 ConfigMap 且索引 0 不是您想要的,可以更改索引(例如 .items[1].items[2] 等),或者按照下面的逐步流程列出并选择。
  • 如果 kube-public/global-info 不存在(或缺少 registryAddress),请将 REG 替换为您自己的镜像仓库,例如:REG="registry.example.com"

前提条件

  • 已安装并配置好 kubectl 以访问集群。
  • 具有读取 ConfigMaps 的权限。

逐步操作指南

第 1 步:获取镜像仓库地址

尝试从 kube-public/global-info 读取 registryAddress。

REG=$(kubectl -n kube-public get cm global-info -o jsonpath='{.data.registryAddress}')

如果您的集群没有提供 kube-public/global-info,则必须将 REG 替换为您的镜像仓库地址(例如 harbor.example.com)。

REG="<your-registry>"

第 2 步:列出命名空间中所有候选工具镜像

运行前请将 <tekton-namespace> 替换为您的 Tekton 命名空间,例如 tekton-pipelines

kubectl -n <tekton-namespace> get cm -l operator.tekton.dev/tool-image -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.data.repository}:{.data.tag}{"\n"}{end}'

输出示例:

tool-image-helm   devops/tektoncd/hub/helm:3.18.0
tool-image-foo    devops/tektoncd/hub/foo:1.2.3
tool-image-bar    devops/tektoncd/hub/bar:2.3.4

如果只想查看特定类型的镜像,可以使用以下命令。
<image-name> 替换为目标镜像名称,例如 helm

kubectl -n <tekton-namespace> get cm -l operator.tekton.dev/tool-image=<image-name> -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.data.repository}:{.data.tag}{"\n"}{end}'

输出示例:

tool-image-helm   devops/tektoncd/hub/helm:3.18.0

选择其中一个镜像,并将 IMG 设置为镜像名称。

IMG=devops/tektoncd/hub/helm:3.18.0

第 3 步:打印最终镜像名称

echo "${REG%/}/$IMG"

输出示例:

registry.example.com/devops/tektoncd/hub/helm:3.18.0

故障排除

  • 输出为空或报错
    • 确认您有权限读取命名空间中的 ConfigMaps。
    • 确认 kube-public/global-info 存在且包含 registryAddress 键(或者如上所示手动设置 REG)。