鈦動利用 Zadig 完成云原生轉(zhuǎn)型之路
鈦動科技 (Tec-Do) 成立于 2017 年,是全球領(lǐng)先的基于大數(shù)據(jù)和 BI 的商業(yè)增長賦能公司。 公司秉承以服務(wù)客戶為中心的核心價值觀,旨在通過技術(shù)能力抽樣提高全球商業(yè)運營效率,打造幫助中國企業(yè)出海的一站式服務(wù)平臺。
是時候改變了
我們公司的業(yè)務(wù)主要跑在兩種基礎(chǔ)資源上,一種是傳統(tǒng)的虛擬機,一種則是公有云的 K8s 集群。
構(gòu)建部署方式是通過 Jenkins 進行打包上傳到對象存儲,通過 ssh 觸發(fā)自定義腳本發(fā)布服務(wù)。K8s 環(huán)境則需要單獨構(gòu)建鏡像,然后手動 apply 的方式更新服務(wù)。沒有統(tǒng)一的開發(fā)環(huán)境,測試環(huán)境也殘缺不齊。
當我們的研發(fā)人員和微服務(wù)都擴張的時候,大量痛點相繼爆發(fā):
- 開發(fā)環(huán)境的缺失讓 開發(fā)聯(lián)調(diào)異常艱難
- 測試環(huán)境沒有統(tǒng)一管理且殘缺不全,對新加入小伙伴非常不友好
- 開發(fā),測試,生產(chǎn)的 運行環(huán)境不一致。
- 構(gòu)建部署通知 流程割裂,花費時間較長
- 因為測試環(huán)境部署在虛擬機上,端口管理問題需要單獨維護文檔
- 實時日志查看不方便
基于以上種種原因,且剛好公司在推行服務(wù)容器化,我們對 CI/CD 的方案開始了選型。
沒有最好只有最合適
對于 CI/CD 首先讓大家想到的就是 Jenkins,包括我之前使用的也是 Jenkins。它的確是一個很強大的工具,有繁多的插件支持你想要做的功能。但是 對于云原生的支持就相對沒有那么完善。GitLab 的 CI/CD 也是業(yè)界比較流行的方案,但是考慮到 每個項目維護的 gitlab-ci.yml 對于運維的維護不是很方便,還是沒有考慮。后來有小伙伴推薦了 Zadig 這個國內(nèi)云原生新平臺,看別人用得不錯也研究起來。
Zadig 初體驗
首先說部署,官方比較推薦的方式之一是 Helm 部署的,正好我們也在推 K8s 容器化, 使用 Helm 部署極其方便。剛上手的時候使用的是 YAML 的方式來部署服務(wù),將定義好的 K8s yaml 直接貼入或者導入到 Zadig 里面,即可在 K8s 里面啟動服務(wù)。當然, Zadig 還提供了各種方便的集成,GitLab,LDAP,鏡像倉庫,Helm 倉庫,集群管理等等,需要且必要的東西都已經(jīng)集成,直接對接即可。
這是 VIP 服務(wù)?
在我們跑通 YAML 部署方式之后,我們發(fā)現(xiàn)還有 Helm 的服務(wù)部署方式,鑒于 Helm 中可以支持各類判斷,統(tǒng)一修改等,所以我們決定嘗試使用 Helm 作為服務(wù)發(fā)布方式。由于開始不是很理解 Zadig 上使用Helm 的邏輯,我們遇到了問題。在嘗試解決未果的情況下,我們選擇了向 Zadig 官方求助,我們加到Zadig 的技術(shù)交流微信群,拋出了我們的問題,沒想到官方回復速度非常快,在得知我們公司在準備全面落地 Zadig 時,官方直接拉了專門群來幫助我們解決期間遇到的落地問題。
具體實施過程
第一步:基礎(chǔ)準備和配置
- 根據(jù)語言棧創(chuàng)建編譯構(gòu)建鏡像,如 Node、Gradle,Maven,Python,Go 等構(gòu)建環(huán)境,并配置對接私倉,開啟 Zadig PVC 緩存。
- 創(chuàng)建基礎(chǔ)環(huán)境運行鏡像。
- 根據(jù)項目類型創(chuàng)建 Helm Chart 模版托管至 Zadig
- 托管業(yè)務(wù)運行 Dockerfile 至 Zadig
- 托管每個環(huán)境的 Helm value 文件到 GitLab
第二步:對團隊進行培訓
通過文檔,和培訓會議的方式對開發(fā)和測試同事進行 Zadig 使用培訓。
第三步:遷移新流程
在不影響現(xiàn)有流程的情況下同時在 Zadig 創(chuàng)建新的 CI/CD 流程,啟動服務(wù)然后切換 DNS,接入新流程。 目前我們已經(jīng)有 10 條業(yè)務(wù)線接入,穩(wěn)定運行,滿足工程師同學們的日常使用。
Zadig 的優(yōu)勢總結(jié)
- 第三方集成完善,配置簡單,如 LDAP ,GitLab,Harbor,Jira,Helm 等
- 強大的 數(shù)據(jù)統(tǒng)計功能,看清每個環(huán)節(jié)的效率和質(zhì)量
- 強大的 環(huán)境復制能力,隨時可以拉起新環(huán)境
- 社區(qū)活躍,問題反饋和處理的速度快
- 統(tǒng)一的模版管理, 降低運維管理負擔
- 方便的日志查看和服務(wù)調(diào)試功能