久久国产乱子伦精品免费观看_亚洲欧美日韩综合在线丁香_欧 美 成 人 网站在线观看_最新欧美电影免费在线_国产精品操干在线观看_最近中文字幕在线视频1_69天堂人成无码_国产影视一区二区三区_中文亚洲精油按摩色偷偷av_99自拍偷拍视频

您當(dāng)前的位置:首頁 > 新聞中心 > 行業(yè)新聞
選型必看:Kubernetes 應(yīng)用程序部署工具應(yīng)該選哪些? 2021年07月28日
 將應(yīng)用程序部署到 Kubernetes 比較簡單,但要進行大型項目管理實現(xiàn)配置自動化就相對復(fù)雜了,本文介紹了 Kubernetes 應(yīng)用程序生命周期管理的各個階段可能會使用的一些工具(主流非主流的都有),而且通過標(biāo)注各項目背后的投資大佬,給大家提供一種選擇的決策依據(jù)。

將應(yīng)用程序部署到 Kubernetes 非常簡單,只需要用 yaml 或 json 編寫一些資源定義并將它們應(yīng)用到 kubectl 中就可以了,但要實現(xiàn)配置自動化就相對復(fù)雜了。

在應(yīng)用程序部署中,一個比較流行的做法是將持續(xù)部署和 GitOps 結(jié)合使用:每次對源代碼進行更改后,資源都會自動部署。如果想要使用 GitOps 將應(yīng)用程序部署到 Kubernetes,需要經(jīng)歷以下過程:

容器映像構(gòu)建, 將源代碼和本地依賴關(guān)系構(gòu)建到容器映像中。

資源模板, 為環(huán)境定制部署資源的資源模板。

包管理, 將多個資源捆綁到版本發(fā)布中,并管理包依賴關(guān)系。

持續(xù)部署, 通常通過一系列操作和步驟,對環(huán)境進行更改。

命令式部署, 以編程方式管理復(fù)雜的服務(wù)生命周期,并減少手動或簡單的腳本化步驟。

自動縮放, 根據(jù)資源使用情況和消耗情況,自動縮放來管理應(yīng)用程序的響應(yīng)和資源分配。

在本文中,我介紹了 Kubernetes 應(yīng)用程序生命周期管理的各個階段可能會使用的一些工具(主流非主流的都有)。由于很難客觀地判斷工具的流行性和成熟度, 因此我對這些工具進行了注釋,說明了哪些大型公司對這些項目進行了投資,供你參考判斷。不過請記住,大公司對一個項目通??赡軙龆鄠€競爭性投資,因此,僅僅因為項目擁有一位知名的投資者,并不能得出它可以長期生存和發(fā)展的結(jié)論。

希望此列表可以在你尋找應(yīng)用程序部署問題解決方案時提供一些幫助。

1 容器鏡像構(gòu)建

Moby /buildkit (Docker) ——用于將源代碼轉(zhuǎn)換為構(gòu)建工件的工具包。

kaniko(Google)—— 在容器或 Kubernetes 集群中從 Dockerfile 構(gòu)建容器映像的工具。

img(Jess Frazelle) ——一個獨立的,沒有守護進程,非特權(quán)模式的 Dockerfile 和 OCI 兼容的容器映像構(gòu)建器。

buildah (IBM/Red Hat)——用于構(gòu)建開放式容器計劃 (OCI) 容器映像的工具。

Source-To-Image(IBM/Red Hat)——用于從源構(gòu)建工件并注入容器映像的工具。

Tanzu Build Service/kpack /pack (VMware/Pivotal) ——使用 Cloud Native Buildpacks 構(gòu)建應(yīng)用程序的 CLI 和服務(wù)。

Carvel /kbld (VMware/Pivotal)——用于構(gòu)建映像并將其推入開發(fā)和部署工作流的服務(wù)。

Google Cloud Buildpacks(Google)——為運行在谷歌云的容器平臺而設(shè)計的構(gòu)建器和構(gòu)建包。

Makisu (Uber) ——快速而靈活的 Docker 鏡像構(gòu)建工具,可以在 Mesos 和 Kubernetes 等非特權(quán)的容器環(huán)境中工作。

2 資源模板

Helm(Microsoft, Google) ——Kubernetes 包管理器。

Kustomize(Google, Apple)——用于定制原始的、無模板的 YAML 文件的 CLI,使原始的 YAML 保持原樣并保持可用。

Carvel /ytt (VMware/Pivotal)——基于 YAML 結(jié)構(gòu)的 YAML 模板工具。

jsonnet/go-jsonnet(Google) ——JSON 模板語言。

gomplate(Dave Henderson) ——用于 golang 模板渲染的 CLI,支持本地和遠程數(shù)據(jù)源。

Mustache (Github) ——與框架無關(guān)的 JSON 模板引擎。

3 包管理

Helm(Microsoft, Google) ——一個 Kubernetes 包管理器。

Cloud Native Application Bundles (CNAB)/Porter/Duffle(Microsoft/Deis, Docker)——這是一個用于管理云無關(guān)的分布式應(yīng)用程序的包格式規(guī)范、打包器和安裝程序。

4 持續(xù)部署

Spinnaker(Netflix, Google) ——多云持續(xù)交付平臺,用于快速高質(zhì)量迭代發(fā)布軟件變更。

Terraform Kubernetes Provider (Hashicorp) ——一個 Terraform 插件,支持 Kubernetes 資源的完整生命周期管理。

Concourse (VMware/Pivotal)——一個基于容器的連續(xù)事務(wù)處理程序,用 Go 和 Elm 編寫。

JenkinsX(CloudBees)—— 用于 Kubernetes 的自動化 CI / CD,提供使用 Tekton、Knative、Lighthouse、Skaffold 和 Helm 的 pull 請求預(yù)覽環(huán)境

Argo CD(Intuit)—— 用于 Kubernetes 的高效 GitOps 持續(xù)交付工具。

Tekton/Tekton Pipelines(Google) ——一個 Kubernetes 控制器, 提供 CI / CD 樣式的管道資源。

Cloud Build(Google)——在谷歌云平臺基礎(chǔ)設(shè)施上執(zhí)行構(gòu)建的服務(wù)。

Skaffold(Google)——促進 Kubernetes 應(yīng)用程序持續(xù)開發(fā)的 CLI。

Azure DevOps/Azure Pipelines(Microsoft) ——一種云服務(wù),它可以自動構(gòu)建和測試項目的代碼,并將其提供給其他用戶。

Brigade(Microsoft) —— Kubernetes 的基于事件的腳本。

Habitat/habitat-operator(Chef) ——Kubernetes 控制器,在 Kubernetes 上運行和管理 Habitat 服務(wù)。

gitkube(Hasura) ——使用 git push 在 Kubernetes 上構(gòu)建和部署 Docker 鏡像的工具。

5 命令式部署

Kubebuilder(CNCF, Google, Apple, IBM/Red Hat) ——用于使用 CRD 構(gòu)建 Kubernetes API(以及控制器和操作符) 的 SDK。

Operator Framework/Operator SDK(IBM/Red Hat/CoreOS) ——用于構(gòu)建 Kubernetes 應(yīng)用程序操作符的 SDK。

KUDO(D2IQ) ——使用聲明式方法構(gòu)建生產(chǎn)級 Kubernetes 操作符的框架。

Pulumi(Pulumi)——可以作為代碼 SDK 的基礎(chǔ)設(shè)施,用于在各種云上創(chuàng)建和部署使用容器、無服務(wù)器功能、托管服務(wù)和基礎(chǔ)架構(gòu)的云軟件。

Carvel/kapp/kapp-controller(VMware/Pivotal)——CLI 和 Kubernetes 控制器,用于安裝應(yīng)用程序 CRD 所描述的配置 (helm 圖表, ytt 模板,yaml 文件)。

Isopod(Cruise)——在沒有 YAML 的情況下,用于 Kubernetes 資源配置的表達性 DSL 和框架。

6 自動縮放

Horizontal Pod Autoscaler(built-in)—— Kubernetes 控制器,它根據(jù)配置的指標(biāo)自動伸縮復(fù)制控制器、部署、復(fù)制集或有狀態(tài)集中的 Pods 數(shù)量。

Vertical Pod Autoscaler(Google)——一組 Kubernetes 組件,自動調(diào)整運行在 Kubernetes 集群中的 pods 請求的 CPU 和內(nèi)存數(shù)量。

Addon Resizer(Google) ——垂直 Pod 自動調(diào)用器的簡化版本,它根據(jù) Kubernetes 集群中的節(jié)點數(shù)量修改部署的資源請求。

KEDA(Microsoft)——一個基于 kubernet 的事件驅(qū)動的自動縮放組件。

Watermark Pod Autoscaler Controller(DataDog) ——擴展了 Horizontal Pod Autoscaler (HPA) 的自定義控制器。

Pangolin(Damian Peckett)—— 針對 Kubernetes 的一個增強的 Horizontal Pod Autoscaler,它基于 Prometheus 指標(biāo)來擴展部署,使用各種高度可配置的控制策略。

Predictive Horizontal Pod Autoscaler(IBM) —— 自定義 Pod Autoscaler,類似于 Horizontal Pod Autoscaler,但是添加了預(yù)測元素。

Horizontal Pod Autoscaler Operator(Banzai Cloud)——Kubernetes 控制器,它監(jiān)視部署或狀態(tài)集,并基于 autoscale 注釋自動創(chuàng)建 Horizontal Pod Autoscaler 資源。

7 寫在最后

正如 DevOps 倡導(dǎo)者宣揚的那樣:這與工具無關(guān),而與觀念有關(guān)。沒有一個工具能給你帶來讓你興奮的全生命周期端到端管理體驗,因為每種工具都有他們自己的工具組合,通過與腳本和集成代碼配合完成工作。

你可以找到能夠很好地完成一件事情的工具,易于替換和擴展,也可以選擇為你提供最大性價比的工具,讓你更容易對項目進行管理,集成成本也更低,同時還擁有較好的端到端用戶體驗。以上的選擇都沒有什么錯。

權(quán)衡這些因素后,你還需要看看這些項目背后的大佬,它是哪家公司投資的、項目的流行度如何?那些擁有大型公司或者有著多樣化投資者的主流工具更具有持續(xù)成長性。不然,你選擇后,項目不更新或者被拋棄了,那你只能花自己的時間和精力來維護這些工具了。

 


分享到:

最熱資訊

熱門標(biāo)簽