自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

選型必看:Kubernetes 應(yīng)用程序部署工具應(yīng)該選哪些?

新聞 前端
本文介紹了 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ù)成長性。不然,你選擇后,項目不更新或者被拋棄了,那你只能花自己的時間和精力來維護這些工具了。

 

責(zé)任編輯:張燕妮 來源: 架構(gòu)頭條
相關(guān)推薦

2020-12-11 19:06:03

Kubernetes工具應(yīng)用程序

2021-11-02 17:27:40

部署高可用Kubernetes

2015-03-11 09:50:10

2009-08-05 10:16:54

部署ASP.NET應(yīng)用

2015-02-11 09:15:46

云部署嵌套虛擬化PaaS

2010-12-15 16:17:59

服務(wù)部署

2024-03-05 08:00:00

人工智能Kuberneste

2018-06-21 08:16:41

ETL工具數(shù)據(jù)倉庫企業(yè)

2012-07-18 11:29:32

ibmdw

2009-08-27 11:40:43

ibmdw云計算

2018-12-28 14:10:57

開發(fā)工具 移動應(yīng)用

2020-01-03 14:03:46

云計算開發(fā)云原生

2020-09-18 07:00:00

Kubernetes應(yīng)用程序架構(gòu)

2009-06-14 18:06:06

ibmdwWebSphere

2013-01-21 13:39:06

IBMdW

2023-10-25 10:46:56

Radius開源

2019-12-06 14:24:58

Kubernetes容器YAML

2009-12-23 10:29:01

WPF應(yīng)用程序

2014-05-22 10:03:29

2016-03-12 21:46:56

Inspeckage應(yīng)用程序動態(tài)分析
點贊
收藏

51CTO技術(shù)棧公眾號