鈦動科技:我們的 Zadig 落地之路

語言: CN / TW / HK
 
鈦動科技 (Tec-Do) 成立於 2017 年,是全球領先的基於大資料和 BI 的商業增長賦能公司。
公司秉承以服務客戶為中心的核心價值觀,旨在通過技術能力抽樣提高全球商業運營效率,打造幫助中國企業出海的一站式服務平臺。

Zadig on Github

Zadig on Gitee

是時候改變了

我們公司的業務主要跑在兩種基礎資源上,一種是傳統的虛擬機器,一種則是公有云的 K8s 叢集。
構建部署方式是通過 Jenkins 進行打包上傳到物件儲存,通過 ssh 觸發自定義指令碼釋出服務。K8s 環境則需要單獨構建映象,然後手動 apply 的方式更新服務。沒有統一的開發環境,測試環境也殘缺不齊。
 
 
當我們的研發人員和微服務都擴張的時候,大量痛點相繼爆發:
  1. 開發環境的缺失讓 開發聯調異常艱難
  2. 測試環境沒有統一管理且殘缺不全,對新加入小夥伴非常不友好
  3. 開發,測試,生產的 執行環境不一致
  4. 構建部署通知 流程割裂,花費時間較長
  5. 因為測試環境部署在虛擬機器上,埠管理問題需要單獨維護文件
  6. 實時日誌檢視不方便
 
基於以上種種原因,且剛好公司在推行服務容器化,我們對 CI/CD 的方案開始了選型。
 

沒有最好只有最合適

對於 CI/CD 首先讓大家想到的就是 Jenkins,包括我之前使用的也是 Jenkins。它的確是一個很強大的工具,有繁多的外掛支援你想要做的功能。但是 對於雲原生的支援就相對沒有那麼完善。GitLab 的 CI/CD 也是業界比較流行的方案,但是考慮到 每個專案維護的 gitlab-ci.yml 對於運維的維護不是很方便,還是沒有考慮。後來有小夥伴推薦了 Zadig 這個國內雲原生新平臺,看別人用得不錯也研究起來。
 

Zadig 初體驗

首先說部署,官方比較推薦的方式之一是 Helm 部署的,正好我們也在推 K8s 容器化, 使用 Helm 部署極其方便。剛上手的時候使用的是 YAML 的方式來部署服務,將定義好的 K8s yaml 直接貼入或者匯入到 Zadig 裡面,即可在 K8s 裡面啟動服務。當然, Zadig 還提供了各種方便的整合,GitLab,LDAP,映象倉庫,Helm 倉庫,叢集管理等等,需要且必要的東西都已經整合,直接對接即可。
 
 

這是 VIP 服務?

在我們跑通 YAML 部署方式之後,我們發現還有 Helm 的服務部署方式,鑑於 Helm 中可以支援各類判斷,統一修改等,所以我們決定嘗試使用 Helm 作為服務釋出方式。由於開始不是很理解 Zadig 上使用Helm 的邏輯,我們遇到了問題。在嘗試解決未果的情況下,我們選擇了向 Zadig 官方求助,我們加到Zadig 的技術交流微信群,丟擲了我們的問題,沒想到官方回覆速度非常快,在得知我們公司在準備全面落地 Zadig 時,官方直接拉了專門群來幫助我們解決期間遇到的落地問題。我在想,我們好像沒有開VIP 呀。
 

具體實施過程

第一步:基礎準備和配置
  1. 根據語言棧建立編譯構建映象,如 Node、Gradle,Maven,Python,Go 等構建環境,並配置對接私倉,開啟 Zadig PVC 快取。
  2. 建立基礎環境執行映象。
  3. 根據專案型別建立 Helm Chart 模版託管至 Zadig
  4. 託管業務執行 Dockerfile 至 Zadig
  5. 託管每個環境的 Helm value 檔案到 GitLab
第二步:對團隊進行培訓
通過文件,和培訓會議的方式對開發和測試同事進行 Zadig 使用培訓。
第三步:遷移新流程
在不影響現有流程的情況下同時在 Zadig 建立新的 CI/CD 流程,啟動服務然後切換 DNS,接入新流程。
目前我們已經有 10 條業務線接入,穩定執行,滿足工程師同學們的日常使用。
 
 

 

Zadig 的優勢總結

  1. 第三方整合完善,配置簡單,如   LDAP ,GitLab,Harbor,Jira,Helm  
  2. 強大的 資料統計功能,看清每個環節的效率和質量
  3. 強大的 環境複製能力,隨時可以拉起新環境
  4. 社群活躍,問題反饋和處理的速度快
  5. 統一的模版管理, 降低運維管理負擔
  6. 方便的日誌檢視和服務除錯功能

團隊對 Zadig 的評價

在使用 Zadig 之後,開發和測試都不用登入伺服器操作了,通過 Push 程式碼自動觸發或者流水線觸發即可釋出,驗證,日誌檢視,除錯。大大提高了效率,規範了流程,獲得了開發測試小夥伴的一致好評。
 

建議期待

  1. 對於 Helm 部署方式,希望考慮是否能在每次部署前都渲染最新的 Helm 模板和 Value 檔案,做到最新模板和 Value 檔案不用重新手動更新即可應用。
  2. 是否可以考慮將 K8s 的部分配置通過選項來生成,讓開發工程師可以自助新增微服務。
  3. 希望 Zadig 能更開放,提供指令碼或者外掛介面,豐富 API 介面等方式讓工作流變的更加靈活。

Zadig,讓工程師更專注創造!

 

歡迎加入 開源吐槽群🔥

Zadig on Github

Zadig on Gitee