前言git
☞ 開學季買書大優惠,錯過等一年 ☜
Tekton Pipeline 是一個 k8s native 的 pipeline, 任務跑在 pod 中,經過自定義 CRD
去管理任務與工做流等等,我看完 tekton
以後感受是功能很強大,可是有點過分設計了,沒有 drone
的簡約大方靈活之感。web
Taskbash
Tekton Pipeline 的主要目標是單獨運行您的任務或做爲管道的一部分運行。每一個任務都在 Kubernetes 集羣上做爲 Pod
運行,每一個步驟都做爲本身的容器。這點深得 drone
思想精髓,其實 drone 也有計劃將 kubernetes 做爲任務執行引擎。微信
Task
定義了須要執行的工做,例如如下是一個簡單的任務:app
steps
是一系列由任務順序執行的命令。這個 steps 內的配置幾乎與 drone
一模一樣。機器學習
Task
定義好了以後並不會被執行,建立 TaskRun
時纔會執行。這是合理的,至關因而一個觸發。編輯器
$ kubectl apply -f < name-of-file.yaml >
查看 TaskRun
:分佈式
狀態 Succeeded = True
顯示任務已成功運行。學習
任務輸入和輸出
在更常見的場景中,任務須要多個步驟來處理輸入和輸出資源。例如,Task 能夠從 GitHub 存儲庫獲取源代碼並從中構建 Docker 鏡像。
PipelinesResources
用於定義任務的輸入(如代碼)與輸出(如 Docker 鏡像)。有一些系統定義的資源類型可供使用,如下是一般須要的兩個資源示例。
該 git
資源能夠是你要編譯的代碼:
該 image
資源表明要被任務編譯成的鏡像:
如下是 Task
輸入和輸出。輸入資源是 GitHub 存儲庫,輸出是從該源生成的圖像。任務命令的參數支持模板化,所以任務的定義是常量,參數的值能夠在運行時更改。
TaskRun 將輸入和輸出綁定到已定義的 PipelineResources
值,除了執行任務步驟外,還將值設置爲用於模板化的參數。
inputs
和outputs
應當不限制死必須叫這兩個名字,只要是能支持參數就好。好比定義一個叫build
的資源去指定 docker build 的鏡像:
Task 裏:
我是以爲須要能進行這樣的擴展了, 僅是 inputs 和 outputs 就狹義了。
獲取 pipeline
所有信息:
$ kubectl get build-pipeline
NAME AGE
taskruns/build-docker-image-from-git-source-task-run 30s
NAME AGE
pipelineresources/skaffold-git 6m
pipelineresources/skaffold-image-leeroy-web 7m
NAME AGE
tasks/build-docker-image-from-git-source 7m
要查看 TaskRun
的輸出,請使用如下命令:
類型的狀態 Succeeded = True
顯示 Task 已成功運行,你還能夠驗證 Docker 鏡像是否生成。
Pipeline
Pipeline
定義要按順序執行的任務列表,同時還經過使用該 from
字段指示是否應將任何輸出用做後續任務的輸入,並指示執行的順序(使用 runAfter
和 from
字段)。你在任務中使用的相同模板也能夠在管道中使用。
以上 Pipeline 是引用一個 Task deploy-using-kubectl
:
要運行 Pipeline,請建立 PipelineRun
以下:
執行與查看 pipeline:
$ kubectl apply -f < name-of-file.yaml >
$ kubectl get pipelineruns tutorial-pipeline-run-1 -o yaml
初學者會以爲有點繞,可是這種設計也是爲了解耦合,我我的以爲優劣以下:
優點:
能夠把k8s集羣做爲任務執行引擎,這樣能夠更好的利用資源,好比把線上夜間閒置資源用來跑任務,構建鏡像 離線分析 甚至機器學習。
解耦作的比較好,任務模板能夠拿來複用,而不須要你們都去重複定義。
輸入輸出理念,一個任務的輸入做爲另個任務的輸出不錯
劣勢:
有點過分設計,一些簡單的場景可能以爲配置起來有點繞了。
輸入輸出依賴分佈式系統,對比
drone
一個 pipeline 中的容器是共享了一個數據卷的,這樣上個任務產生的文件很方便的給下個任務用,而基於集羣的任務就可能得依賴 git docker 鏡像倉庫等作輸入輸出,有點麻煩,好的解決辦法是利用 k8s 分佈試存儲給 pipeline 設置一個共享卷,方便任務間傳輸數據。
整體來講路子是對的,並且仍是有不少場景能夠用的。
雲原生是一種信仰 🤘
掃碼關注公衆號
回覆 「電子書」下載 Kubernetes 指南
點擊 "閱讀原文" 獲取更多資源!
❤️ 給個 「在看」 ,是對我最大的支持❤️
本文分享自微信公衆號 - 雲原生實驗室(cloud_native_yang)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。