本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Jenkins X
Jenkins X 是雲端原生的開放原始碼 CI/CD 平台,可針對 Kubernetes 環境實作 GitOps 原則。雖然 Jenkins X 並非像 Argo CD 或 Flux 之類的 GitOps 工具,但它將 GitOps 實務納入其工作流程。
GitOps 支援
| 區域圖 | 工具功能 |
|---|---|
Git 中心工作流程 |
Jenkins X 使用 Git 儲存庫作為應用程式程式碼和組態的主要事實來源。應用程式和基礎設施的所有變更都是透過 Git 進行。 |
環境即程式碼 (EaC) |
環境 (例如預備和生產) 在 Git 儲存庫中定義為程式碼。這允許版本控制和檢閱環境組態。 |
自動化 CI/CD 管道 |
Jenkins X 會自動設定專案的 CI/CD 管道。這些管道定義為程式碼 (管道為程式碼),並存放在 Git 中。 |
Kubernetes 原生 |
Jenkins X 專為 Kubernetes 環境而建置。它使用 Kubernetes 資源和自訂資源定義 (CRDs)。 |
預覽環境 |
Jenkins X 會自動為提取請求建立暫時環境。它可在合併之前輕鬆檢閱和測試變更。 |
環境之間的提升 |
Jenkins X 使用 GitOps 方法來提升環境之間的應用程式 (例如,從預備到生產)。提升是透過使用提取請求來處理,以確保適當的審核和核准程序。 |
Helm Chart 管理 |
Jenkins X 使用 Helm Chart 來封裝和部署應用程式。圖表在 Git 儲存庫中受版本控制。 |
自動化版本控制 |
Jenkins X 會自動管理應用程式和版本的版本控制。它使用語意版本控制並產生版本備註。 |
ChatOps 整合 |
Jenkins X 支援 ChatOps 的常見操作。這符合自動化和協作的 GitOps 原則。 |
可擴展性 |
此工具提供用於擴展功能的外掛程式系統。它允許與各種雲端原生工具整合。 |
基礎設施即程式碼 (IaC) |
Jenkins X 支援 Terraform CloudFormation AWS Cloud Development Kit (AWS CDK)、 和其他 IaC 工具來定義和管理基礎設施。基礎設施定義與應用程式程式碼一起受版本控制。 |
自動化轉返 |
如果在部署後偵測到問題,Jenkins X 支援自動轉返。 |
秘密管理 |
該工具與外部秘密管理解決方案整合,以安全地處理敏感資訊。 |
可觀測性 |
Jenkins X 提供與監控和記錄工具的整合,以實現可觀測性。 |
多雲端支援 |
Jenkins X 旨在跨不同的雲端提供者和內部部署環境運作。 |
團隊協作 |
此工具鼓勵透過 Git 型工作流程進行協作,並提取請求。 |
持續意見回饋 |
此工具透過自動化測試和預覽環境,提供變更的快速意見回饋。 |
DevOps 最佳實務 |
Jenkins X 預設會實作 DevOps 最佳實務,包括 GitOps 原則。 |
宣告式組態 |
此工具使用宣告式組態來定義應用程式和環境。 |
自動升級 |
Jenkins X 提供工具來自動化 Jenkins X 平台本身的升級。 |
Jenkins X 實作這些 GitOps 原則,為 Kubernetes 建立全面的 CI/CD 解決方案。它旨在自動化和簡化從程式碼遞交到生產部署的整個軟體交付程序,同時遵守 GitOps 實務。透過這樣做,可協助團隊在雲端原生環境中實現更快、更可靠且更一致的部署。
Jenkins X 和 Argo CD 或 Flux 等工具之間的主要區別在於,Jenkins X 提供更全面的 CI/CD 解決方案,包括建置自動化和管道管理,同時仍然整合 GitOps 原則以進行部署和環境管理。這使得它特別適合需要涵蓋單一 GitOps 架構內 CI 和 CD 層面all-in-one解決方案的團隊。
如需詳細資訊,請參閱 Jenkins X 文件
架構
下圖說明使用 Jenkins X 的 GitOps 驅動 CD 工作流程。如需詳細資訊,請參閱 Jenkins X 文件
其中:
-
步驟 1:提取請求 (PR) 合併。開發人員會建立提取請求,其中包含對存放在 Git 儲存庫中的 Kubernetes 資訊清單、Helm Chart 或應用程式程式碼所做的變更。檢閱和核准之後,PR 會合併到主分支,並在來源控制中更新所需的狀態。
-
步驟 2:儲存庫同步。Jenkins X 會在偵測到變更時自動觸發 CI/CD 管道。管道會使用 GitOps 原則,透過不同的環境 (例如預備和生產) 建置、測試和提升應用程式。
-
步驟 3:部署至目標命名空間。Jenkins X 會使用新的應用程式版本更新環境儲存庫 (預備和生產)。叢集會自動協調變更,方法是從 Git 提取最新的資訊清單,並將應用程式部署到適當的命名空間。