发现工具镜像
本指南介绍如何发现帮助您运行 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
)。
第 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 步:打印最终镜像名称
输出示例:
registry.example.com/devops/tektoncd/hub/helm:3.18.0
故障排除
- 输出为空或报错:
- 确认您有权限读取命名空间中的 ConfigMaps。
- 确认
kube-public/global-info
存在且包含 registryAddress
键(或者如上所示手动设置 REG
)。