原文發表于kubernetes中文社區,為作者原創翻譯 ,原文地址
更多kubernetes文章,請多關注kubernetes中文社區
目錄
Kubernetes
Helm
Helm有什么新功能?
Kustomize
Kustomize有什么新功能?
Skaffold
Skaffold有什么新功能?
總結
在過去的幾年中,我們看到了許多工具可以在Kubernetes上簡化軟體開發,隨著Kubernetes生態系統的不斷發展,有些工具會同步改進優化,而有些工具則不能適應最新的需求,在2021年,有哪些工具是我們必須要掌握呢?
在本文中,我將重點介紹Kubernetes中的幾個工具,即:Helm,Kustomize和Skaffold,
Kubernetes
眾所周知,Kubernetes有一種編排應用程式的宣告性方法,你以YAML格式將應用程式的期望狀態寫入組態檔(稱為“清單”),然后將其發送到Kubernetes使其實作,
Helm
Helm 幫助您管理 Kubernetes 應用程式,Helm Charts 幫助您定義、安裝和升級最復雜的 Kubernetes 應用程式,
Helm 可以使用 Charts 啟動 Kubernetes 集群,
Helm是統治之王,是打包,共享和部署k8s應用程式的事實上的標準,Helm被視為是Kubernetes的包管理工具,它允許你以一致且結構化的方式將多個YAML配置分組為一個稱為“chart ”的邏輯軟體包,
對于應用發布者而言,創建Helm Charts 可為你帶來很多好處:
- 你可以通過使用模板或自定義引數,使應用程式具備可配置的特性,
- 你可以通過版本化和可跟蹤的方式將應用程式發布到私有或公共存盤庫中,
- 你可以使你的應用程式依賴于其他Helm chart,依次來管理應用依賴關系 ,
- 總體而言,Helm為你提供了強大的封裝機制,以確保你的應用程式按預期部署,
對于使用者而言,安裝 Helm chart 可以為你提供更多好處:
- 你可以訪問公共chart 以及組織提供的任何私有chart 的存盤庫,
- 你可以基于應用發布者提供的設定來自定義應用程式,
- 你能夠知道程式包的真實版本資訊,
- 你不必擔心Kubernetes規范的復雜性,
- Helm支持原子升級或回滾操作,能夠降低你的應用程式和集群的風險,
- 總體而言,你將獲得一個易于理解并且可以立即使用的應用程式包,
Helm有什么新功能?
在2019年末,我們看到了Helm v3的發布,其中洗掉了集群側組件(Tiller)和許多其他功能,到2020年底,已經不推薦使用Helm v2,大多數公共chart已遷移到v3格式,如果你仍在使用Helm v2,請盡快安排升級,
在最近的幾個發行版中,Helm團隊一直在忙于解決Helm用戶最大的抱怨-使用YAML模板的困難,現在Helm包括一個功能強大的Lint命令,當除錯YAML問題時,它應該是你的新向導,
Post Rendering功能是Helm中的另一個新功能,使你可以使用Kustomize等工具自定義Helm chart ,
2020年chart管理方式,開始向去中心化的的轉變,并推出了兩個用于共享chart的中央存盤庫:
- CNCF的ArtifactHub
- JFrog的ChartCenter
Kustomize
Helm的最大缺點是,應用程式的定制僅限于預先存在的配置選項,不僅如此,chart創建者還必須以某種復雜的模板方式來實作這些自定義選項,這就是Kustomize的用武之地,
Kustomize 是一個獨立的工具,用來通過 kustomization 檔案 定制 Kubernetes 物件,它允許你將Kubernetes應用程式構建為一系列的層和補丁,從而實作無限的自定義,通過使用 Kustomize ,也可以實作對 Kubernetes 物件進行宣告式管理,
從 Kubernetes 1.14 版本開始,kubectl 也開始支持使用 kustomization 檔案來管理 Kubernetes 物件, 要查看包含 kustomization 檔案的目錄中的資源,執行下面的命令:
kubectl kustomize <kustomization_directory>
要應用這些資源,使用引數 --kustomize 或 -k 標志來執行 kubectl apply:
kubectl apply -k <kustomization_directory>
Kustomize是一個功能強大的工具,可讓你以所需的任何方式修改Kubernetes應用程式,不幸的是,這意味著學習曲線可能非常陡峭,任意定制,還意味著錯誤配置應用程式的可能性增加,
Kustomize的一種高級用例,是使用了Helm的Post Rendering功能來完善現有的Helm chart功能 ,從而有望使版本升級變得平滑,
Kustomize有什么新功能?
Kubernetes生態系統中的許多工具都嵌入了Kustomize,最突出的例子是編排和持續部署工具,例如 ArgoCD,Flux和Kubestack,
要知道的是, kubectl內的Kustomize版本缺少大量的增強功能,如果需要這些功能,請考慮使用Kustomize作為獨立的CLI工具,
Skaffold
Skaffold是干啥的?
Google的軟體工程師Nick Kubala解釋說:我們注意到k8s的用戶在構建和管理容器鏡像方面花的時間太長了,需要手動更新k8s清單,即使進行很少的代碼更新都要重新部署一次應用,于是我們就打算開發個工具來自動化完成這些任務,讓用戶可以專注于代碼本身,而不是做這些重復性作業,
Skaffold 是一個命令列工具,有助于 Kubernetes 應用程式的持續開發,
Skaffold遵循DevOps最佳做法,使用Skaffold,你可以方便的將本地代碼部署到kubernetes上進行測驗,通過 skaffold.yaml ,你可以管理專案的構建(build)和部署(deploy)程序,
對于構建,Skaffold可以利用Dockerfiles,Buildpacks,Bazel甚至是自定義腳本,對于部署,Skaffold包含其有限的模板引擎,并且可以呼叫kubectl,Helm或Kustomize,
Skaffold具有三種主要的操作模式:
- skaffold dev-變更代碼自動部署應用,可以隨時監測代碼更改,然后隨時rebuild和redeploy到用戶的集群里,
- skaffold build-這將構建你的應用程式,并將其推送到你選擇的存盤庫中,
- skaffold deploy-這會將你構建的應用程式部署到你選擇的集群中,可能會利用Helm或Kustomize來實作,如果要使用單個命令進行構建和部署,則可以使用skaffold run,
Skaffold有什么新功能?
2020年,Skaffold團隊致力于使該專案更易于適應各種作業流程,并與其他工具實作更高的互操作性,其中的一些改進包括與CI/CD和GitOps更靈活的集成,以及對Python和Java的更好支持,
此外,skaffold debug可以對應用程式進行遠程除錯,盡管這是一個很好的功能,但是在微服務環境中使用它是比較棘手的,我們強烈建議你使用Rookout工具,
總結
在打包,部署和共享的Kubernetes應用程式清單時,可以使用Helm打包,共享和安裝Kubernetes應用程式;使用Kustomize通過補丁來修改現有的Kubernetes應用程式,Skaffold則為應用程式的持續開發提供了便利,
譯文鏈接: https://dzone.com/articles/developer-tooling-for-kubernetes-in-2021-helm-kust
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/278018.html
標籤:AI
上一篇:實踐和原則,哪個更重要?tcp syncookie的問題和解法
下一篇:前端md5加密
