美文网首页
FluxCD 方案设计与维护

FluxCD 方案设计与维护

作者: 行者深蓝 | 来源:发表于2023-02-16 14:28 被阅读0次

    第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

    相关文章

      网友评论

          本文标题:FluxCD 方案设计与维护

          本文链接:https://www.haomeiwen.com/subject/ekrqcdtx.html