1장. OpenShift Pipelines 관찰 기능에 Tekton 결과 사용
Tekton Results는 모든 파이프라인 실행 및 작업 실행에 대한 전체 정보를 보관하는 서비스입니다. 필요에 따라 PipelineRun 및 TaskRun 리소스를 정리하고 Tekton Results API 또는 opc 명령줄 유틸리티를 사용하여 YAML 매니페스트 및 로깅 정보에 액세스할 수 있습니다.
Tekton 결과는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
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 >는 파이프라인 실행 또는 직접 시작된 작업 실행의 UUUD 형식입니다.
결과 이름 예
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
Tekton Results는 파이프라인 실행 또는 작업 실행의 일부로 실행된 모든 툴의 로깅 정보가 포함된 로그 레코드도 생성합니다.
모든 결과 및 레코드에 해당 이름으로 액세스할 수 있습니다. CEL(Common Expression Language) 쿼리를 사용하여 YAML 매니페스트를 포함하여 포함된 정보로 결과 및 레코드를 검색할 수도 있습니다.