什么是 GitOps?
GitOps 是实现持续交付的一种方式。GitOps 使用 Git 作为声明式基础设施和应用程序的真实来源。当对 Git 进行更改时,自动化交付管道会上线对基础设施的更改。这个想法还可以更进一步——使用工具来比较实际的生产状态和源代码控制中描述的状态,然后告诉你什么时候集群的状态跟描述的不符。
Git 启用声明式工具
通过使用 Git 这样的声明式工具可以对整套配置文件做版本控制。通过将 Git 作为唯一的配置来源,可以很方便的复制整套基础设施,从而将系统的平均恢复时间从几小时缩短到几分钟。

GitOps 赋能开发人员拥抱运维
Weave Cloud 的 GitOps 核心机制在于 CI/CD 工具,其关键是支持 Git 集群同步的持续部署(CD)和发布管理。Weave Cloud 部署专为版本控制系统和声明式应用程序堆栈而设计。以往开发人员都是使用 Git 管理代码和提交 PR(Pull Request),现在他们也可以使用 Git 来加速和简化 Kubernetes 和 Istio 等其他声明式技术的运维工作。
GitOps 的三个核心原则
下面描述的是为何 GitOps 既是 Kubernetes 又是云原生核心的原因:
1. GitOps 的核心是声明式配置
通过使用 Git 作为实体源,并使用 Kubernetes 做滚动更新,可以观察集群并将其与期望的状态进行比较。通过将声明性配置视为代码,它允许您通过在未成功时重新应用更改来强制收敛。
2. 不应该直接使用 Kubectl
根据一般规则来看,将代码经过 CI 直接 push 到生产并不是个好主意。许多人通过 CI 工具驱动部署,但是当你这样做的时候你可能不得不做一个访问生产的东西。
3. 使用 operator 模式
通过 operator 模式,集群将始终与 Git 中签入的内容保持同步。Weave Flux 是开源的,它是使用 Istio 演示下面的金丝雀部署的基础,您可以使用 operator 管理集群中的更改。

无论是开发流程还是生产流程,还是从预发到合并到生产,operator 都会将更改 pull 到集群中,即使是有多个更改也能以原子的方式部署。

Istio 的 GitOps 工作流程
接下来,Varun Talwar 谈到了 Istio 是什么以及如何使用 GitOps 工作流管理应用程序。
Istio 是一年前发布的服务网格。它是一个专用的基础设施层,用于为微服务架构中的所有服务间交互提供服务。Istio 中的所有操作都是通过声明式配置文件驱动的。也就是说像 Istio 这样的服务网格可以让开发人员在 Git 中像管理代码一样完全的管理服务行为。




