推出 Blue Ocean 之後,Jenkins 似乎沉默了很久,終于在 3.21 釋出了名為<code>Jenkins X</code>的項目,這一項目對開發人員和雲端的 CI/CD 環境之間的互動過程進行了審視和反思,結合自動化、工具鍊以及 DevOps 最佳實踐。為開發團隊提供了新的生産效率增長點。
作為一種釋出形式,容器鏡像因其精簡、高效、低成本以及易用性等諸多好處,已經超越虛拟機成為首選的分發手段。
Kubernetes 成功的跨越各種平台、公有雲的藩籬,成為容器雲的标準,成為軟體分發、安裝和管理的工業标準的堅實基礎。
微服務和雲原生應用成為主流,日益增長,需要有相對應的 CI/CD 提供支撐。
Jenkins X 解決的不僅僅是安裝問題,其中還帶有在雲原生應用 CI/CD 平台方面的最佳實踐。
新的指令行工具<code>jx</code>,支援 OSX、Linux 平台,用接近 50 個指令,為使用者提供了從叢集安裝、環境管理一直到應用釋出的整個大環節的支援。甚至還貼心的提供了支援 Bash 以及 zsh 的自動完成能力。
列舉幾個有意思的指令:
<code>jx create cluster</code>:建立 Kubernetes 叢集。
<code>jx install</code>:在 Kubernetes 上安裝 Jenkins X。
<code>jx create spring</code>:建立 Spring boot 應用。
<code>jx promote</code>:将應用的制定版本更新到某環境。
包括 Maven、Docker Registry、Monocular、CharMuseum 等工具的直接整合,并且内置了衆多插件,各個服務之間的調用關系也已經設定完畢。常用的 Slave 建構、Mvn 建構、Git WebHook 等功能都會根據要求自動完成。
Jenkins X 将 Git 倉庫、Kubernetes 命名空間、更新政策等内容結合在一起,成為了一個環境的定義,并且同 Github flow 結合在一起,讓工作流程和環境切換有機結合,在工具鍊整合之外,又提供了工作流整合的完善支援。
例如 JX 的預覽功能,在收到 Pull Request 時候,會根據這一請求建構鏡像,并釋出到用于預覽的命名空間,同時還會在這一 Request 中注明預覽環境就緒等待測試。
工具
helm
kubectl
git
Kubernetes 叢集
網際網路連接配接
Tiller
公網 IP
github 賬号
<code>http://jenkins-x.io/getting-started/install/</code> 提供了幾種系統下的安裝說明:
OS X:<code>brew tap jenkins-x/jx && brew tap jenkins-x/jx</code>
Linux:<code>curl -L https://github.com/jenkins-x/jx/releases/download/v1.1.10/jx-darwin-amd64.tar.gz | tar xzv && mv jx /usr/local/bin</code>
<code>jx create cluster</code> 支援多種公有雲的建立。
配置好叢集和對應的 kubeconfig 通路之後,就可以使用<code>jx install</code>進行安裝了。
過程中幾個需要注意的點:
如果 Tiller 的 SA 權限不足,會導緻安裝失敗,可設定相應的 ClusterRole 進行解決。
安裝過程會修改 kubeconfig 檔案,是以建議做好備份。
為完整體驗功能,建議聽從安裝器建議,安裝 Ingress Controller。
Jenkins X 的環境管理以及代碼拉取等功能需要和 Github 進行互動,是以會提問 GitHub 的 Token。
安裝過程相對較長,可以使用<code>watch kubectl get pods -n jx</code>檢視程序狀況。
最後步驟會顯示管理密碼,注意複制儲存。
JX 會為使用者建立三個環境分别是,Dev、Staging 以及 Production。
運作指令<code>jx console</code>,會打開浏覽器進入 Jenkins 登入頁面。
登入之後我們會看到正在進行建構,如果是一個排隊狀态,可能是因為正在建立 Worker Pod,可以使用<code>kubectl</code>查詢具體情況。
建構完成,會看到這一示例中包含了拉取、建構、Helm、環境等幾個步驟,可以作為工作的基礎環節來進行使用。
接下來就可以做幾個善後工作
jx 支援插件,可以通過<code>jx get addons</code>檢視支援的插件清單,進行安裝。
根據實際工作需要,對預設環境進行調整,安裝所需軟體。
對 Jenkins X 中的軟體、叢集進行安全加強。
使用<code>import</code>或者<code>create spring</code>/<code>create quickstart</code>,進行項目工作。
最後要注意的一點是,Jenkins X 目前的更新頻率非常高。不建議生産使用。