天天看點

可視化 Tekton 元件 Tekton Dashboard

前言

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 元件 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
可視化 Tekton 元件 Tekton Dashboard

導入資源

點選

Import Tekton resources

進入資源導入頁面,導入資源:

  • Repository URL:

    https://github.com/sunny0826/pipeline-example-maven

  • Namespace:

    default

  • Repository directory:

    tekton/

  • Service Account

    tekton-dashboard

輸入内容如下:

可視化 Tekton 元件 Tekton Dashboard

Import and Apply

按鈕,之後 Dashboard 會建立一個 PipelineRun 來導入指定的 Tekton 資源。

點選頁面底部的

View status of this run

連結,檢視 MyApp 導入 Tekton 資源的狀态。

可視化 Tekton 元件 Tekton Dashboard

PipelineRun 完成後,Tekton 資源已導入成功。

可視化 Tekton 元件 Tekton Dashboard

建立 PipelineResource

選擇

default

命名空間,并點選

PipelineResource

按鈕。

可視化 Tekton 元件 Tekton Dashboard

點選頁面右上方的

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

該表單内容應如下:

可視化 Tekton 元件 Tekton Dashboard

Create

按鈕,建立 PipelineResource。

建立 PipelineRun

default

PipelineRuns

可視化 Tekton 元件 Tekton Dashboard

Create +

按鈕,将彈出一個建立 PipelineRun 的表單。該表單是動态的,會根據所選的 Pipeline 提供 PipelineResource 和 Param 字段。

我們需要

default

命名空間中使用

pipeline-example-maven

的 Pipeline 和 PipelineResource,建立一個 PipelineRun,故在彈出的表單中填寫以下資訊:

  • default

  • Pipeline:

    pipeline-example-maven

  • PipelineResources source:

    pipeline-example-maven

  • 其餘字段保留預設值。
可視化 Tekton 元件 Tekton Dashboard

Create

按鈕,建立 PipelineRun。

檢視 PipelineRun 日志

點選頁面頂部建立通知中的連結或在 PipelineRun 清單中對應的 PipelineRun,檢視 pipeline-example-maven PipelineRun 的日志。

可視化 Tekton 元件 Tekton Dashboard
deploy 步驟中,有時會出現權限錯誤,需要給 default:default 綁定上 admin 的 clusterrole 權限:
$ kubectl create rolebinding default-admin --clusterrole=admin --serviceaccount=default:default           

确認

build

deploy

任務均已成功。

可視化 Tekton 元件 Tekton Dashboard
注意:這裡為了友善,使用的是單節點的 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 到部署應用的整個過程。