博客 / 詳情

返回

平台工程融合GitOps

前言

原始人工部署的痛點

Kubectl直連Kubernetes集羣API,命令行操作Deployment、Service等資源完成應用手動部署,會逐漸暴露出一些問題:

  • 學習成本高:開發者需要學習理解大量Kubernetes資源對象Deployment、Service、Ingress、ConfigMap等概念。
  • 配置漂移:不同人員可能通過不同方式部署運維,例如手寫YAML進行apply操作、臨時修改配置進行patch/edit操作,沒有統一入口和規範,造成系統配置漂移。
  • 缺乏權限和審計能力:直接使用Kubectl操作k8s集羣,企業很難做到細粒度權限控制以及完整的操作審計。
  • 部署運維過程不可追溯:配置修改和應用部署往往是即時操作,一旦出現問題,很難追溯是誰在什麼時間修改了哪些配置。

傳統DevOps的痛點

  • 流程碎片化:開發、測試、運維各自為政,靠CI/CD工具鏈硬串聯。
  • 複雜度外溢:運維團隊要維護Gitlab、Jenkins、GitLabRunner、ArgoCD、HelmChart等多套工具。
  • 不可控的體驗:不同團隊的自動化腳本和流程不統一,新人入職學習成本高。
  • 缺乏穩定的審計與可追溯性:流水線日誌、變更記錄分散,難以形成統一的安全合規視圖。

DevOps已死,更加註重用户體驗的平台工程才是未來。

DevOps過度依賴工具鏈、強調個人能力、缺乏標準化平台化支撐,長期難以擴展。

平台工程(Platform Engineering)就是為企業開發團隊提供標準化、可複用、可自助的內建能力平台(Internal Developer Platform)也稱IDP ,IDP把DevOps的複雜性封裝起來,讓業務團隊專注於業務邏輯而非工具維護、工具的使用。

平台工程核心價值:

  • 一套平台解決開發運維問題:統一管理CI/CD、鏡像倉庫、環境配置、部署策略。
  • 標準化接口:團隊通過 API 或自助 UI 就能完成部署、發佈、監控,而無需瞭解底層細節。
  • 可追溯與審計:所有流水線、配置變更、資源使用都被平台統一記錄。
  • 擴展性強:平台能力模塊化,可接入雲廠商服務、SaaS、內部工具。
  • 解放生產力:開發團隊不必重複做DevOps工具維護,業務開發效率提升明顯。

小結

DevOps強調流程和工具,而平台工程強調能力和自助服務。

未來企業的發展趨勢是:DevOps的複雜性封裝進一個可自助使用的平台,讓開發團隊專注於業務創新,而不是代碼開發完成後如何通過流水線發佈。

運維管理平台通過對底層資源編排能力進行封裝,提供應用部署、擴縮容、網絡與存儲管理、權限控制、審計、CI/CD等功能,從而實現運維流程的自動化和平台化

一、CD持續部署方式

運維管理平台實現應用自動化部署主要有以下2種實現路徑:

1.平台驅動部署

如果更注重用户體驗和部署效率,可以採用類似VelaUX的部署方式。

平台將應用配置(OAM 模型)持久化到數據庫中,在用户發起部署時,平台直接調用KubeVela完成應用發佈。這種模式前後端交互簡單、部署速度快,更適合平台化操作

2.Git驅動部署

如果更關注部署過程的可追溯性、審計能力以及企業合規要求,則可以採用GitOps模式。

在這種模式下,代碼倉庫作為唯一的事實源(Single Source of Truth),所有應用配置和變更都通過Git提交完成,由GitOps控制器(例如 ArgoCD)持續同步到Kubernetes集羣,從而實現可追溯、可審計、可審批的部署流程

二、GitOps概念

GitOps是一種以Git代碼倉庫為唯一可信源的雲原生應用交付與運維模式。

GitOps利用Kubernetes、Terraform等平台的聲明式API特性與DevOps實踐相結合,通過在Git倉庫中統一定義系統的期望狀態,由GitOps控制器(如ArgoCD/FluxCD)持續監聽、同步並校準系統狀態,確保實際運行環境始終與Git倉庫中定義的狀態保持一致。

GitOps並不依賴於具體工具(如 GitLab或ArgoCD/FluxCD),而在於部署流程是否滿足以下原則:

  • 以代碼倉庫作為唯一事實源
  • 能夠自動執行
  • 並且能完整追蹤操作與變更。

例如,將OAM應用信息存儲在Gitea中,一旦PR合併觸發ArgoWorkflows流水線執行,將OAM應用配置更新到KubeVela管控集羣,這種交付方式同樣符合GitOps風格。

工具 優勢 適合 OAM 場景嗎?
Argo Workflows 流水線 + 任務編排 → 一次性執行 Workflow ❌ 不適合管理持續狀態,需要額外邏輯做差異檢測和修復
Argo CD 原生GitOps控制器 → 持續同步 Git → K8s,自動矯正差異 ✅ 非常適合 OAM 應用管理,Git 倉庫就是唯一事實源,集羣狀態始終與 Git 保持一致

通過GitOps這種部署方式,可以實現基礎設施與雲原生應用的:

  • 自動化部署

  • 可追溯變更

  • 可審計流程

  • 環境一致性

三、平台工程融合GitOps

在現代平台工程體系中,平台UI充當統一門面,成為用户操作系統的唯一入口,而Git倉庫依然承擔系統狀態唯一事實源(Source of Truth)的角色。

平台工程封裝DevOps複雜性,解決開發者體驗問題,GitOps解決系統配置強一致性問題,兩者正在融合為現代雲原生交付體系。

1.KubeVela實現GitOps持續部署流程

KubeVela基於OAM開放應用模型,屏蔽了Kubernetes底層複雜的資源、調度、運維細節。

KubeVela以應用為中心提供統一的聲明式定義與管控能力,極大簡化了雲原生應用的交付與管理成本,讓研發人員只需要關注應用本身,而非複雜的基礎設施細節

KubeVela內置GitOps控制器工具插件FluxCD,也可以實現GitOps持續部署流程。

在GitOps最佳實踐中,應用代碼倉庫(App Code Repo)和 KubeVela配置倉庫(KubeVela Config Repository)在Git倉庫分開存儲,可以讓代碼和部署配置解耦

運維/SRE

運維/SRE直接維護KubeVela配置倉庫

image

開發人員

image

CI/CD大致流程如下:

  1. CI工具(GitLab-CI/Jenkins/ArgoWorkflows)完成源代碼集成和鏡像構建,推送Docker鏡像至鏡像倉庫(Harbor/JFrog Artifactory)
  2. KubeVela監聽(watch)到鏡像倉庫中鏡像版本變化,自動更新鏡像到KubeVela配置倉庫
  3. KubeVela又監聽(watch)到KubeVela配置倉庫的內容變化, 自動從KubeVela配置倉庫pull最新鏡像同步更新到Kubernetes集羣

2.平台工程融合GitOps

GitOps持續交付的默認用户入口是Git客户端,這要求用户掌握Git的基本操作。

但在實際場景中,運維平台的用户不僅包括開發和運維工程師,還會涉及產品經理等不熟悉Git客户端的角色

這時,內部開發者平台(IDP)就可以在GitOps之上封裝關鍵抽象層,將GitOps的底層流程封裝成直觀易用的UI界面讓所有用户羣體都能通過可視化操作完成持續部署

GitOps並不是平台工程的替代方案,而是平台工程的交付引擎。

平台工程融合GitOps後自動化交付流程大致如下

  • 前端提交JSON格式的OAM配置;
  • 後端保存JSON格式的OAM到關係型數據庫方便前端回顯
  • 後端根據JSON數據生成YAML文件並提交到KubeVela配置倉庫,如果前端發起更新OAM配置請求,後端重新生成同名新內容的yaml文件覆蓋原內容;
  • YAML文件由代碼倉庫統一存儲和管理;
  • ArgoCD監聽YAML文件變更將最新KubeVela配置同步更新到K8s集羣;
  • KubeVela負責OAM配置渲染、Workflow執行與應用部署,並輸出事件日誌;
  • 日誌採集服務統一收集管控集羣的事件與日誌上傳到ClickHouse數據庫;
  • 前端通過輪詢後端接口,從ClickHouse獲取並展示完整的應用部署事件和運行日誌;

 

 

 

參考

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.