GitOps实操工具-Flux简介
我们相信,通过GitOps:
- 在git中描述你的整个系统状态的声明。包括:apps, config, dashboards, monitoring 和任何其它的内容。
- 所有描述的都可以自动化。使用 YAMLs 实现系统的强制一致性。你不需要运行
kubectl
, 所有的改变都通过git进行。使用diff tools检测观测到的和期望的状态的差别,以及得到通知。 - 推送代码而不是容器。所有控制的内容都通过pull requests。对于开发新手没有学习曲线,他们只需要使用标准的git PR 过程。版本化的git允许你从任何的快照恢复系统,对于pull request的运维改变是透明的过程,修复产品的问题通过 pull request 来代替对运行系统的改变。
- 译注:
- 能够将应用更容易地部署到不同的集群之中,以及在多种环境下的测试。
- 数据在系统重做的过程中如何处理?恐怕会引起问题。
- 切换过程中的事务性,需要单独进行处理,以保证ACID。
Flux是一个工具,自动保障git中的配置与集群的配置状态相匹配。 它在集群中使用 operator触发 Kubernetes中的部署,意味着你不需要独立的 CD tool. 它监视所有的相关的 image repositories,检测新的 images, 触发deployments 并且更新到期望的运行配置。
收益就是:你不需要授权CI 存取cluster, 所有的改变都是原子和事务性的。git 具有audit log,每一次事务要么失败要么成功。你可以完全以代码为中心,而无需担心基础设施的事情。
Flux是干什么的?
Flux是一个非常有用的交付工具,用于持续交付流水线的末端。Flux确保你的最新的容器镜像和配置能够应用到集群之中,并保持一致。
特征
主要特性包括:
- Automated git → cluster synchronisation
- Automated deployment of new container images
- Integrations with other devops tools (Helm and more)
- 不需要额外的服务和基础设施 - Flux 位于集群内部。
- 直接控制集群部署的状态 (rollbacks, lock a specific version of a workload, manual deployments)
- 可观测性: git commits are an audit trail, and you can record e.g., why a given deployment was locked.
与Weave Cloud的关系
Weave Cloud是Weaveworks提供的一个包含Flux的SaaS产品,包括:
- 部署的UI和alerts:所有的 flux 操作可以通过点击即可。
- 全部的可观测和集群透视:集群监视面板,实时配置图,用于跟踪和分析集群状态。
关于Weave Cloud的更多信息,参考 its homepage。
开始使用 Flux
Flux使用的相关文档,如下:
- Introduction to Flux
- FAQ
- How it works
- Installing Flux
- Using Flux
- Upgrading to Flux v1
- Troubleshooting
开发者信息
贡献
Flux 采用典型的 PR workflow. 所有的贡献代码通过 PRs进行,需满足下面的指南。
指南
- All code must abideGo Code Review Comments
- Names should abideWhat's in a name
- Code must build on both Linux and Darwin, via plain
go build
- Code should have appropriate test coverage, invoked via plain
go test
除此之外,有几个检查机制会被应用,查看the lint script 获取详细信息。