近日,靈雀雲宣佈Captain 1.0.0 GA 版本正式發佈。Captain 1.0通過了較長時間的持續開發及內部測試,其主要包含的新功能以下: web
* 再也不依賴 helm 以及 cert-manager 的安裝及運行方式;服務器
* 支持將 Git/SVN 做爲 helm chart repo;架構
* ARM64 環境支持;app
* 大量 helm 相關代碼修復;工具
* kubectl plugin 大量新命令支持。測試
全新的安裝方式優化
由於 Captain 自己使用了 webhook ,按照 kubernetes 的規範,這須要有 https 以及 簽名證書。以前的版本里使用了 cert-manager, 因爲 cert-manager 的安裝比較繁瑣,因此採用了 helm 安裝的方式,這樣 helm 就成了 captain 安裝的依賴。這是一個很尷尬的現狀,由於 Captain 的目的是爲了在很大程度上取代 helm 的使用。雲計算
在Captain 1.0 版本中,咱們採用了以腳本自動生成自簽名證書,並結合 kubernetes 的 CSR 方式,將證書的生成放在 initContainers 中來作,並在程序啓動時自動檢查更新 webhook 中的 cert 數據。至此,Captain 的安裝僅需使用經常使用的 `kubectl apply` 命令便可。 url
Git/SVN 做爲 ChartRepospa
Captain 以前的版本已經支持了 helm 的 chart repo 做爲 Captain 的 ChartRepo(CRD). 其實在用戶的平常使用中,不少場景沒有直接可用的 chart repo ,由於 chart repo 須要一個 http server 和 固定存儲,這是一個不小的開銷,尤爲是對普通開發者來講。
對於全部人來講,會將 chart 相關的源文件存放於 VCS 上。在 Captain 1.0.0 版本里,用戶能夠用 VCS 的地址來配置 ChartRepo, Captain 會自動拉取源代碼,並在配置好的目錄下面搜尋 chart 文件,而後打包成 chart 壓縮包,上傳到一個新的由 chartmuseum 生成的 chartrepo 裏。以下所示:
如示例所示,`.spec.url` 即是 Captain 自動生成的只能集羣內部訪問的 ChartRepo 地址。
ARM64 鏡像支持
最近兩年,領先的雲計算廠商都在積極研發和部署 ARM 架構的產品,其以優良的性價比、高度可定製化等優點正在佔領愈來愈多的服務器和家用電子產品市場。
基於 Docker 和 Golang 所提供的對於多架構環境的支持,Captain 在 1.0.0 版本中也正式加入了對 ARM64 環境的支持。只需在安裝時替換相應的鏡像版本便可。將來還將根據需求支持更多的平臺。
Kubectl Plugin 功能完備
Captain 做爲一個 Controller,其適用性以及可擴展性都遠遠地超過了 Helm 自己。可是從用戶角度來講,CLI 工具仍然是須要的。這樣用戶能夠在不用編寫 YAML 的狀況下用命令行工具來完成相應的操做。Captain 的 kubectl plugin, 目前已經包含了經常使用的相似於 helm 的命令,足夠知足平常需求。以下所示:
* `kubectl captain create`: 用於建立 HelmRequest
* `kubectl captain upgrade`: 用於更新 HelmRequest
* `kubectl get-manifest`: 獲取當前HelmRequest的 Release裏的 manifest 信息
* ...
Helm相關代碼優化
Captain 自己是基於 Helm 3 的代碼構建的。一方面,Cpatain 會盡可能保持與官方 Helm 代碼的同步,另外一方面,也會針對 Helm2/Helm3 以前的不一樣作一些兼容性處理,同時也會修復一些 Helm 自己處理邏輯不合適的地方。這些 Fix 都是咱們通過大量內部實踐總結出來的,可以儘可能避免用戶在使用時遇到難以理解的錯誤和非預期的行爲。