10.1 什么是 GitOps 10.1.1 GitOps 出现的背景 先来看一个传统的云原生应用如何进行持续交付。图 10-1 展示了一个传统的 Push(也就是主动推进)交付模型,该交付模型包含了开发人员提交代码 ,代码质量检测(使用 SonarQube),Docker 镜像构建,以及使用 Helm 部署到 Kubernetes 集群的整个过程。 图 10-1 Push 交付模型 上述流程做好自动化以后,看起来也没什么问题。但认真思考,会发现 Push 交付模型中的流程都是从左往右推进。如果是云原生应用(用 yaml 文件描述,并将配置存储在仓库中的应用),随着时间的推移会出现下面问题: 很难保证配置描述的状态和云原生底座(如 kubernetes 集群)中的运行状态真正相符。