2019独角兽企业重金招聘Python工程师标准>>>
GitOps实操工具-Flux简介
- 本文编译来自 https://github.com/openthings/flux
- 本文地址 https://my.oschina.net/u/2306127/blog/1826581,by openthings, 2018.06.08.
- 参考:
- GitOps—像代码一样管理Istio配置,https://my.oschina.net/u/2306127/blog/1822993
- GitOps实操工具-Flux安装与设置,https://my.oschina.net/u/2306127/blog/1827186
我们相信,通过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
开发者信息
Build documentation
Release documentation
贡献
Flux 采用典型的 PR workflow. 所有的贡献代码通过 PRs进行,需满足下面的指南。
指南
- All code must abide Go Code Review Comments
- Names should abide What'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 获取详细信息。
获取帮助
如果有任何关于 Flux 和持续交付有关的问题,请:
- 读 the Weave Flux docs.
- 邀请参加到 Weave community slack.
- 到 #flux slack channel提问。
- 参见 Weave User Group and get invited to online talks, hands-on training and meetups in your area.
- 发送邮件到 [email protected]
- File an issue.
欢迎你的任何反馈!