天天看點

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

一、背景

在近幾年,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鏡像的哪個層,近而繼續跟蹤到代碼的送出。

三、流水線特性解析

繼續閱讀