第 1 章 为 OpenShift Pipelines 可观察性使用 Tekton 结果
Tekton Results 是一个记录每个管道运行和任务运行的完整信息的服务。您可以根据需要修剪 PipelineRun 和 TaskRun 资源,并使用 Tekton Results API 或 opc 命令行工具访问其 YAML 清单以及日志信息。
1.1. Tekton Results 概念 复制链接链接已复制到粘贴板!
Tekton Results 归档管道运行和任务以结果和记录的形式运行。
对于每个完成运行的 PipelineRun 和 TaskRun 自定义资源(CR),Tekton Results 会创建一个 记录。
结果 可以包含一个或多个记录。记录始终是一个结果的一部分。
结果与管道运行对应,包括 PipelineRun CR 本身以及作为管道运行一部分启动的所有 TaskRun CR 的记录。
如果任务运行是直接启动的,如果没有使用管道运行,则会为此任务运行创建一个结果。此结果包含同一任务运行的记录。
每个结果都有一个名称,其中包含创建 PipelineRun 或 TaskRun CR 的命名空间以及 CR 的 UUID。结果名称为 < namespace_name>/results/<parent_run_uuid > 的格式。在这个格式中,<parent_run_uuid > 是管道运行的 UUD,或其他任务运行已直接启动的。
结果名称示例
results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed
每个记录都有一个名称,其中包含记录的结果名称,以及 PipelineRun 或 TaskRun CR 的 UUID。结果名称的格式为 < namespace_name>/results/<parent_run_uuid>/results/<run_uuid >。
记录名称示例
results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed/records/e9c736db-5665-441f-922f-7c1d65c9d621
记录包括 TaskRun 或 PipelineRun CR 的完整 YAML 清单,因为它会在完成运行后存在。此清单包含运行规格、为运行指定的任何注解,以及有关运行结果的特定信息,如完成时间和运行是否成功。
当 TaskRun 或 PipelineRun CR 存在时,您可以使用以下命令查看 YAML 清单:
$ oc get pipelinerun <cr_name> -o yaml
Tekton Results 在 TaskRun 或 PipelineRun CR 被删除后保留此清单,并使其可用于查看和搜索。
管道的 YAML 清单在完成后运行
kind: PipelineRun
spec:
params:
- name: message
value: five
timeouts:
pipeline: 1h0m0s
pipelineRef:
name: echo-pipeline
taskRunTemplate:
serviceAccountName: pipeline
status:
startTime: "2023-08-07T11:41:40Z"
conditions:
- type: Succeeded
reason: Succeeded
status: "True"
message: 'Tasks Completed: 1 (Failed: 0, Cancelled 0), Skipped: 0'
lastTransitionTime: "2023-08-07T11:41:49Z"
pipelineSpec:
tasks:
- name: echo-task
params:
- name: message
value: five
taskRef:
kind: Task
name: echo-task-pipeline
params:
- name: message
type: string
completionTime: "2023-08-07T11:41:49Z"
childReferences:
- kind: TaskRun
name: echo-pipeline-run-gmzrx-echo-task
apiVersion: tekton.dev/v1
pipelineTaskName: echo-task
metadata:
uid: 62c3b02e-f12b-416c-9771-c02af518f6d4
name: echo-pipeline-run-gmzrx
labels:
tekton.dev/pipeline: echo-pipeline
namespace: releasetest-js5tt
finalizers:
- chains.tekton.dev/pipelinerun
generation: 2
annotations:
results.tekton.dev/log: releasetest-js5tt/results/62c3b02e-f12b-416c-9771-c02af518f6d4/logs/c1e49dd8-d641-383e-b708-e3a02b6a4378
chains.tekton.dev/signed: "true"
results.tekton.dev/record: releasetest-js5tt/results/62c3b02e-f12b-416c-9771-c02af518f6d4/records/62c3b02e-f12b-416c-9771-c02af518f6d4
results.tekton.dev/result: releasetest-js5tt/results/62c3b02e-f12b-416c-9771-c02af518f6d4
generateName: echo-pipeline-run-
managedFields:
- time: "2023-08-07T11:41:39Z"
manager: kubectl-create
fieldsV1:
f:spec:
.: {}
f:params: {}
f:pipelineRef:
.: {}
f:name: {}
f:metadata:
f:generateName: {}
operation: Update
apiVersion: tekton.dev/v1
fieldsType: FieldsV1
- time: "2023-08-07T11:41:40Z"
manager: openshift-pipelines-controller
fieldsV1:
f:metadata:
f:labels:
.: {}
f:tekton.dev/pipeline: {}
operation: Update
apiVersion: tekton.dev/v1
fieldsType: FieldsV1
- time: "2023-08-07T11:41:49Z"
manager: openshift-pipelines-chains-controller
fieldsV1:
f:metadata:
f:finalizers:
.: {}
v:"chains.tekton.dev/pipelinerun": {}
f:annotations:
.: {}
f:chains.tekton.dev/signed: {}
operation: Update
apiVersion: tekton.dev/v1
fieldsType: FieldsV1
- time: "2023-08-07T11:41:49Z"
manager: openshift-pipelines-controller
fieldsV1:
f:status:
f:startTime: {}
f:conditions: {}
f:pipelineSpec:
.: {}
f:tasks: {}
f:params: {}
f:completionTime: {}
f:childReferences: {}
operation: Update
apiVersion: tekton.dev/v1
fieldsType: FieldsV1
subresource: status
- time: "2023-08-07T11:42:15Z"
manager: openshift-pipelines-results-watcher
fieldsV1:
f:metadata:
f:annotations:
f:results.tekton.dev/log: {}
f:results.tekton.dev/record: {}
f:results.tekton.dev/result: {}
operation: Update
apiVersion: tekton.dev/v1
fieldsType: FieldsV1
resourceVersion: "126429"
creationTimestamp: "2023-08-07T11:41:39Z"
deletionTimestamp: "2023-08-07T11:42:23Z"
deletionGracePeriodSeconds: 0
apiVersion: tekton.dev/v1
您可以通过其名称访问每个结果并记录。您还可以使用通用表达式语言(CEL)查询来根据其包含的信息(包括 YAML 清单)搜索结果和记录。
您可以将 Tekton Results 配置为促进将作为管道或任务一部分运行的所有工具的日志信息转发到 LokiStack。然后,您可以查询与 Tekton Results 记录关联的任务运行的 Tekton Results 信息。
您还可以根据管道运行和任务运行的名称查询结果和日志。