先日、Appsodyを使ってNode.jsモジュールをK8sに簡単にデプロイする方法を記事にしました。
この記事ではさらに踏み込んで、作成したNode.js
モジュールをTekton
を使ってK8sにデプロイするCI/CDパイプラインを作ってみましょう!
まず、この記事では以下の環境にTekton
を準備するところから始めます。
※前回と同様に環境はmac。docker for macでKubernetes
が有効であることが前提です。
What's Tekton?
ざっくりいうと、Kubernetes上で稼働するクラウドネイティブなCI/CDパイプラインとなります。
代表的な使い方は、Github
からソースコードを取得して、それを自動的にKubernetesへデプロイする、というところでしょうか。
詳細は本筋とは逸れるのであまり触れませんが、Githubのリポジトリを参照してください。
ここからが本題
さて、実際Kubernetesで運用することを考えたときに、毎回、ソースコードをどこからかコピーしてきて
appsody deploy
を叩くのは、あまり現実的ではありませんよね?
そこで、上記で書いたTekton
の出番です。
まずはTektonを導入する
はじめに
以下の記事は
https://www.skyarch.net/blog/?cat=518
→こちらを参考にさせて頂きました。ありがとうございます。
Tektonのインストール
$ kubectl apply --filename https://storage.googleapis.com/tekton-releases/latest/release.yaml
下記のコマンドを打つことで、Tektonがインストールされたことを確認できます。
$ kubectl get pods --namespace tekton-pipelines
NAME READY STATUS RESTARTS AGE
tekton-pipelines-controller-5888756f5c-8jdhz 0/1 ContainerCreating 0 8s
tekton-pipelines-webhook-7494f6f84b-644nn 1/1 Running 0 8s
Tekton Dashboadを導入する
ただ、Tekton
をインストールしただけでは、実際にKubernetes
でのデプロイ結果を確認することが難しいです。ログなどを確認できるようにTekton Dashboad
を導入しましょう。
はじめにTekton DashboardのソースをGit Hubからクローンします。
$ git clone https://github.com/tektoncd/dashboard.git
下記のコマンドでTekton Dashboardのインストールは完了です。
$ kubectl apply -f dashboard/config/release/gcr-tekton-dashboard.yaml
serviceaccount/tekton-dashboard created
customresourcedefinition.apiextensions.k8s.io/extensions.dashboard.tekton.dev created
clusterrole.rbac.authorization.k8s.io/tekton-dashboard-minimal created
clusterrolebinding.rbac.authorization.k8s.io/tekton-dashboard-minimal created
deployment.apps/tekton-dashboard created
service/tekton-dashboard created
pipeline.tekton.dev/pipeline0 created
task.tekton.dev/pipeline0-task created
下記のport-forward
コマンドを実行後、http://localhost:9097
でダッシュボードにアクセスしてみましょう。
$ kubectl --namespace tekton-pipelines port-forward svc/tekton-dashboard 9097:9097