博客 / 詳情

返回

詳解CloudBees CI,助力Jenkins用户順利遷移並構建高效CI/CD平台

據調查顯示,全球有超過70%的開發者使用Jenkins構建其CI流水線。然而,Jenkins在大規模團隊集中管理、靈活性、插件管理、安全性、團隊統一管理等方面存在明顯的瓶頸與不足,越來越多的團隊轉向Cloudbess CI (Jenkins企業版)。

本篇文章中,龍智技術專家與客户(Jenkins用户)進行了深入的探討,不僅詳細解讀了CloudBees的功能與優勢,還從權限管理、可擴展性、性能、遷移等方面回答了客户最關心的問題,分享了各種注意事項,以幫助Jenkins用户順利遷移,構建更高效、更穩定的CI平台。

*DSD=龍智技術專家,C=某客户

精細化的權限管理

DSD:您現在公司是否有多個事業部?請問您在團隊中擔任何種角色?

C:是的,我們公司有多個業務部門,大家都會使用到Jenkins。我們是公司專門的Jenkins團隊,負責Jenkins的搭建、維護、培訓和權限管理等工作。鑑於Jenkins權限管理的不足,為了防止業務部門隨意創建項目,我們團隊負責項目的創建和添加節點。而具體的業務流水線由各事業部負責。

DSD:CloudBees CI可以有效解決您的權限管理問題。它可以集中管理每個用户在每個Controller(實例)上的權限,實現精細化管理。

C:我們希望控制每個用户訪問哪些資源,以及創建項目和添加節點的權限。同時,每個項目的權限也需要細分控制。如果能滿足這些需求就太好了。

DSD:是的,權限管理至關重要。在CloudBees CI中,有一個Operation Center作為中心節點,您可以在其中定義全局權限、用户組和角色。同時,每個Controller上都可以定義每個實例的細分權限。通過組合這兩種方式,我們可以實現精細、靈活的權限管理,而不需要在每個實例上花費大量時間配置。

C:我們的情況是,每個業務部門有自己的Controller,由該部門管理員管理。能否實現管理員根據不同的小組和目錄劃分項目結構,並管理項目的細分權限?

DSD:可以實現。我們可以通過權限控制將一個團隊限制在一個Controller上,對於其他Controller,他們只能具有隻讀權限,即只能瀏覽不能操作。對於Agent,我們可以指定特定的角色,並授予他們創建Agent的權限,然後將這些角色分配給相應的組和用户。

可輕鬆擴展,無縫遷移

DSD:您打算將CloudBees CI安裝在虛擬機平台上還是Kubernetes(K8s)上呢?

C:我們計劃安裝在Kubernetes(K8s)上。

DSD:好的。在K8s上部署CloudBees能更好地發揮其功能。通過在類似K8s這樣的平台上進行安裝,我們可以採用滾動升級的方式實現零停機的要求。此外,可以通過監控CPU等資源的使用情況來確定是否需要增加新的節點,從而實現節點的彈性伸縮。您也可以手動實現彈性伸縮。

DSD:您公司使用Jenkins的人數是多少,有多少個應用和master?

C:我們實際使用Jenkins的用户大概在200到300人之間,有5個節點。應用方面主要涉及芯片研發和嵌入式開發。

DSD:在節點管理方面,CloudBees具有顯著的優勢。在開源的Jenkins中,缺乏中心管理節點,每個實例都是分散的。而在CloudBees中,有一箇中心管理節點來集中管理所有的實例。舉例來説,在CloudBees上,所有的實例無需配置運行節點,我們可以直接在中心管理節點上配置一個運行節點,並將其設置為動態的。這樣一來,所有的實例都可以共享這個節點,當實例任務需要運行時,默認會從中心節點獲取這個節點,這相當於將資源共享到所有實例上,而開源的Jenkins則缺乏這種能力。

C:我們的應用場景相對較為複雜,有些任務需要使用CPU,有些任務需要使用GPU,CloudBees是否支持指定資源配額呢?比如説,我們某個任務需要2個CPU,以及一定量的內存等。

DSD:支持。CloudBees中心節點的優勢在於,所有的資源都可以共享給所有的實例。對於受限的資源,比如您提到的GPU資源,由於有時這些資源無法進行虛擬化,只能使用實際的GPU代理來共享給所有用户。針對這種情況,我們有靜態共享節點的解決方案。我們可以在中心節點上創建靜態共享節點,併為所有實例提供使用。我們可以指定一個Label,比如GPU,當實例執行任務時,分配給該任務的Label會指定使用預先定義的GPU節點。

C:也就是説物理節點也可以共享資源。但我們使用的不是物理節點,而是自己搭建的K8s,其中包含了CPU和GPU機器。是否能從開源的Jenkins平滑遷移到CloudBees?

DSD:我們的平台運行有一個前提,就是K8s必須是CNCF兼容的,即一些主要的API沒有進行修改,與開源的K8s完全兼容。我們瞭解到,有些客户可能對K8s進行了一些定製,導致一些API發生了變化。只要不涉及這種情況,就可以順利遷移、運行。

C:我們所提到的集羣是Agent集羣,這個CloudBees能支持嗎?

DSD:完全沒問題。因為我們的平台集羣上支持多個cluster。您現有的設置可以保持不變,新建一個集羣后,將現有的cluster定義為CloudBees的Agent Cloud。在這個Agent Cloud中,您還可以繼續使用原來的那些Agent。

C:我們基於開源插件自行開發了一些插件,並進行了一些功能擴展,來對接我們自己的平台。這種情況CloudBees能夠支持嗎?

DSD:CloudBees CI可以被視為Jenkins的加強版,相同版本的Jenkins和相同版本的CloudBees是完全兼容的,只不過我們增加了一些私有的插件。因此,基本上如果您在開源的Jenkins上能夠使用這些插件的話,那麼在相同版本的CloudBees上也是可以使用的。關鍵問題可能在於版本兼容性。如果您所用的版本比較老舊,那麼可能會出現不兼容的情況。如果您需要使用最新版本的話,可能需要做一些修改。

C:我們還是比較擔心能否實現平滑遷移。

DSD:像剛才説的一樣,如果我們使用的版本都比較新,並且與現有版本接近的話,遷移基本上是比較簡單的。在開源的Jenkins上能夠運行的流水線在CloudBees上也一定可以運行。但如果您使用的版本比較老舊,可能在Jenkins和Jenkins之間遷移時都會存在問題,更不用説遷移到CloudBees上了。所以關鍵問題就是我們現在所用的版本是多少?您目前正在使用的是哪個版本?

C:2.33版本。

DSD:這個版本並不算太老,目前CloudBees的版本是2.4,相差不遠。一般情況下,如果我們沒有使用特別多的、特別偏門的插件的話,遷移還是比較簡單的。只需要將那些流水線平移到新環境下就可以了。換句話説,我們只需要安裝那些插件,並將流水線平移過來,大多數情況下就可以正常工作了。當然,如果插件版本發生了變化,而恰好您的流水線使用插件的功能也發生了變化,那麼可能流水線需要根據插件的升級進行一些調整。

C:我們使用的插件比較多,所以調整可能會比較繁瑣。

DSD:這種情況確實需要仔細確認一下。因為Jenkins社區裏有近兩千個插件,我也不清楚您目前都在使用哪些,以及哪些插件有更新。有些插件的變化比較緩慢,而有些則變化比較快。如果有些插件變化非常快,需要使用最新版本,可能就需要對這些插件進行一些調整,包括可能需要對流水線的代碼進行一些調整,甚至配置方面也可能需要做一些調整。

我們曾經遇到過一些客户,使用的是幾年前的插件,因此遷移工作非常繁瑣,需要調整很多方面。但是就目前而言,您所用的版本並不是很久遠,所以大多數情況下問題不大。

DSD:我們的使用環境應該是有網絡連接的,對嗎?

C:可以開,但是我們真正的生產環境是不開外網的。

DSD:好的,我問這個問題是因為升級是可以自動完成的。如果有網絡連接,我們可以直接將最新版本的更新推送過來,這樣進行升級會非常方便。

舉例來説,如果我們升級新版本,基本上那些核心插件不用過多關注兼容性問題。因為在升級的過程中,推過來的新版本會自帶那些核心插件,而且這些插件的兼容性也經過了測試,因此無需過多擔心兼容性問題。這也可以幫助我們解決很大的問題。所以如果有網絡連接,效果會更好,因為所有操作可以自動完成。

釋放強大、穩定的性能,實現高可用

C:CloudBees在進行橫向擴展時,會存在性能瓶頸嗎?

DSD:性能瓶頸主要取決於我們所使用的Kubernetes集羣的資源限制。

我們有一些大客户,比如美國的大型銀行客户,在實例數量方面可能達到數千個。因此,就性能而言,並不存在內在的瓶頸,真正的限制在於我們能夠提供多少資源。

C:關於高可用性方面,CloudBees有何解決方案?

DSD:過去,Jenkins實例是在一個容器或虛擬機中運行的單個進程。而現在,我們可以設計更加複雜的架構,加上前端的負載均衡,可以將任意數量的實例組合起來,共同發揮作用。這樣做的好處之一就是通過負載均衡,可以避免單點故障。即使其中一個實例出現故障,其他實例仍可以繼續正常運行,從而保證了更加穩定和優越的性能。

C:另外一個問題,比如我現在想要獲取一些與Jenkins相關的數據用於分析,是否有相應的方案?

DSD:您可以通過metrics插件來收集CloudBees運行時生成的一些重要數據,並通過Prometheus和Grafana來展示這些數據。這樣的配置可以在Kubernetes平台上完成,metrics插件會收集Kubernetes的數據,並單獨收集Jenkins的數據。

關於試用

DSD:如果進行試用,您計劃邀請哪些人員參與呢?

C:我打算邀請不同業務部門的DevOps負責人蔘與試用。另外,試用的期限有多久?

DSD:試用許可的最長期限是一個月,但如果一個月的試用時間不夠,我們可以提交申請,延長試用期限。

DSD:總體而言,我們建議在Kubernetes上搭建此平台,並讓所有團隊使用該平台上的實例。由我們的團隊集中管理這些實例,並針對權限從全局的角度進行設計。此外,還有一些其他功能也非常有用,比如統一升級、統一安裝插件、統一腳本等,這些都可以在試用過程中體驗到。

關於Cloudbees Platform

C:我還有一個問題。由於Jenkins對我們而言是一個CI/CD平台,我們計劃在此基礎上構建自己的平台,從代碼層面、CI/CD,再到鏡像,將所有環節串聯起來。這樣,研發只需要關注自己提交代碼,而其他信息,比如構建失敗信息,我們可以及時地推送給研發,而無需在多個平台之間跳轉查看。

DSD:我理解您的意思,您可能打算構建一個內部開發者平台,將所有資源串聯起來,提供自助服務的功能。我有個問題,您是否能訪問www.cloudbees.io這個網站?CloudBees最近發佈了一個新產品,也是下一代的主要旗艦產品,名為CloudBees Platform。在這個平台上,就能將所有可用資源串聯起來,為開發人員提供自助服務的功能。

這個平台在銷售時可以與CloudBees CI一起提供給用户。如果購買CloudBees CI,自然也就會獲得這個平台,功能將更加強大。除了CloudBees CI外,在這個平台上,它採用Cloud Native架構,我們可以迅速將各種功能以容器的方式集成進來。但關鍵問題是,需要網絡訪問這個產品,因為目前這個產品部署在AWS上,是基於SaaS的,將來可能會提供離線部署的方案。

user avatar u_16175523 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.