GitOps 将 Git 作为应用程序开发和云基础设施的唯一事实源;采用声明式语句来简化配置和部署。由于 Git可用于基础设施即代码(IaC)和应用程序开发。
1 GitOps好处
GitOps 提供了一些优势,该方法充分利用了云原生应用程序和可伸缩云基础设施的优势。
GitOps 将持续交付与云原生优势和 IaC 结合起来,提供了这两个领域的最佳服务。GitOps 最佳实践还标准化了端到端的管道,而无需进行大的更改。
2 GitOps工具
有无数工具可以帮助你将 GitOps 方法与现有工作流进行集成。
2.1 Kubernetes
Kubernetes 是 GitOps 的核心。Kubernetes 现在提供了许多自动化工具,可以简化云基础设施的部署和扩展。
2.2 Git
作为一个开源的版本控制平台,Git 非常强大。
2.2.1参考地址
https://git-scm.com/
2.3 Helm
helm是kubernetes中查找、分享、构建应用的最佳方式。
2.3.1参考地址
https://helm.sh/
2.4 Flagger
flagger是一个k8s operator,可以基于多种ingress 实现金丝雀升级,以进行流量转移,并使用Prometheus指标进行流量分析。canary分析器可以通过webhooks进行扩展,以运行系统集成/验收测试,负载测试或任何其他自定义验证。
2.5 Prometheus
Prometheus 可以充当 GitOps 的监控工具。如果变更没有通过 Flagger 设置的测试,它将触发报警。
2.5.1参考地址
https://prometheus.io/docs/introduction/overview/
2.6 Flux
Flux 或 FluxCD 只是 Kubernetes 的 GitOps 操作符。它会使用 Git 库中的配置自动调整 Kubernetes 的集群配置。
2.6.1参考地址
https://justgetflux.com/
2.7 Quay
对于镜像管理,可以使用 Quay。可以使用该工具对容器镜像进行细致的管理,而所有这些都不会牺牲安全性和可靠性。
2.7.1参考地址
https://quay.io/
2.8 Auto-Assign
为了使你的 Git 拉取请求和更新井井有条,可以使用一些工具。Auto-Assign 就是其中之一。
2.9 CodeFactor
为了持续维护代码的质量,CodeFactor 是另一个可以集成到 GitOps 管道中的工具。它是一个自动的代码审查工具,当发现新的 Git 提交时,它会根据预定义的标准自动检查代码。
2.9.1参考地址
https://support.codefactor.io/
2.10 DEP
DEP是专门为管理 Go 应用程序和服务的依赖关系而创建的,并且它不会减慢 GitOps 管道的速度。
2.10.1参考地址
https://depusa.com/
2.11 Kodiakhq
另一个用于管理代码的 Git 应用程序是 Kodiakhq。但该工具主要专注于自动更新和管理拉取请求,同时减少 CI 的负载。随着 Kodiakhq 的启动和运行,不再需要手动合并请求,这可以节省时间和宝贵的资源来执行其他任务。
2.11.1参考地址
https://github.com/loadsmart/kodiak
2.12 Atlantis
Atlantis 自动执行对 Terraform 的拉取请求,并在发现新请求时触发进一步的操作。
2.13 Helm Operator
Helm Operator 还通过将自动化引入到 Helm Charts 发布中,进一步将 Helm 推向了新的高度。它被设计为在 GitOps 管道中从头开始工作,因此集成 Helm Operator 非常简单。
2.13.1参考地址
https://github.com/topics/helm-operator
2.14 Gitkube
Gitkube 更加专注于使用 Git push 构建和部署 Docker 镜像。
2.15 Jenkins X
当谈论 GitOps 工具时,我们真的不能不谈 Jenkins X。Jenkins 最初是作为 Kubernetes 的 CI/CD 平台的,但是该平台可以用来无缝地管理你的 GitOps 管道。它甚至具有一个内置的预览环境来最大程度地减少代码和部署错误。
2.15.1参考地址
https://jenkins-x.io/
2.16 Restyled
为了实现更好的标准化,Restyled 会强制执行某种编码样式。
2.16.1参考地址
https://restyled.io/
2.17 Argo CD
Argo CD 采用了一种更直观的方式来处理 GitOps。它可视化了应用程序和环境的配置,并使用图表和可视化的提示来模拟 GitOps 管道。你也可以将 Argo CD 与 Helm 和其他 GitOps 工具结合使用。
2.17.1参考地址
https://argoproj.github.io/
2.18 Kapp
Kapp 是 Kubernetes 应用程序的衍生名称,专注于管道的部署方面。
2.19 Kpt
Kpt 或“kept”是用于简化 Kubernetes 资源部署和配置的另一种工具。它使用声明来处理资源配置,从而使开发人员可以更好地控制他们的基础设施。使用 Kpt 完全不需要手动配置。
2.20 Stale
Stale 能处理一些令许多开发人员都很恼火的事情:悬而未决或被放弃的问题以及拉取请求。使用 Stale,你可以配置何时将拉取请求和问题视为放弃,然后自动管理这些请求和问题。
2.21 Kube Backup
Kube Backup 是维护 Kubernetes 集群配置的重要工具。它将集群备份到 Git,特别是集群的资源状态。如果环境发生灾难性故障,可以使用 Kube Backup 来更快地启动和运行应用程序。
2.22 Untrak
Untrak 是一个用于管理 Kubernetes 集群资源的便捷工具。该工具会自动在集群中查找未跟踪的资源。它还可以处理垃圾回收,并能帮助你保持 Kubernetes 集群的精益。
2.23 Fluxcloud
Fluxcloud 整合了 Slack 与 GitOps。如果你使用 Flux(FluxCD),那么也一定会喜欢 Fluxcloud。它消除了对 Weave Cloud 的需求,并允许为每个 FluxCD 活动生成 Slack 通知。
2.24 Stickler CI
代码风格的指南和标准!Sticker CI 在不影响管道本身的情况下简化了编码风格的实现。只要在工作流程中实现 Stickler CI,就可以快速且一致地进行代码检查和标准化。
2.24.1参考地址
https://stickler-ci.com/
2.25 Task List Completed
Task List Completed 将停止合并具有未完成任务的拉取请求。
2.26 Slack
Slack 支持关闭和打开拉取请求和问题等的任务,以及直接从 Slack 应用程序中与之交互的任务。
2.26.1参考地址
https://github.com/slackhq
2.27 CI Reporter
CI Reporter 能派上用场的地方。该工具会收集构建失败的错误报告,然后再将其添加到相关的拉取请求中。
2.28 PR Label Enforce
PR Label Enforce,在合并拉取请求之前,该工具会强制执行某些标签。可以将“ready”或“ checked”之类的标签设置为参数,然后使用其他工具来自动分配这些标签。
2.29 Git-Secret
在 Git 中存储私有数据,可以使用 Git-Secret。当你需要存储敏感的配置文件或密钥时,这非常方便。
2.30 Kamus
Kamus 能自动将零信任加密和解密合并到你的 GitOps 工作流中。
2.31 Sealed Secrets
Sealed Secrets 通过单向加密过程来对密钥进行加密,Sealed Secrets 为 GitOps 管道提供了最大的安全性。
2.32 Pull Panda
Pull Panda 可以帮忙你实现这一目标,它可以使协作工作变得更轻松、更高效。它向 Slack 发送拉取提醒和分析,甚至可以自动执行拉取请求的分配。
2.33 Sleeek
Sleek 基本上是一个机器人,是一个虚拟助手,可以帮助项目经理和开发团队通过一系列问题来保持同步。