GitOps与DevOps

随着DevOps的发展以及采用DevOps思维方式的组织不断增多,DevOps的许多不同方面都日趋成熟。随着DevOps的成熟,在概念和思维方式(DevSecOpsAIOpsSecOps等)领域也在不断发展。GitOpsDevOps中的另一个萌芽概念,其根源在于使开发人员能够使用git创建CI/CD来自动化多云和多容器编排集群的开发和运营。

DevOps大家都很熟悉,不做介绍,GitOps是一种集成在DevOps周期中的技术,是一种用于存储,管理和检索K8sSwarm等容器协调器的部署描述符的方法。现在,它已扩展到可以是IaC文档(TerraformCloudformation等),软件配置(AnsiblePuppet等)。

GitOps 的两种模式

GitOps 的部署策略有两种实现方式:基于 Push 的方式和基于 Pull 的方式。两者的主要区别如下:

基于 Push 的方式

 

基于 Pull 的方式

 

Push 方式是作为上帝视角来做环境的更新,而 Pull 方式则可以利用权限鉴权等信息做安全性及合规性保障。

Push 方式是在代码变更后触发更新,如果有人手动修改了集群中的配置,集群中的配置就会和代码库中的配置有差异;而 Pull 方式实现方式,则是检测集群和代码库中的配置,当发现不一致时,自动/手动触发更新,让环境中使用的配置始终和代码库中的保持一致。

GitOps 是实现 DevOps 的方法之一。

GitOps Git 作为唯一可信源,并结合一些工具例如 FluxCD ArgoCD 来实现持续部署。

此外,GitOps DevOps 实际上还涉及到不同的领域,例如:

  • 持续构建
  • 代码扫描
  • 单元测试
  • 持续部署
  • 日志、监控和告警

GitOps 相比较 DevOps 概念诞生相对晚一些,工具链也比较新。比如:

  • 容器和镜像:Docker
  • 持续集成:GitHub ActionJenkinsTekton
  • 镜像仓库:Harbor
  • 应用定义:HelmKustomize
  • 持续部署:FluxCDArgoCD
  • 秘钥管理:Vault
  • 容器编排:K8s
  • 网关:Ingress-Nginx
  • 日志:Grafana LokiFluentd
  • 监控:Grafana
  • 告警:Prometheus
  • 应用开发:Nocalhost
posted @ 2023-01-27 11:30  muzinan110  阅读(159)  评论(0编辑  收藏  举报