做者 | 鄧洪超,阿里雲容器平臺工程師, Kubernetes Operator 第二人,雲原生應用標準交付與管理領域知名技術專家前端
導讀:近年來,愈來愈多專門給 Kubernetes 作應用發佈的工具開始繽紛呈現,幫助你們管理和發佈不斷增多的 Kubernetes 應用。在作技術選型的時候,咱們須要給業務選擇一個最好的工具、最穩的底座。那麼又該如何比較和衡量這些工具呢?本篇文章中阿里雲技術專家鄧洪超將會和你們分享本身獨特的體驗,幫助讀者初步瞭解 Tekton 項目。git
近年來,伴隨着雲原生社區 (CNCF Community) 的迅猛發展,愈來愈多的應用跑在了 K8s 上。慢慢地,你們的關注點也逐漸從資源層轉移到應用層。一方面,咱們看到在有愈來愈多新的 K8s Operators 出現,用來自動化應用的部署和運維。另外一方面,隨着各路大型雲廠商入場,K8s 服務之後就會像家裏的水和電同樣爲所欲爲可用,本身再去動手搭建已經沒有了意義。因而人們提出了「K8s 將會消失」,這其實指的是以 k8s 爲底座來面向全世界任何一個雲以及數據中心交付應用,會是接下來的必然趨勢。關於這個趨勢,咱們團隊的同窗專門寫過一篇關於《K8s 多集羣/多雲技術與發展》的文章,歡迎你們進一步閱讀。架構
相關連接:app
基於 k8s 作應用發佈的工具,咱們有着許多選擇,其中不乏業界知名項目 Jenkins X、Spinnaker,也有創業公司出來的小工具好比 Argo Rollout。不過在這其中,咱們團隊如今主要使用的是 Tekton。這裏也有個重要的背景,那就是咱們團隊要面向多雲/多集羣交付的,是複雜有狀態的阿里巴巴中間件應用。這因素我立刻會詳細介紹到。框架
可能還有部分同窗還不瞭解 Tekton 項目是什麼?這裏我先簡單介紹下。Tekton 是一款 k8s 原生的應用發佈框架,主要用來構建 CI/CD 系統。它本來是 knative 項目裏面一個叫作 build-pipeline 的子項目,用來做爲 knative-build 的下一代引擎。然而,隨着 k8s 社區裏各類各樣的需求涌入,這個子項目慢慢成長爲一個通用的框架,可以提供靈活強大的能力去作基於 k8s 的構建發佈。運維
可能很多同窗會感到疑惑,有這麼多功能豐富、聲名遠揚的項目,爲何咱們選擇了灰姑娘般的 Tekton?客官別急,容咱們先來梳理一下這個平臺底座的要求:ide
接下來咱們在幾個候選項目之間作比較:工具
能夠看到,Tekton 在靈活實現定製化功能、K8s 原生性、以及社區裏的受歡迎程度等方面能夠說仍是優點明顯的。這也是爲何,咱們團隊在負責阿里中間件複雜有狀態應用的交付工做時,選擇了在 Tekton 之上構建應用交付體系。ui
接下來咱們將分享使用 Tekton 自動化應用發佈的實踐案例。阿里雲
一個基於 Tekton 的應用發佈平臺的架構以下:
這裏的流程大體是:
Tekton CD 裏的操做具體分爲如下幾種狀況:
接下來,咱們看一個建立應用的簡單例子:
這個例子裏面咱們生成了一個 Tekton Pipeline。運行這個 pipeline 就能夠將應用發佈到 K8s 集羣上。
用戶操做的邊界就是 Git,以後全部流程都是自動化的。那麼整個過程當中用戶怎麼獲得反饋信息呢?這裏主要有:
上面給你們介紹了 Tekton 項目的基本原理、以及使用 Tekton 作底座進行應用發佈的主要流程。在這裏總結一些經驗體會:
另外,Tekton 2019 發展規劃中還包括了 conditional execution, cancelling or pausing a workflow, resuming a paused or failed workflow, enforcing timeouts on Tasks and Pipelines 等功能。站在巨人的肩膀上,將來的應用發佈平臺將會更增強大。