Tekton favicon Tekton
Tekton
Cloud Native CI/CD
Tekton

Tektonは Kubernetes 上で動くOSSのCI/CDツール。

ジョブの定義であるTaskやPipeline、それを実行するTaskRunやPipelineRunなどがすべてKubernetesリソースとして作成される。

Tekton はクラウドネイティブな特性を考慮して開発されたカスタムコントローラーのセットと、いくつかのカスタムリソースを組み合わせて、CI/CD パイプラインを定義する

  • Step: 1つの処理
  • Task: Stepをまとめた1機能(例: git cloneするTask、Docker imageをビルドするTask)
  • Pipeline: Taskをまとめて一連の処理を実行する
  • Trigger: パイプラインを開始するイベント
  • Dashboard: Web UI

参考資料

install

Operator を使ってインストールするのが簡単だ

# Operatorをインストールする
$ kubectl apply -f https://storage.googleapis.com/tekton-releases/operator/latest/release.yaml
 
# Operator経由でコンポーネントをインストールする。allの場合はすべて
$ kubectl apply -f https://raw.githubusercontent.com/tektoncd/operator/main/config/crs/kubernetes/config/all/operator_v1alpha1_config_cr.yaml
 
 

これで各コンポーネントのリソースが作成される

 k get pods -n tekton-operator
NAME                                       READY   STATUS    RESTARTS   AGE
tekton-operator-74b7d57b7c-5pmvp           2/2     Running   0          8d
tekton-operator-webhook-64cffc6467-jc4h5   1/1     Running   0          8d
 
 k get pods -n tekton-pipelines
NAME                                                 READY   STATUS    RESTARTS   AGE
tekton-chains-controller-5666bd9786-m64gm            1/1     Running   0          8d
tekton-dashboard-5d9b4b4479-pgqd7                    1/1     Running   0          8d
tekton-events-controller-78bc6f9686-mgtd5            1/1     Running   0          8d
tekton-operator-proxy-webhook-7b986f7987-jb2zd       1/1     Running   0          8d
tekton-pipelines-controller-86c79995f-8g8wj          1/1     Running   0          8d
tekton-pipelines-remote-resolvers-7df64d9b8f-42hn6   1/1     Running   0          8d
tekton-pipelines-webhook-6d8f7bb45b-wrl2r            1/1     Running   0          8d
tekton-triggers-controller-69c7994869-j85vg          1/1     Running   0          8d
tekton-triggers-core-interceptors-7945c64c7-mngnt    1/1     Running   0          8d
tekton-triggers-webhook-5d7c6bf975-9hb4k             1/1     Running   0          8d

Dashboard

ローカルではport-forwardでサービスを公開することでWeb UIが見れるようになる

$ kubectl port-forward -n tekton-pipelines service/tekton-dashboard 9097:9097