前言
Tekton 作為一款開源的雲原生 CI/CD 架構,前身是 Knative 的 build-pipeline 項目。作為 CI/CD 架構,其本身并不是一個 CI/CD 産品,是以不應拿 Tekton 與 Jenkins 或者 Drone 這樣的 CI/CD 産品進行比較,Tekton 本質是一個強大而靈活的 CI/CD 架構,開發者可以基于它開發自己的 CI/CD 工具或産品,一些有能力的團隊可以使用 Tekton 做為底座開發出更适合自己團隊使用的 CI/CD 工具。
而 Tekton 的可視化元件 Tekton Dashboard 則為使用者提供了可視化界面,使 Tekton 的體驗更接近與 Jenkins 這樣的 CI/CD 産品,同時開發者可以在使用 Tekton Dashboard 時也會對 Tekton 的一些概念進行更深入的了解。
本文将會使用 Tekton Dashboard,通過 UI 界面在 K8S 叢集中部署一個 Java 項目:
pipeline-example-maven互動式學習
本文還提供 [katacoda] 互動式學習版本,使用者可以直接通路 katacoda 頁面:
https://katacoda.com/guoxudong/scenarios/tekton-dashboard,使用 [katacoda] 在浏覽器端學習使用 Tekton Dashboard。
該教程屬于官方教程的漢化版,并得到了
許可。

Tekton Dashboard
安裝
這是所有步驟中最麻煩的一步,由于官方提供的 Tekton 鏡像都在
gcr.io
上,在國内并不能直接拉取,是以在測試的時候着實花費了不少時間。
我特意将這些鏡像轉儲到 dockerhub 上,如果官方版無法使用,可以使用克隆版:
Tekton Pipelines# 官方
$ kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.10.1/release.yaml
# 克隆版
$ kubectl apply -f https://raw.githubusercontent.com/sunny0826/tekton-local/v0.10.1/tekton-pipeline.yaml
# 官方
$ kubectl apply --filename https://storage.googleapis.com/tekton-releases/dashboard/previous/v0.5.3/tekton-dashboard-release.yaml
# 克隆版
$ kubectl apply -f https://raw.githubusercontent.com/sunny0826/tekton-local/v0.10.1/tekton-dashboard.yaml
安裝成功之後需要配置 Tekton Dashboard 的通路位址,可以使用 ingress 或 Nodeport 暴露端口,這裡采用
port-forward
的形式将端口映射到本地:
$ kubectl port-forward svc/tekton-dashboard 8097:9097 -n tekton-pipelines
Forwarding from 127.0.0.1:8097 -> 9097
Forwarding from [::1]:8097 -> 9097
...
通路 Tekton Dashboard
打開浏覽器通路通路
http://localhost:8097導入資源
點選
Import Tekton resources
進入資源導入頁面,導入資源:
- Repository URL:
https://github.com/sunny0826/pipeline-example-maven
- Namespace:
default
- Repository directory:
tekton/
- Service Account
tekton-dashboard
輸入内容如下:
Import and Apply
按鈕,之後 Dashboard 會建立一個 PipelineRun 來導入指定的 Tekton 資源。
點選頁面底部的
View status of this run
連結,檢視 MyApp 導入 Tekton 資源的狀态。
PipelineRun 完成後,Tekton 資源已導入成功。
建立 PipelineResource
選擇
default
命名空間,并點選
PipelineResource
按鈕。
點選頁面右上方的
Create +
按鈕,将彈出一個建立 PipelineResource 的表單。
我們要在
default
命名空間中為 pipeline-example-maven 的
master
分支建立一個 git PipelineResource,故在彈出的表單中填寫以下資訊:
- Name:
pipeline-example-maven
-
default
- Type:
Git
- URL:
https://github.com/sunny0826/pipeline-example-maven
- Revision:
master
該表單内容應如下:
Create
按鈕,建立 PipelineResource。
建立 PipelineRun
default
PipelineRuns
Create +
按鈕,将彈出一個建立 PipelineRun 的表單。該表單是動态的,會根據所選的 Pipeline 提供 PipelineResource 和 Param 字段。
我們需要
default
命名空間中使用
pipeline-example-maven
的 Pipeline 和 PipelineResource,建立一個 PipelineRun,故在彈出的表單中填寫以下資訊:
-
default
- Pipeline:
pipeline-example-maven
- PipelineResources source:
pipeline-example-maven
- 其餘字段保留預設值。
Create
按鈕,建立 PipelineRun。
檢視 PipelineRun 日志
點選頁面頂部建立通知中的連結或在 PipelineRun 清單中對應的 PipelineRun,檢視 pipeline-example-maven PipelineRun 的日志。
deploy 步驟中,有時會出現權限錯誤,需要給 default:default 綁定上 admin 的 clusterrole 權限:
$ kubectl create rolebinding default-admin --clusterrole=admin --serviceaccount=default:default
确認
build
和
deploy
任務均已成功。
注意:這裡為了友善,使用的是單節點的 Kubernetes,建構完并沒有推送到鏡像倉庫,鏡像拉取政策為 imagePullPolicy: Never
,是以啟動時候也沒有從遠端倉庫拉取鏡像,而是啟動的本地鏡像。
檢視建構結果
$ kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
example-greenhouse 1/1 1 1 5h2m
總結
Tekton Dashboard 将 Tekton 的資源進行了可視化展示,指導使用者快速了解 Tekton pipeline 流程以及配置方式,快速上手 Tekton。但是由于鏡像的原因,導緻新手體驗不佳,所幸官方還提供了 [katacoda] 互動式教程,該教程我已漢化完成并獲得了官方的許可,可以在浏覽器端快速體驗從安裝 Tekton 到部署應用的整個過程。