第1章 OpenShift Pipelines の可観測性のために Tekton 結果を使用する
Tekton Results は、すべてのパイプライン実行とタスク実行の完全な情報をアーカイブするサービスです。必要に応じて PipelineRun
リソースと TaskRun
リソースをプルーニングし、Tekton Results API または opc
コマンドラインユーティリティーを使用して、それらの YAML マニフェストとログ情報にアクセスできます。
1.1. Tekton Results の概念
Tekton Results は、パイプラインの実行とタスクの実行を結果とレコードの形式でアーカイブします。
実行が完了した PipelineRun
および TaskRun
カスタムリソース (CR) ごとに、Tekton Results は レコード を作成します。
結果 には、1 つまたは複数のレコードを含めることができます。レコードは、常に 1 つの結果に含まれています。
結果はパイプライン実行に対応し、PipelineRun
CR 自体のレコードと、パイプライン実行の一部として開始されたすべての TaskRun
CR のレコードが含まれます。
タスク実行がパイプライン実行を使用せずに直接開始された場合、このタスク実行の結果が作成されます。この結果には、同じタスク実行のレコードが含まれます。
各結果には、PipelineRun
または TaskRun
CR が作成された namespace と CR の UUID が含まれる名前が付けられます。結果名の形式は <namespace_name>/results/<parent_run_uuid>
です。この形式では、<parent_run_uuid>
はパイプライン実行の UUUD、または直接開始されたタスク実行の 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
すべての結果とレコードにその名前でアクセスできます。Common Expression Language (CEL) クエリーを使用して、YAML マニフェストなど、そのクエリーに含まれる情報によって結果とレコードを検索することもできます。
Tekton Results を設定して、パイプラインまたはタスクの一部として実行されたすべてのツールのログ情報を LokiStack に簡単に転送することもできます。次に、Tekton Results に対してクエリーを実行して、Tekton Results レコードに関連付けられたタスク実行のログ情報を確認できます。