FluxCD 方案设计与维护

第1章 概述

FluxCD是一个开源的容器服务编排和持续交付工具。它使用GitOps模型,通过Git服务器和一种特定的工作流模型,为Kubernetes应用提供灵活的自动化部署管理,以实现容器应用的持续交付。FluxCD可以帮助实现容器应用的高可用性、可扩展性和快速响应变更的能力。

image.png

第2章 流水线改造需求

原有 EKS IAC流水线会依次调用 IAC 代码仓库 eks-config -> eks-environment -> aws_eks_module完成新建或者变更EKS集群,在配置EKS addon过程会执行 eks-environment/kubernetes/addon.sh 脚本,完成

1. cloudwatch agent
2. ebs csi
3. efs csi
4. elb
5. fluentbit agent
  1. 原有的方式弊端,创建好的EKS集群升级或者addon配置微调,都需要调整eks-environment代码,重新运行流水线,耗时周期长,并且非常不够灵活

  2. 使用FluxCD工具改造后,会将原有addon.sh 脚本的维护工作托管到一个分离的Git仓库,使用预配置到EKS集群的FluxCD工具完成软件安装或配置变更的同步,运维工作更加简化与便捷

第3章 EKS IAC 流水线设计与开发

  1. 新增 fluxcd-k8s-addon Git仓库,存放用于部署 cloudwatch agent,ebs csi,efs csi,elb,fluentbit agent 应用的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 和关联 fluxcd-k8s-addon 的初始化配置

  4. FluxCD sync的仓库管理实践,建议建立base配置基线 和差异配置,

  5. base配置基线保存适用于所有集群的默认配置

  6. 差异配置的定义在具体每个集群中,每个集群的自定义变更影响范围仅限所属集群

  7. 具体代码变更见如下相关仓库

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 测试与部署

整个开发阶段,不包括代码审核等待时间,耗时记录如下:

EKS集群 所属环境 所属阶段 工作量
sandbox3 sandbox环境 开发测试 约 1-2周
sandbox3 sandbox环境 开发测试 约 1-2周
dev 测试环境 测试验证 实际耗时 1-2 小时
prod 生产环境 生产发布 实际耗时 1-2 小时

首先sandbox环境进行代码编写与调试,测试验证,完成评审后,依此 dev,prod 两个客户业务集群完成上线验证

第5章 FluxCD 日常运维

  1. fluxCD 控制器自身选择稳定版本即可,无需频繁升级,关联的 gitops 仓库需要随着EKS 版本升级需要定期同步更新,严格按照sandbox -> 测试->生产流水发布即可,示例如下
EKS 1.22 EKS 1.23 EKS 1.24
gitops/base --- --- 版本升级
gitops/plugin --- 版本升级 版本升级
gitops/cluster 测试环境 测试验证 测试环境
  1. 日常运维主要涉及如下两个代码仓库,详见仓库中 README.md文档

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

  1. 日常运维注意事项:

FluxCD 本身过于自动化,新接手维护人员需要分配严格的gitlab角色权限,和环境操作权限,避免操作失误导致错误放大

  1. 日常运维能力要求:

  2. 对Git分支管理操作要求熟练

  3. 具备基本的k8s运维能力

  4. 具备helm/chart使用经验

第6章 FluxCD 总结

  1. FluxCD 是一个面向容器应用的高效运维工具,Gitops工作模式除了能够高效自动完成工作,也自动将配置发布变更的风险,因此需要严格控制遵循Gitops工作流,确保主分支一定是合并严格测试的代码和配置

  2. FluxCD的局限性,仅适合容器应用场景,无法管理非容器应用,也不适合IAC自动化管理(因为对于 IaaS来说不存在真正意义的回滚,只有创建和删除)

第7章 FluxCD 扩展思考

结合 FluxCD 可以扩展为面向容器应用的GitOPS通用解决方案(包括普通容器应用,分布式容器应用)

  1. 结合Flagger与支持灰度的ingress 可以实现普通应用的流水线发布的设计,可以实现A/B,蓝绿,金丝雀发布,2022 MSP renew 中的App流水线demo 就是采用如下实现方式
image.png
  1. 如果遇到客户有微服务架构应用的发布管理需求,可以结合service mesh 实现微服务模块发布的流水线设计方案
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容