Tekton学習シリーズ
- 第1回: Tekton 徹底解説、Operatorによるインストールとはじめの一歩
- 第2回: Tekton、TaskのStepの実行順序について確認する
- 第3回: Tekton、Taskにパラメータを引き渡す
- 第4回: Tekton、TaskでPipelineResouceを利用したときの挙動を確認する
- 第5回: Tekton、TaskをまとめてPipelineとして実行する
- 第6回: Tekton、PipelineでWorkspaceを利用してTask間でデータを連携する
- 第7回: Tekton、カタログをうまく活用してパイプラインを作る(イメージビルド)
- 第8回: Tekton、ClusterTaskとTekton Hubを理解する
- 第9回: Tekton、アプリケーションをKubernetesクラスタへデプロイする
- 第10回: Tekton、トリガーを使って外部イベントでパイプラインを実行する
- 第11回: Tekton、interceptorを使ってイベントトリガーを進化させる
- 第12回: Tekton、プライベートなGitレポジトリを扱う方法と仕組みについて
- 第13回: Tekton、ボリュームを使ってビルド・ライブラリダウンロードの高速化を図る
- 番外編: TektonからArgo CDの同期をトリガーする。それぞれの使い分けの検討。
こんにちは、もーすけです。
Tekton学習シリーズ、どんどん進めていきましょう。第8回は、ClusterTaskとTekton Hubについてです。
今までの内容より軽い内容になっています。これまで学習を進めてきた方ならすぐに理解できるはずです。
ClusterTask とは?
ここまでの学習でTaskを扱ってきました。Taskは、Tektonで表現できる最小の実行単位で、ひとつ以上のStepから成り立つものでした。 TaskのスコープはNamespaceです。異なるNamespaceからは参照することができないものでした。 一方で、ClusterTaskは、名前の通りKubernetesクラスタ全体がスコープとなるものです。 ClusterTaskに登録したTaskは、全Namespaceから参照して利用することができます。
使いみちとしては、カタログにあるような汎用的に利用できるTaskはClusterTaskとして登録してしまって、 アプリケーションごと、チームごとにTaskを登録する必要なく利用できるようにすることですかね。
ClusterTaskとTaskは、マニフェストの書き方自体は一緒なので、API名だけ変えて登録することが可能です。 もう少し具体的に言うと、第7回でカタログからgit-cloneのTaskを使いましたが、このTaskは別のNamespaceでも利用し得るのでClusterTaskに切り替えて登録が可能ということです。実際にやってみましょう。
カタログではTaskとして登録されています。 しかし、ClusterTaskに書き換えてすぐに利用できるということです。
$ git clone https://github.com/tektoncd/catalog
$ cd catalog/task/git-clone/0.2/
$ ls -l
total 24
-rw-r--r-- 1 shinyamori staff 3078 3 8 18:49 README.md
-rw-r--r-- 1 shinyamori staff 4654 3 8 18:49 git-clone.yaml
drwxr-xr-x 5 shinyamori staff 160 3 8 18:49 samples
drwxr-xr-x 3 shinyamori staff 96 3 8 18:49 tests
$ cat git-clone.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: git-clone
labels:
app.kubernetes.io/version: "0.2"
annotations:
tekton.dev/pipelines.minVersion: "0.12.1"
tekton.dev/tags: git
tekton.dev/displayName: "git clone"
spec:
...
kind: Task
からkind: ClusterTask
に切り替えて、クラスタに登録します。
$ vim git-clone.yaml
apiVersion: tekton.dev/v1beta1
#kind: Task
kind: ClusterTask # <-ClusterTaskに変更した
metadata:
name: git-clone
labels:
app.kubernetes.io/version: "0.2"
annotations:
tekton.dev/pipelines.minVersion: "0.12.1"
tekton.dev/tags: git
tekton.dev/displayName: "git clone"
spec:
...
$ kubectl apply -f git-clone.yaml
clustertask.tekton.dev/git-clone created
$ kubectl get clustertask
NAME AGE
git-clone 4s
利用するときには、spec.tasks[].taskRef.kind = ClusterTask
とする必要があります。
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: build-image-pipeline
spec:
# 中略
tasks:
- name: fetch-repository
taskRef:
name: git-clone
kind: ClusterTask #<-この指定が必要
# ...
Tekton Hub とは?
カタログの延長ではあるのですが、カタログに記載のTaskをTekton Hubというサイトから検索したりレートをつけたりできます。 皆さんの利用したTaskが、すでにTekton Hubにないかぜひ確認してみましょう。今後Taskが増えていくことに期待です。
個人的に気になるTask
最後にまだ全部は試せていないのですが、個人的に気になるTaskを軽く紹介します。
- helm-upgrade-from-source
- Kubernetes上のアプリケーションのデプロイを考えると間違いなく使われるであろう
- terraform cli
- AWSやGCPなどマルチクラウドを操作するTerraformのTask。Kubernetesとクラウド、SaaSなどまとめたオーケストレーションを可能にするので良さそう
- send-to-channel-slack
- 説明不要。使うよね
- skopeo copy
- コンテナイメージを別レジストリへコピーするのに利用するSkopeoのTask。実運用を見据えると結構使いそう
- kubeval
- Kubernetesマニフェストのバリデーションツール。マニフェストのCIの観点では利用する頻度も多くなりそう。
さいごに
第8回は軽いトピックでした。次回からはより実践的な内容をやっていきましょう。
Tekton学習シリーズ
- 第1回: Tekton 徹底解説、Operatorによるインストールとはじめの一歩
- 第2回: Tekton、TaskのStepの実行順序について確認する
- 第3回: Tekton、Taskにパラメータを引き渡す
- 第4回: Tekton、TaskでPipelineResouceを利用したときの挙動を確認する
- 第5回: Tekton、TaskをまとめてPipelineとして実行する
- 第6回: Tekton、PipelineでWorkspaceを利用してTask間でデータを連携する
- 第7回: Tekton、カタログをうまく活用してパイプラインを作る(イメージビルド)
- 第8回: Tekton、ClusterTaskとTekton Hubを理解する
- 第9回: Tekton、アプリケーションをKubernetesクラスタへデプロイする
- 第10回: Tekton、トリガーを使って外部イベントでパイプラインを実行する
- 第11回: Tekton、interceptorを使ってイベントトリガーを進化させる
- 第12回: Tekton、プライベートなGitレポジトリを扱う方法と仕組みについて
- 第13回: Tekton、ボリュームを使ってビルド・ライブラリダウンロードの高速化を図る
- 番外編: TektonからArgo CDの同期をトリガーする。それぞれの使い分けの検討。