Jenkins X 是一個高度集成化的 CI/CD 平台,基於 Jenkins 和 Kubernetes 實現,旨在解決微服務體系架構下的雲原生應用的持續交付的問題,簡化整個雲原生應用的開發、運行和部署過程。
Jenkins X 核心組件
Jenkins
Jenkins X 不是一個全新的 Jenkins。
它依然使用 Jenkins 作為持續交付的核心引擎,實際上 Jenkins X 作為 Jenkins 的一個子項目存在,專注於雲原生應用的 CI/CD 實現,同時也幫助 Jenkins 自身完成雲原生應用的轉型,畢竟現在越來越多的人在詬病單體應用的設計和文件存儲系統。
HELM
Helm 是用於管理 Kubernetes 資源對象的工具,類似 APT,YUM 和 HOMEBREW,它通過將 Kubernetes 的資源對象打包成 Chart 的形式,完成復雜應用的部署和版本控制,是目前業界流行的解決方案
DRAFT
Draft 是自動化應用構建和運行在 Kubernetes 上面的工具,具有語言識別能力,能夠自動生成構建腳本,依賴,環境並打包成 Docker 鏡像並部署在 Kubernetes 集群上,加快代碼開發節奏,而無需關心基礎設施層面的技術實現
GitOps
GitOps 是 Weaveworks 推出的天才的應用部署解決方案,它將 Git 作為整個應用部署的單一可信數據源(SSOT),通過類似代碼開發的 Pull Request 流程完成應用部署的 Review 和自動化實現,並且將部署配置信息納入版本控制。
Jenkins X 部分新特性
1. 自動化一切:自動化CI/CD流水線
-
選擇項目類型自動生成Jenkinsfile定義流水線
-
自動生成Dockerfile並打包容器鏡像
-
自動創建Helm Chart並運行在Kubernetes集群
-
自動關聯代碼庫和流水線,作為代碼變更自動觸發(基於Webhook實現)
-
自動版本號自動歸檔
2. Review代碼一鍵部署應用:基於GitOps的環境部署
-
所有的環境,應用列表,版本,配置信息統一放在代碼庫中進行版本控制
-
通過Pull Request實現研發和運維的協同,完成應用部署升級(Promotion)
-
可自動部署和手動部署,在必要的時候增加手工Review
-
當然這些都封裝在jx命令中實現
3. 自動生成預覽環境和信息同步反饋
-
預覽環境用於代碼Review環節中臨時創建
-
同Pull Request工作流程集成並實現信息同步和有效通知
-
驗證完畢后自動清理
-
提交和應用狀態自動同步到Github注釋
-
自動生成release notes信息供驗證
Jenkins X安裝---以linux為例
1.在本地安裝jx命令行工具
#curl -L https://github.com/jenkins-x/jx/releases/download/v1.1.40/jx-linux-amd64.tar.gz | tar xzv
#mv jx /usr/local/bin
2.使用jx創建一個k8s集群,並自動安裝Jenkins X(http://jenkins-x.io/getting-started/create-cluster/)或在已經存在的k8s集群上安裝Jenkns x(http://jenkins-x.io/getting-started/install-on-cluster/)
通過已存在的k8s上安裝只需要執行 #jx install即可
這里說下使用JX創建一個k8s集群安裝jenkins X的注意點:
.執行命令#jx create cluster minikube 會默認下載minikube,kubectl和helm到~/.jx/bin目錄下,所以這里需要將該路徑加入到系統PATH下;
.安裝一款虛擬機軟件支持kvm,virtualbox,no(使用docker的話選此選項,注意一定要為其指定專門的網橋)
.根據提示輸入內存(默認4096M)輸入CPU核數(默認3),選擇虛擬機,確定會自動下載Minikube ISO(142.22M)並啟動虛擬機加載該鏡像。