更新时间:2024-06-17 GMT+08:00

GitOps

GitOps概述

GitOps是使用Git仓库来管理应用的部署模板,将Git仓库作为Kubernetes集群中部署应用的唯一来源,实现应用的持续部署,实现多集群的GitOps持续交付,满足应用的高可用部署、系统组件多集群分发等需求。GitOps假设每一个基础设施都被表示为一个具有版本控制功能的存储系统中的文件,并且有一个自动化的过程可以无缝地将更改的应用同步到应用程序运行环境。

而结合Kubernetes生态中的声明式API、Controller Loop可以更好得实现这一思想,该系统从一开始就遵循声明性规范以及最终一致性和收敛性的原则。

约束限制

为非华为云集群启用配置管理能力前,请确保集群能够拉取公网镜像。

GitOps实现方式

  • 开发运维人员基于Git工作流,可将现有流程,从应用开发扩展到到部署、应用生命周期管理和基础架构配置,开箱即用,客户无须运维Gitops工具。
  • Gitops插件通过内置Kustomize结合Base/overlay制品组织方式和HelmRelease结合valuesFrom/valuesFiles等方式的能力,满足客户差异化的配置管理诉求。
  • 将Git仓库中最新合入的制品配置信息同步部署至多个集群中,同时对应用发布行为进行版本化管理和权限控制,提供发布回滚和版本迭代控制,并进行审计跟踪。
  • 所需的基础架构状态会自动应用于基础架构,而无需任何手动干预,持续监控并确保基础架构始终遵循Git存储库中的配置,确保基础设施处于理想状态。
    图1 GitOps实现方式

GitOps优势

  • 简单易学:Git易于被开发者接受,易于集成,无需额外学习成本。
  • 安全性高:开发者使用GitOps无需任何Kubernetes集群权限,仅需要Git仓库权限,保证集群安全可靠。
  • 可靠性强:提供原生Kubernetes资源、Helm Chart资源、Kustomize等资源交付清单的版本管理,方便用户进行部署应用、增量变化和应用配置的回滚。
  • 应用持续部署:Kubernetes集群和Git仓库中的应用状态自动同步,保持一致,实现应用持续部署。

GitOps价值

  • 提供原生Kubernetes资源、Helm Chart资源、Kustomize等资源交付清单的版本管理,方便用户进行部署应用、增量变化和应用配置的回滚。
  • 更精细的多集群、多环境差异化配置体验:
    • 复用同一个应用组件(如多个业务线都对数据库的连接池模板复用)的交付模板,形成最佳实践模板。
    • 进行更灵活的标签替换、字符串、版本号替换/参数的动态嵌入/Patch操作。