6大容器管道對比:Heroku,Azure DevOps,Beanstalk,Gitlab CI/CD和JenkinsX對比

在本文中,我們將會討論六個容器管道的優缺點,包括Heroku,Azure DevOps,Beanstalk,Gitlab CI/CD,JenkinsX。

01 前言

容器能夠使團隊以前所未有的速度部署交付應用代碼,從而爲DevOps帶來了巨大的便利。但是,我們仍然需要對容器進行構建,打包和部署。爲了完成它,我們就需要使用容器管道。

在容器管道方面有許多不同的選擇。我們如何知道要使用哪個?在本文中,我們將比較Heroku,Azure DevOps,Beanstalk,Gitlab CI/CD,JenkinsX,並介紹下每個容器管道的配置,優勢,限制和費用。

什麼是容器管道?

首先,讓我們討論一下容器管道的真正含義。管道有助於軟件開發過程中的各個階段趨於自動化,尤其是持續集成和持續交付(CI/CD)。容器管道使的容器部署過程中的每個階段自動化,從構建鏡像到部署生產環境。通常,整個容器管道包括三個階段:

1.集成:代碼提交,從而觸發構建和單元測試。

2.驗收測試:將容器部署到測試環境並驗證其功能。

3.部署:將經過全面測試的最終鏡像部署到生產中。

02 容器管道對比

1

Heroku

Heroku 是基於Docker的容器管道。你可以在同一平臺上構建,測試,驗證和部署容器,而無需配置硬件或利用其他的服務提供商。

配置

Heroku應用程序使用heroku.yml清單進行配置,該清單定義了構建和部署容器所需的步驟。如下所示:
1

build: docker: web: Dockerfile

如果使用Git部署容器,只需運行:
1

$ heroku stack:set container$ git add heroku.yml$ git commit -m "Add heroku.yml"$ git push heroku master



Heroku也支持管道,使你可以將容器部署到多個環境,並可以體現交付工作流程中的各個階段的執行步驟。

好處和侷限性

Heroku非常易於使用,整個管道只需要一個YAML文件。它可以受到完全管理,爲測試和部署提供了多種環境,甚至在部署不當的情況下,還可以回滾更改。

但是,並非所有Heroku的功能都支持Docker部署。例如,你不能使用Heroku CI來運行應用程序的測試組件,這意味着要麼在構建鏡像時運行測試組件,要麼使用多階段構建。你也不能使用 pipeline promotions 將容器從一個管道階段升級到下一個階段。相反,你必須將容器重新部署,以達到目標階段。

費用

Heroku 提供了一項免費計劃,一個Web dyno和一個worker dyno每月有1,000小時的免費運行時間。付費計劃的起價爲每月每個dyno 7美元,並提供其他功能,例如更大容量的dynos和已改進的可伸縮性。有關更多信息,請參見Heroku的定價頁面。

個人觀點

Heroku是一個非常簡單且經濟高效的容器管道解決方案。它提供了完全託管的環境,使你可以完全控制CI/CD流程。有免費標準支持,值得嘗試。

2 Azure DevOps

Azure DevOps是Microsoft的用於項目管理,源代碼管理(SCM)和CI/CD的服務。它使你可以控制DevOps生命週期的幾乎每個階段,同時提供容器許多的高級功能,包括私有容器註冊以及與Azure Kubernetes Service(AKS)的集成。Azure Pipelines提供了平臺的CI/CD服務。

配置

可以使用Web界面來管理所有Azure DevOps,也可以使用YAML文件來配置Azure Pipelines。Web UI使你可以管理和跟蹤部署環境以及發行版等。

好處和侷限性

如果你的團隊已經使用Azure,那麼Azure DevOps是你現有工作流程的自然擴展。它支持託管和本地安裝,還支持許多Azure部署,包括Azure App Service,Kubernetes和Azure Functions。

但是,與其他服務(包括Azure服務)集成並非易事。在Azure DevOps中,即使你使用Azure容器註冊之類的服務,也需要你複製和粘貼值,使得設置變得困難。

費用

Azure Pipelines提供了一個免費服務,其中包含一個免費的併發CI/CD作業,每月1800分鐘。額外的工作費用爲40美元,託管(如鏡像)的費用爲每月每GB 2美元。若要了解更多信息,請訪問Azure DevOps Services定價頁面。

個人觀點

Azure DevOps非常適合需要一體化DevOps解決方案,或已經使用Azure的團隊。通過將其集中在一個位置中,極大地簡化了開發生命週期。但是,建立起來可能很困難,並且對於只需要基本容器管道的團隊來說可能過於複雜。

3 GitLab CI/CD

GitLab 從開源SCM開始,但很快發展成爲完整的DevOps解決方案。與Azure DevOps一樣,它提供的功能包括項目管理,私有容器註冊和構建環境(包括Kubernetes)。

配置

GitLab CI/CD由GitLab Runner驅動,在自包含的環境中執行CI/CD管道中的每個步驟。可以通過gitlab-ci.yml清單完成CI/CD配置,該清單支持一些高級配置,包括邏輯條件運算和導入其他清單。

或者,你可以使用Auto DevOps無需配置即可自動化整個管道。GitLab使用Heroku buildpacks(通過Herokuish)基於源代碼(在本例中爲Dockerfile)自動構建應用程序。Auto DevOps可以自動運行單元測試,執行代碼質量分析以及掃描鏡像以查看安全性問題。

對於部署,GitLab使用dpl工具,該工具支持各種提供商,包括雲平臺和Kubernetes集羣。

好處和侷限性

GitLab提供了非常靈活的管道,你可以自行配置,也可以使用內置工具實現完全自動化。YAML配置可以更爲靈活,例如創建項目依賴項以及組合來自不同項目的多個管道。由於GitLab使用現有的開源工具,例如Herokuish和dpl,因此它支持很多的項目類型,開發語言和應用部署。

儘管GitLab可以將Runners部署到現有環境中,但它本身無法維護這些環境(Google Kubernetes Engine和Amazon Elastic Kubernetes Service除外)。它還缺少像Azure Pipelines圖形化的管道配置工具。

費用

GitLab提供了一個開放源代碼的基本版本和一個具有附加功能的企業付費版。對於付費計劃,定價基於用戶數量,每月運行CI管道所花費的分鐘數以及對某些功能的訪問權限來劃分。所有計劃都包括無限容量的代碼存儲庫,項目計劃工具以及每月2,000分鐘的免費管道分鐘。價格從每位用戶每月4美元到每位用戶每月99美元不等。

個人觀點

GitLab是一種功能強大的CI/CD工具,具有極爲有用的功能。開源版本功能豐富,足以與許多商業選擇競爭,同時還讓你自託管。但是,它確實需要你維護單獨的部署環境。

4 AWS Elastic Beanstalk

Elastic Beanstalk不僅僅是管道,還可以用於編排AWS資源的工具。它可以自動設置,負載均衡,擴展和監視資源,例如ECS容器,S3存儲桶和EC2實例。這使你可以根據自己的特定需求在AWS內創建一個完全自定義的管道。

配置

Beanstalk配置描述瞭如何部署容器以及部署該容器的環境。這是在Dockerrun.aws.json文件中定義的。Beanstalk引入了獨特的概念,例如:

◾應用程序:Beanstalk組件(如環境和版本)的邏輯集合。

◾應用程序版本:代碼部署版本。

◾環境:應用程序運行所需的一組AWS資源。

好處和侷限性

Beanstalk是一個非常強大的工具,不僅適用於Docker,而且適用於AWS。它提供自動伸縮,滾動更新,監控和發佈管理。它還使你可以直接訪問和管理資源。

但是,Beanstalk比普通管道更復雜。除非你使用單個容器環境,並且容器版本與環境緊密耦合,否則你需要在鏡像倉庫中預構建和託管Docker鏡像。你只能通過Beanstalk CLI觸發更新。因此,如果容器失敗,則需要使用Beanstalk控制檯手動解決它。

費用

Beanstalk本身是免費的,但是它提供的AWS組件按正常價格定價。例如,如果你使用ECS節點和ELB負載平衡器配置環境,則將向該節點和負載平衡器收費,就像你正常配置它們一樣。

個人觀點

有了大量可用的AWS服務,Beanstalk提供了一種管理所有服務的好方法。當用作編排工具時,它可能非常強大,但用作容器管道可能太複雜了。

5 Google Cloud Build

Cloud Build是基於Google Cloud Platform(GCP)構建的容器CI服務。它可以直接從源代碼或Dockerfile構建鏡像,並直接部署到GKE,Cloud Run和其他GCP服務。

配置

Cloud Build是通過cloudbuild.yaml(或JSON)文件配置的。你可以定義構建鏡像的過程以及存儲鏡像的位置。例如,構建Docker鏡像並將其推送到Google Container Registry就像運行以下命令一樣簡單:
1

name: gcr.io/cloud-builders/dockerargs: ['build', '-t', 'gcr.io/$PROJECT_ID/myimage', '.']images: ['gcr.io/$PROJECT_ID/myimage']

Cloud Build支持觸發器,觸發器會根據對源代碼的更改自動啓動構建。

好處和侷限性

Cloud Build 與其他GCP服務巧妙地集成在一起,包括GKE,App Engine和Cloud Run。你可以直接控制構建計算機的大小和容量,以及鏡像緩存層以加快構建速度。你還可以運行本地構建以驗證或調試構建,然後再推送到Cloud Run。

由於Cloud Build是圍繞GCP構建的,因此它僅支持有限數量的部署目標。可以將容器部署到其他平臺,但是需要其他步驟。此外,像GitLab一樣,Cloud Build也沒有可視化的管道配置工具。

費用

定價基於構建機器的大小和構建時間。標準n1-standard-1實例每構建分鐘的成本爲0.003美元,在n1-highcpu-32實例上最高爲0.064美元。在n1-standard-1實例上,你每天還可以獲得120分鐘的免費構建時間。

個人觀點

Cloud Build相對簡單,但這也是其優勢之一。它快速,易學,相當便宜,並且與其他GCP服務良好集成。如果你已經有一個部署環境,或者已經使用了GCP,建議你嘗試一下。

6 Jenkins X

Jenkins是最流行的CI/CD工具之一,Jenkins X通過添加全面的Kubernetes集成進一步擴展了它。Jenkins X不僅可以部署到Kubernetes,還可以爲你配置和管理Kubernetes集羣。

配置

Jenkins X Pipelines建立在Tekton Pipelines之上,該管道有助於在Kubernetes上運行CI/CD管道。你可以使用jenkins-x.yml文件配置管道。Jenkins X還提供了構建包,可以幫助將源代碼打包到鏡像中,然後將其部署到Kubernetes。

好處和侷限性

Jenkins X利用兩個流行的現有項目-Jenkins和Kubernetes-創建可擴展的CI/CD平臺。它可以使整個CI/CD管道自動化,並支持預覽環境和管道昇級。因爲它包括Jenkins,所以它可以訪問Jenkins開發人員的整個社區。

但是,Jenkins X需要Kubernetes,對於如何配置集羣有一定的規範。命令行工具可自動執行此過程的大部分操作。

費用

Jenkins X是開源的。

個人觀點

對於使用Jenkins的團隊來說,Jenkins X會感覺很自然。它有一些嚴格的限制和要求,但是對於使用Kubernetes的團隊來說,擁有可以與你的基礎架構集成的工具可能會有所幫助。

03 結論
 

PIC1.png



對於希望在穩定的環境中簡單地部署和託管Docker容器的團隊而言,Heroku很難被擊敗。它提供了一個快速且可配置的平臺,支持廣泛的集成,並擁有龐大的第三方附件市場。

Elastic Beanstalk憑藉其協調AWS資源的能力緊隨其後,並且支持很多複雜場景。

對於容器CI,GitLab可以說是最全面的選擇,它具擁有很多功能。

Google Cloud Build利用Google Cloud Platform的速度和容量進行快速構建,並且Jenkins X受益於Jenkins項目。這些服務大多數都是開源的或提供免費試用,因此我們建議你嘗試一下,看看哪種方法最適合你的工作流程。

譯者:王延飛

來源:K8S中文社區

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章