5步實現規模化的Kubernetes CI/CD 流水線

JFrog傑蛙科技發表於2019-12-23

一、背景

在近幾年,Kubernetes迅速成為了容器編排的事實上的開源標準。與虛擬機器不同,Kubernetes在抽象化基礎架構的同時可靠地大規模編排容器,這可以幫助開發人員將工作負載與基礎架構的複雜性分開。Kubernetes是CI/CD自動化的理想選擇,因為它提供了許多內建功能,這些功能使應用程式部署實現標準化和可重用,提高了開發人員的生產力,並加快了雲原生應用程式的採用。

Platform9是成立於2013年的雲服務提供商,能夠提供業界唯一由SaaS管理的混合雲解決方案,使使用者能夠快速採用雲技術並在私有部署或公共雲中的任何基礎架構上一致地管理VM、Kubernetes和無伺服器功能。Platform9提供的Kubernetes解決方案也是業界的佼佼者。

在2019年巴塞羅那舉行的KubeCon + CloudNativeCon大會上,Platform9與1000多名與會者進行了互動,有近500名與會者參與了Kubernetes的相關調查。下圖列出了關於最常見的Kubernetes應用場景的調查結果:


其中,基於Kubernetes的CI/CD自動化是最為廣泛的用例,專注於幫助開發人員更快地構建和交付應用程式。但是,在具有全自動和可重複的CI/CD流水線的生產環境中執行Kubernetes(k8s)以及持續的安全檢查會帶來新的挑戰,包括整合的複雜性,持續的產品更新/回滾、自運維、生命週期管理等等。 

解決這些挑戰並沒有想象中的困難,本文將介紹Platform9如何利用JFrog的產品在Kubernetes上快速實現CI/CD自動化並將其推廣到整個組織的方法。


二、使用 Artifactory Helm 5 Kubernetes CI / CD 流水線

在Platform9提供的方案中,JFrog Artifactory作為微服務的Docker登錄檔(或多個登錄檔),是構建CI/CD流水線不可或缺的一部分。同時,使用Artifactory作為Helm Chart儲存庫,進一步使該製品管理倉庫能夠提供將容器部署到k8s叢集所需的所有整合資源。

Artifactory還可以作為遠端依賴的代理倉庫,例如npm、Maven、Gradle和Go等,實現安全的Kubernetes登錄檔,使您能夠跟蹤系統中端到端的內容、依賴關係,以及與其他Docker映象的關係。




5步實現Kubernetes CI/CD流水線:

·        步驟1.使用Artifactory中代理的登錄檔來開發微服務。生成的應用程式包可以是.war或.jar檔案;

·        步驟2.在Ubuntu上使用Tomcat和Java-8建立Docker框架作為基礎映象。將此映象推送到Artifactory中的Docker登錄檔中,JFrog Xray也會對其進行掃描,以確保安全性和許可證合規性。

·        步驟3.通過將.war或.jar檔案新增到Docker框架中,為微服務建立Docker映象,將該映象推送到Artifactory中的Docker登錄檔中,並通過Xray對其進行掃描。

·        步驟4.為微服務建立Helm Chart,並將其推送到Artifactory中的Helm儲存庫。

·        步驟5.使用Helm Chart將微服務從安全的Docker登錄檔部署到Kubernetes叢集。

在上述流水線當中,除了負責製品倉庫管理,Artifactory還可以提供質量的可稽核性,因為它捕獲了整個CI/CD流程中產生的所有大量有價值的後設資料,包含:

·        構建和環境資訊

·        模組的依賴關係

·        CI伺服器,如Jenkins,提供的相關資訊

·        釋出模組及其依賴的詳細許可證分析

·        釋出歷史資訊等

使用Artifactory,可以跟蹤負責生成應用程式層(例如WAR檔案)的CI任務,該應用程式層是Docker映象層的一部分。通過比較兩次構建,可以顯示構建之間的差異,從而輕鬆跟蹤哪個構建釋出到了Docker映象的哪個層,近而繼續跟蹤到程式碼的提交。


三、流水線特性解析

3.1 JFrog Artifactory和Xray確保軟體交付的自動化

Artifactory是一個通用的製品倉庫管理平臺,無論組織中的微服務在哪裡執行,它都可以滿足所有CI/CD的需求。Artifactory通過提供完全的Docker相容性,使開發人員能夠將容器化的微服務部署到Kubernetes叢集中。將應用程式包推送到Artifactory倉庫後,您可以在開發、測試和釋出階段繼續驗證和升級您的容器,最後將其部署到Kubernetes中的生產叢集。如之前的分析,Artifactory還為所有應用程式包提供了完整的可稽核性和可追溯性。

JFrog Xray對Docker映象執行深度遞迴掃描,並識別所有層和依賴項中的安全漏洞。它還會檢查以確保所有軟體元件的許可證均符合組織的策略。這有助於阻止易受攻擊且不合規的軟體投入生產。而且,Xray提供的持續掃描能力,可以確保發現新問題或更改策略時的持續安全性。

3.2 Helm Charts使CI/CD工具部署自動化

一旦您的Kubernetes基礎架構啟動並執行,Kubernetes Helm便使您能夠通過輕鬆安裝、更新和刪除來快速可靠地配置容器應用程式。它為開發人員提供了一種打包應用程式並與Kubernetes社群共享的工具。它使軟體供應商只需按一下按鈕即可提供其容器化的應用程式。通過一個命令或單擊幾下滑鼠,使用者就可以為開發測試或生產環境安裝Kubernetes應用程式。大多數流行的CI/CD工具集都可以通過Helm chart獲得。

Platform9應用目錄為Helm圖表提供了易於訪問的按鈕式部署。您可以使用App Catalog UI來選擇和部署您喜歡的CI/CD流水線工具(例如,Jenkins、Spinnaker、Artifactory、Xray等)。您可以搜尋,一鍵部署或配置它。(圖三) 



四、 Platform9 的託管 Kubernetes 服務消除了操作複雜性

如果您要解決的主要業務問題,與提高開發人員的生產力,將軟體更快地推向市場,以及在生產環境中執行可靠的應用程式有關,那麼您是否值得花時間處理運維Kubernetes的麻煩和複雜性?您是否擁有人員和技能來工作和運維大型Kubernetes叢集? 

運維您自己的大規模Kubernetes基礎架構令人生畏。錯誤選擇的後果是持久的,並且會影響應用程式的可用性、效能和敏捷性。雖然在短期內內部構建解決方案可能會更便宜,但您的設計質量可能較低,或者存在一些缺陷。這些缺陷在您投入生產後才會意識到,從而最終會花費更多的錢。

雖然安裝和管理Kubernetes不會推動業務向前發展,但快速為客戶部署新的應用程式和版本卻可以。對於開發人員,Kubernetes的終端使用者,平臺可用性是關鍵。他們不在乎是誰建造它或如何建造它的:他們只是想動手實踐它,並使其運轉良好。

儘管開發人員不關心叢集的實現細節或其運維狀態,但是仍然需要有人進行運維工作以確保叢集是最新、健康且安全的。Platform9管理您的Kubernetes環境,為您提供全自動運維,並在裸機、VMware、公共雲或邊緣節點上實現99.9%的SLA。這使您的DevOps團隊可以騰出時間專注於重要的事情:通過更快地構建更好的應用程式來響應客戶需求。(圖四)



五、總結

通過上述Platform9推薦的解決方案來看,基於JFrog的Artifactory和Xray,結合Helm Chart,能夠方便、快捷、清晰地搭建適用於規模化Kubernetes叢集的CI/CD自動化流水線。該方案在保證應用構建和交付的快速、安全、可重複的同時,還能為所有交付的應用提供完整的可稽核性和可追溯性。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69954434/viewspace-2669973/,如需轉載,請註明出處,否則將追究法律責任。

相關文章