FluxCD 方案設(shè)計(jì)與維護(hù)

第1章 概述

FluxCD是一個(gè)開源的容器服務(wù)編排和持續(xù)交付工具。它使用GitOps模型,通過Git服務(wù)器和一種特定的工作流模型,為Kubernetes應(yīng)用提供靈活的自動(dòng)化部署管理,以實(shí)現(xiàn)容器應(yīng)用的持續(xù)交付。FluxCD可以幫助實(shí)現(xiàn)容器應(yīng)用的高可用性、可擴(kuò)展性和快速響應(yīng)變更的能力。

image.png

第2章 流水線改造需求

原有 EKS IAC流水線會(huì)依次調(diào)用 IAC 代碼倉庫 eks-config -> eks-environment -> aws_eks_module完成新建或者變更EKS集群,在配置EKS addon過程會(huì)執(zhí)行 eks-environment/kubernetes/addon.sh 腳本,完成

1. cloudwatch agent
2. ebs csi
3. efs csi
4. elb
5. fluentbit agent
  1. 原有的方式弊端,創(chuàng)建好的EKS集群升級(jí)或者addon配置微調(diào),都需要調(diào)整eks-environment代碼,重新運(yùn)行流水線,耗時(shí)周期長,并且非常不夠靈活

  2. 使用FluxCD工具改造后,會(huì)將原有addon.sh 腳本的維護(hù)工作托管到一個(gè)分離的Git倉庫,使用預(yù)配置到EKS集群的FluxCD工具完成軟件安裝或配置變更的同步,運(yùn)維工作更加簡化與便捷

第3章 EKS IAC 流水線設(shè)計(jì)與開發(fā)

  1. 新增 fluxcd-k8s-addon Git倉庫,存放用于部署 cloudwatch agent,ebs csi,efs csi,elb,fluentbit agent 應(yīng)用的kustomization 配置文件

  2. 修改 eks-config-test Git倉庫中 terraform.tfvars.json 文件 新增變量: cluster_name,fluxcd_chart_registry, fluxcd_chart_version

  3. 修改 eks-environment Git倉庫 kubernetes/addon.sh 修改為僅安裝FluxCD 和關(guān)聯(lián) fluxcd-k8s-addon 的初始化配置

  4. FluxCD sync的倉庫管理實(shí)踐,建議建立base配置基線 和差異配置,

  5. base配置基線保存適用于所有集群的默認(rèn)配置

  6. 差異配置的定義在具體每個(gè)集群中,每個(gè)集群的自定義變更影響范圍僅限所屬集群

  7. 具體代碼變更見如下相關(guān)倉庫

https://xxxx/xxx/eks_config/eks-config-test
https://xxx/xxx/eks_config/eks-environment
https://xxx/xxx/gitops/fluxcd-k8s-addon.git

第4章 FluxCD 測(cè)試與部署

整個(gè)開發(fā)階段,不包括代碼審核等待時(shí)間,耗時(shí)記錄如下:

EKS集群 所屬環(huán)境 所屬階段 工作量
sandbox3 sandbox環(huán)境 開發(fā)測(cè)試 約 1-2周
sandbox3 sandbox環(huán)境 開發(fā)測(cè)試 約 1-2周
dev 測(cè)試環(huán)境 測(cè)試驗(yàn)證 實(shí)際耗時(shí) 1-2 小時(shí)
prod 生產(chǎn)環(huán)境 生產(chǎn)發(fā)布 實(shí)際耗時(shí) 1-2 小時(shí)

首先sandbox環(huán)境進(jìn)行代碼編寫與調(diào)試,測(cè)試驗(yàn)證,完成評(píng)審后,依此 dev,prod 兩個(gè)客戶業(yè)務(wù)集群完成上線驗(yàn)證

第5章 FluxCD 日常運(yùn)維

  1. fluxCD 控制器自身選擇穩(wěn)定版本即可,無需頻繁升級(jí),關(guān)聯(lián)的 gitops 倉庫需要隨著EKS 版本升級(jí)需要定期同步更新,嚴(yán)格按照sandbox -> 測(cè)試->生產(chǎn)流水發(fā)布即可,示例如下
EKS 1.22 EKS 1.23 EKS 1.24
gitops/base --- --- 版本升級(jí)
gitops/plugin --- 版本升級(jí) 版本升級(jí)
gitops/cluster 測(cè)試環(huán)境 測(cè)試驗(yàn)證 測(cè)試環(huán)境
  1. 日常運(yùn)維主要涉及如下兩個(gè)代碼倉庫,詳見倉庫中 README.md文檔

https://xxx/xxx/eks_config/eks-config-test
https://xxx/xxx/gitops/fluxcd-k8s-addon.git

  1. 日常運(yùn)維注意事項(xiàng):

FluxCD 本身過于自動(dòng)化,新接手維護(hù)人員需要分配嚴(yán)格的gitlab角色權(quán)限,和環(huán)境操作權(quán)限,避免操作失誤導(dǎo)致錯(cuò)誤放大

  1. 日常運(yùn)維能力要求:

  2. 對(duì)Git分支管理操作要求熟練

  3. 具備基本的k8s運(yùn)維能力

  4. 具備helm/chart使用經(jīng)驗(yàn)

第6章 FluxCD 總結(jié)

  1. FluxCD 是一個(gè)面向容器應(yīng)用的高效運(yùn)維工具,Gitops工作模式除了能夠高效自動(dòng)完成工作,也自動(dòng)將配置發(fā)布變更的風(fēng)險(xiǎn),因此需要嚴(yán)格控制遵循Gitops工作流,確保主分支一定是合并嚴(yán)格測(cè)試的代碼和配置

  2. FluxCD的局限性,僅適合容器應(yīng)用場(chǎng)景,無法管理非容器應(yīng)用,也不適合IAC自動(dòng)化管理(因?yàn)閷?duì)于 IaaS來說不存在真正意義的回滾,只有創(chuàng)建和刪除)

第7章 FluxCD 擴(kuò)展思考

結(jié)合 FluxCD 可以擴(kuò)展為面向容器應(yīng)用的GitOPS通用解決方案(包括普通容器應(yīng)用,分布式容器應(yīng)用)

  1. 結(jié)合Flagger與支持灰度的ingress 可以實(shí)現(xiàn)普通應(yīng)用的流水線發(fā)布的設(shè)計(jì),可以實(shí)現(xiàn)A/B,藍(lán)綠,金絲雀發(fā)布,2022 MSP renew 中的App流水線demo 就是采用如下實(shí)現(xiàn)方式
image.png
  1. 如果遇到客戶有微服務(wù)架構(gòu)應(yīng)用的發(fā)布管理需求,可以結(jié)合service mesh 實(shí)現(xiàn)微服務(wù)模塊發(fā)布的流水線設(shè)計(jì)方案
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容