日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于 K8s 做应用发布的工具那么多, 阿里为啥选择灰姑娘般的 Tekton ?

發(fā)布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于 K8s 做应用发布的工具那么多, 阿里为啥选择灰姑娘般的 Tekton ? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


作者 | 鄧洪超,阿里云容器平臺工程師, Kubernetes Operator 第二人,云原生應(yīng)用標(biāo)準(zhǔn)交付與管理領(lǐng)域知名技術(shù)專家

導(dǎo)讀:近年來,越來越多專門給 Kubernetes 做應(yīng)用發(fā)布的工具開始繽紛呈現(xiàn),幫助大家管理和發(fā)布不斷增多的 Kubernetes 應(yīng)用。在做技術(shù)選型的時候,我們需要給業(yè)務(wù)選擇一個最好的工具、最穩(wěn)的底座。那么又該如何比較和衡量這些工具呢?本篇文章中阿里云技術(shù)專家鄧洪超將會和大家分享自己獨特的體驗,幫助讀者初步了解 Tekton 項目。

背景

近年來,伴隨著云原生社區(qū) (CNCF Community) 的迅猛發(fā)展,越來越多的應(yīng)用跑在了 K8s 上。慢慢地,大家的關(guān)注點也逐漸從資源層轉(zhuǎn)移到應(yīng)用層。一方面,我們看到在有越來越多新的 K8s Operators 出現(xiàn),用來自動化應(yīng)用的部署和運維。另一方面,隨著各路大型云廠商入場,K8s 服務(wù)以后就會像家里的水和電一樣隨心所欲可用,自己再去動手搭建已經(jīng)沒有了意義。于是人們提出了“K8s 將會消失”,這其實指的是以 k8s 為底座來面向全世界任何一個云以及數(shù)據(jù)中心交付應(yīng)用,會是接下來的必然趨勢。關(guān)于這個趨勢,我們團(tuán)隊的同學(xué)專門寫過一篇關(guān)于《K8s 多集群/多云技術(shù)與發(fā)展》的文章,歡迎大家進(jìn)一步閱讀。

相關(guān)鏈接:

  • Why Kubernetes will disappear: https://levelup.gitconnected.com/why-kubernetes-will-disappear-10ffcfb39f01
  • 云原生時代, Kubernetes 多集群架構(gòu)初探: https://www.infoq.cn/article/sbwSX8ypxgID2-SB723K

Tekton 項目有什么特殊之處?

基于 k8s 做應(yīng)用發(fā)布的工具,我們有著許多選擇,其中不乏業(yè)界知名項目 Jenkins X、Spinnaker,也有創(chuàng)業(yè)公司出來的小工具比如 Argo Rollout。不過在這其中,我們團(tuán)隊現(xiàn)在主要使用的是 Tekton。這里也有個重要的背景,那就是我們團(tuán)隊要面向多云/多集群交付的,是復(fù)雜有狀態(tài)的阿里巴巴中間件應(yīng)用。這因素我馬上會詳細(xì)介紹到。

可能還有部分同學(xué)還不了解 Tekton 項目是什么?這里我先簡單介紹下。Tekton 是一款 k8s 原生的應(yīng)用發(fā)布框架,主要用來構(gòu)建 CI/CD 系統(tǒng)。它原本是 knative 項目里面一個叫做 build-pipeline 的子項目,用來作為 knative-build 的下一代引擎。然而,隨著 k8s 社區(qū)里各種各樣的需求涌入,這個子項目慢慢成長為一個通用的框架,能夠提供靈活強大的能力去做基于 k8s 的構(gòu)建發(fā)布。

可能不少同學(xué)會感到疑惑,有這么多功能豐富、聲名遠(yuǎn)揚的項目,為什么我們選擇了灰姑娘般的 Tekton?客官別急,容我們先來梳理一下這個平臺底座的要求:

  • K8s 原生:流程和概念,尤其是面向用戶的部分,需要融入到 k8s 體系中。此外,最好能跟生態(tài)里的其他工具互相連通,成為生態(tài)的一環(huán)。
    • 舉個例子:Spinnaker 這個項目是很強大的,但它的設(shè)計初衷,是面向公有云進(jìn)行應(yīng)用交付用的(以虛擬機為運行時),Kubernetes 只是它所支持的一種 Provider,并且 Provider 還得用 Groovy 寫集成插件。這就使得它跟 K8s 的協(xié)作是比較別扭的。
  • 靈活擴展:基本上所有工具都不能夠滿足我們復(fù)雜多變的業(yè)務(wù)需求。這些工具架構(gòu)本身需要提供足夠靈活的擴展性,來快速定制實現(xiàn)所需功能。
    • 舉個例子:Argo Rollout 本身的應(yīng)用發(fā)布,是跟 K8s 的 Workload (比如 Deployment )耦合在一起的。這就不是一個很具備擴展性的做法。最簡單的例子:對于復(fù)雜有狀態(tài)應(yīng)用來說,大多都是用 Operator 或者 OpenKruise 管理的,這時候 Argo Rollout 該怎么辦呢?
  • 輕量級:工具本身不能做得“太重”,即不能有太多的組件或太多的概念。小而輕的項目初期易上手、中期易交付、后期易維護(hù)。
    • 舉個例子:Spinnaker 雖然功能強大,但是這也就意味著它把所有的事情都幫你做了。而我們團(tuán)隊要發(fā)布的應(yīng)用是復(fù)雜有狀態(tài)的中間件應(yīng)用, 是需要我們寫自己的 Rollout Controller 來控制發(fā)布流程的。這個要基于 Spinnaker 來做,還得大量做二次開發(fā)了,于是原有的眾多功能和組件反而成了負(fù)擔(dān)。
  • 白盒化:運行中的管道、步驟等需要“白盒化”,即對外暴露狀態(tài)。這樣才能跟前端工具聯(lián)通,給用戶展示實時狀態(tài)信息。
    • 舉個例子:Tekton 其實只提供 Pipeline 這個一個功能,Pipeline 會被直接映射成 K8s Pod 等 API 資源。而比如應(yīng)用發(fā)布過程的控制,灰度和上線策略,都是我們自己編寫 K8s Controller 來實現(xiàn)的,這個可控度其實是我們比較喜歡的。另外,這種設(shè)計,也就意味著 Tekton 不會在K8s 上蓋一個”大帽子“,比如我們想看發(fā)布狀態(tài)、日志,就等是直接通過 K8s 查看這個 Pipeline 對應(yīng)的 Pod 的狀態(tài)和日志,不需要再面對另外一個 API。

    接下來我們在幾個候選項目之間做比較:

    可以看到,Tekton 在靈活實現(xiàn)定制化功能、K8s 原生性、以及社區(qū)里的受歡迎程度等方面可以說還是優(yōu)勢明顯的。這也是為什么,我們團(tuán)隊在負(fù)責(zé)阿里中間件復(fù)雜有狀態(tài)應(yīng)用的交付工作時,選擇了在 Tekton 之上構(gòu)建應(yīng)用交付體系。

    實踐案例:使用 Tekton 自動化應(yīng)用發(fā)布

    接下來我們將分享使用 Tekton 自動化應(yīng)用發(fā)布的實踐案例。

    一個基于 Tekton 的應(yīng)用發(fā)布平臺的架構(gòu)如下:

    這里的流程大致是:

  • 用戶把需要部署的應(yīng)用先按照一套標(biāo)準(zhǔn)的應(yīng)用定義寫成 YAML 文件(類似 Helm Chart);
  • 用戶把應(yīng)用定義 YAML 推送到 Git 倉庫里;
  • Tekton CD (一個 K8s Operator) 會監(jiān)聽到相應(yīng)的改動,根據(jù)不同條件生成不同的 Tekton Pipelines;
  • Tekton CD 里的操作具體分為以下幾種情況:

    • 如果 Git 改動里有一個應(yīng)用 YAML 且該應(yīng)用不存在,那么將渲染和生成 Tekton Pipelines 用來創(chuàng)建應(yīng)用。
    • 如果 Git 改動里有一個應(yīng)用 YAML 且該應(yīng)用存在,那么將渲染和生成 Tekton Pipelines 用來升級應(yīng)用。這里我們會根據(jù)應(yīng)用定義 YAML 里的策略來做升級,比如做金絲雀發(fā)布、灰度升級。
    • 如果 Git 改動里有一個應(yīng)用 YAML 且該應(yīng)用存在且標(biāo)記了“被刪除”,那么將渲染和生成 Tekton Pipelines 用來刪除應(yīng)用。確認(rèn)應(yīng)用被刪除后,我們才從 Git 里刪除這個應(yīng)用的 YAML。

    接下來,我們看一個創(chuàng)建應(yīng)用的簡單例子:

    這個例子里面我們生成了一個 Tekton Pipeline。運行這個 pipeline 就可以將應(yīng)用發(fā)布到 K8s 集群上。

    用戶操作的邊界就是 Git,之后所有流程都是自動化的。那么整個過程中用戶怎么得到反饋信息呢?這里主要有:

    • 過程狀態(tài):Tekton Pipeline 本身就是 K8s API object,我們通過匯總 Status 將過程狀態(tài)信息透出給前端。
    • 日志和監(jiān)控:由于 Tekton Pipeline 啟動的都是 K8s Pod,我們可以復(fù)用原有的基礎(chǔ)設(shè)施去收集,然后做一遍匯總。

    經(jīng)驗總結(jié)

    上面給大家介紹了 Tekton 項目的基本原理、以及使用 Tekton 做底座進(jìn)行應(yīng)用發(fā)布的主要流程。在這里總結(jié)一些經(jīng)驗體會:

  • 復(fù)用開源技術(shù)。少去做造輪子的事情就意味著能夠多專注更具價值的事情;
  • 不要只著眼于眼前的需求,還要關(guān)注定制化和擴展性,多考慮未來的場景;
  • K8s 應(yīng)用層接下來將會加速發(fā)展。幫助開發(fā)者在 k8s 上更好地開發(fā)、部署、管理應(yīng)用,把相關(guān)流程標(biāo)準(zhǔn)化,是未來的重要趨勢。
  • 另外,Tekton 2019 發(fā)展規(guī)劃中還包括了 conditional execution, cancelling or pausing a workflow, resuming a paused or failed workflow, enforcing timeouts on Tasks and Pipelines 等功能。站在巨人的肩膀上,未來的應(yīng)用發(fā)布平臺將會更加強大。

    《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的基于 K8s 做应用发布的工具那么多, 阿里为啥选择灰姑娘般的 Tekton ?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。