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