(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Tekton/Kubernetes】PipelineRunでPipelineを実行する流れのチュートリアル

スポンサーリンク

はじめに

Tektonの公式ドキュメントにある「Documentation / Getting Started with Pipelines」をKubernetes環境で実施(Tutorial)した結果をメモ。
Kubernetes環境はIBM Kubernetes Serviceを利用しました。

以下の続きで実施しています。

環境情報
  • tekton: v0.23
  • Kubernetes 1.19

環境用意

今回サンプルする新たなTaskのYAML(task-goodbye.yaml)の中身は以下

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: goodbye
spec:
  steps:
    - name: goodbye
      image: ubuntu
      script: |
        #!/bin/bash
        echo "Goodbye World!"

と前回のTaskを連ねたパイプラインを定義した以下のYAML(pipeline-hello-goodbye.yaml)を用意した状態で

apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: hello-goodbye
spec:
  tasks:
  - name: hello
    taskRef:
      name: hello
  - name: goodbye
    runAfter:
     - hello
    taskRef:
      name: goodbye

TaskとPipelineを適用しておきます。

$ kubectl get task
NAME    AGE
goodbye   X
hello   X
$ kubectl get pipeline
NAME            AGE
hello-goodbye   X

PipelineRunによるPipelineの実行

上記の状態で以下のような

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  generateName: hello-goodbye-run-
spec:
  pipelineRef:
    name: hello-goodbye

の内容のYAML(pipelineRun-hello-goodbye.yaml)をcreateすると

$ kubectl create -f pipelineRun-hello-goodbye.yaml
pipelinerun.tekton.dev/hello-goodbye-run-9txm5 created

Pipelineに記載されたTaskが順序通りに起動されます。以下はhelloタスクが終わってgoodbyeが起動しているシーン。

$ kubectl get taskrun
NAME                                    SUCCEEDED   REASON      STARTTIME   COMPLETIONTIME
hello-goodbye-run-9txm5-goodbye-xc2mw   Unknown     Running     X
hello-goodbye-run-9txm5-hello-5lhpw     True        Succeeded   X         X

正常に終わるとPipelineRunは以下のようになり

$ kubectl get pipelinerun
NAME                      SUCCEEDED   REASON      STARTTIME   COMPLETIONTIME
hello-goodbye-run-9txm5   True        Succeeded   ...

describeで詳細を見ると各イベントがどのように進んだのかが確認できます。

$ kubectl describe pipelinerun hello-goodbye-run-9txm5
...
Events:
  Type    Reason     Age                From         Message
  ----    ------     ----               ----         -------
  Normal  Started    ...  PipelineRun
  Normal  Running    ...  PipelineRun  Tasks Completed: 0 (Failed: 0, Cancelled 0), Incomplete: 2, Skipped: 0
  Normal  Running    ...               PipelineRun  Tasks Completed: 1 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0
  Normal  Succeeded  ...               PipelineRun  Tasks Completed: 2 (Failed: 0, Cancelled 0), Skipped: 0

終わりに

Taskを実行する場合はTaskRunのyamlを用意しましたが、Pipeline(Task群)ではそれがPipelineRunとなります。
以上、Tekton入門のご参考になれば幸いです。