はじめに
Tektonの公式ドキュメントにある「Documentation / Getting Started」をKubernetes環境で実施(Tutorial)した結果をメモ。
Kubernetes環境はIBM Kubernetes Serviceを利用しました。
尚、本記事は「echo "Hello World!"」とだけ標準出力するTaskをTaskRunで実施するのがゴールです。
環境情報
- tekton: v0.23
- Kubernetes 1.19
環境用意
以下のリンクのYAMLを適用すると名前空間やその他必要なリソースが生成され
$ kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml namespace/tekton-pipelines created podsecuritypolicy.policy/tekton-pipelines created ...
以下のPodが起動しました。
$ kubectl get pods --namespace tekton-pipelines NAME READY STATUS RESTARTS AGE tekton-pipelines-controller-6b94f5f96-jfhdr 1/1 Running 0 Xs tekton-pipelines-webhook-5bfbbd6475-8jssd 1/1 Running 0 Xs
そして今回サンプルとして用意された以下のYAMLと(task-hello.yaml)
apiVersion: tekton.dev/v1beta1 kind: Task metadata: name: hello spec: steps: - name: hello image: ubuntu command: - echo args: - "Hello World!"
以下のYAML(taskRun-hello.yaml)を用意し
apiVersion: tekton.dev/v1beta1 kind: TaskRun metadata: generateName: hello-run- spec: taskRef: name: hello
Taskを適用しておきます。
$ kubectl get task NAME AGE hello X
TaskRunによるTaskの実行
上記の状態でTaskRunをCreateで作成すると
$ kubectl create -f taskRun-hello.yaml taskrun.tekton.dev/hello-run-shgf7 created
TaskrunとPodが生成され
$ kubectl get taskrun NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME hello-run-r8tmx True Succeeded .. $ kubectl get pod NAME READY STATUS RESTARTS AGE hello-run-r8tmx-pod-h7r46 0/1 Completed 0 ..
Logを確認すると確かにコマンドが実行されています。
$ kubectl logs hello-run-r8tmx-pod-h7r46 Hello World!
尚、TaskrunをCreateしてもまた別名で実行されますがapplyでは以下のようにエラーとなります。
$ kubectl apply -f taskRun-hello.yaml error: from hello-run-: cannot use generate name with apply
終わりに
シンプルな構成ですが、例えばTaskを消した状態でTaskrunを実行すると「TaskRunResolutionFailed」というステータスになり以下のようなメッセージが出るなど確認できる観点も多々あります。
* error when listing tasks for taskRun hello-run-mjz85: tasks.tekton.dev "hello" not found
以上、Tekton入門のご参考になれば幸いです。