本文主要是介绍当 Argo CD 遇上 Flux CD,谁才是 Kubernetes 上 GitOps 的真王者?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
公众号关注 「奇妙的 Linux 世界」
设为「星标」,每天带你玩转 Linux !
在我们开始实现Gitops
之前,让我为那些不熟悉 GitOps
及其工具的人提供一些背景。
GitOps
背后的基本思想是拥有一个版本控制的代码,就像在 Git
存储库中一样,它包含我们在生产中期望的基础设施的声明性定义,以及一个确保我们在那里拥有该状态的自动化过程。
这意味着每个pull
请求都可以为您的用户发布一个新特性,任何断点都可以通过简单的git revert
来回滚。因此,开发人员只需要访问代码,而不需要访问实际环境。请注意,这并不意味着我们在限制开发人员;这只会让开发人员更接近环境,从而使他们能够使用。
Argo CD
和 Flux CD
都是著名的工具,可以将您的实时环境与 Git
存储库中的所需状态相匹配。而这个博客内容将帮助您了解这些工具的核心功能,然后进行公平的比较,以便您做出正确的选择。
ArgoCD
Argo CD
是Kubernetes
的声明式GitOps
持续交付工具。它具有可伸缩性、安全性(以及SSO
集成)、多集群多租户支持和可扩展性。
安装
Argo CD
的安装非常简单,可以在入门页面上看到。
https://argo-cd.readthedocs.io/en/stable/getting_started/
要访问UI
,使用这两种方法暴露Argo CD
服务
如果你计划只使用核心的argocd
,你可以用argocd CLI
来控制它。要安装命令行,只需运行命令行
核心概念
在Argo CD
中,所有相关资源都被分组并部署为一个名为Application
的单元。每个申请都是Project
的一部分,Project
是Argo CD
的租赁单位。每个租户可以被限制在一个名称空间和集群中。
您的应用程序链接到一个版本控制,比如Git
,它决定应用程序的状态。一旦部署,资源就处于Live
状态。每当在Git
中更改代码时,就会创建一个新的Desired
状态,可以通过仪表板上的快速刷新查看该状态。为了使您的活动状态与期望的状态相匹配,您可以同步它们。
它还允许您监视应用程序的运行状况,并在出现故障时,允许使用历史记录和回滚功能回滚到旧版本。
预排
现在到仪表板上… 仪表盘看起来非常现代,非常直观。要开始一个新项目,只需单击new App
按钮并填写以下细节。
在源代码部分,提供Git repo
的URL
和文件夹的路径(这是从repo
派生的响应式下拉列表)。然后向下滚动选择集群,可以是你已经注册的任何一个集群。
已经注册: https://argo-cd.readthedocs.io/en/stable/getting_started/#5-register-a-cluster-to-deploy-apps-to-optional
创建完成后,你会在主仪表板上看到一个以你的应用名称命名的卡片。点击它到达这个视图。对于本演示,使用了kustomize-guestbook
示例应用程序。
kustomize-guestbook: https://github.com/argoproj/argocd-example-apps/tree/master/kustomize-guestbook
live
状态不等于想要的状态(因为我们还没有部署任何东西),因此它显示OutOfSync
状态。现在单击Sync
按钮进行部署
该视图显示了部署中复制集中的pod
的粒度。在这里,您可以单击任何元素来查看它们的事件、日志和状态。
现在,每当Git
中的代码发生变化时,您都可以单击Refresh
以查看新的Sync
状态。如果不同步,比如需要改变资源,你可以点击App Diff
查看这些差异,然后点击sync
部署它们。
Flux CD
Flux
最初由Weaveworks
开发,现在在CNCF
下孵化,是一套针对Kubernetes
的持续和进步的交付解决方案,是开放和可扩展的。
安装
Flux
有一个cli
优先的方法,UI
只是一个附加组件。要安装Flux CLI
,请使用其中之一
安装Flux CLI: https://fluxcd.io/docs/installation/
# HOMEBREW
brew install fluxcd/tap/flux# GOFISH
gofish install flux# BASH
curl -s https://fluxcd.io/install.sh | sudo bash# YAY
yay -S flux-bin# NIX OS
nix-env -i fluxcd# CHOCOLATEY
choco install flux
安装CLI
后,使用以下命令在Kubernetes
集群上安装Flux
# For generic git server
flux bootstrap git \--url=ssh://git@<host>/<org>/<repository> \--branch=<my-branch> \--path=clusters/my-cluster# For GitHub or GitHub enterprise
flux bootstrap github \--owner=my-github-username \--repository=my-repository \--path=clusters/my-cluster \--personal
核心概念
Flux
是一种更直接的GitOps
方法,更少的人为干扰。这个过程从Bootstrapping
开始。这将在集群上安装flux
组件,该组件将监视Source
上的一个目录。这个源上的任何更改都将通过Reconciliation
过程更新到集群上。它可以与Helm
释放,Kustomization
或保存在桶中的文物一起使用。
预排
让我们从一些预先配置开始… 导出将被flux CLI
用于与你的repo
交互的Git
登录细节。
接下来,检查集群是否兼容。您应该看到这样的输出
现在使用git
配置将flux
安装到你的集群中
这将在你的GitHub
帐户中创建一个test-repo
,并在repo
中添加Flux
组件清单。它还将附带组件部署到集群,并将它们配置跟踪集群中的./clusters/my-cluster/
目录。如果你克隆这个和检查内容,你会发现类似的东西
这样,您的设置就准备好了。您可以在test-repo/clusters/my-cluster/
中创建任何清单,flux
将轮询它并部署更新。
你也可以试试它实验性的web UI。
https://github.com/fluxcd/webui
那我该选哪个呢?
虽然它们都遵循相同的路径,但这些工具之间存在差异。让我们看看,然后我会让你决定什么最适合你
代码协作中的灵活性
Argo
允许将多个代码库连接到集群,而Flux
每个operator
只能连接一个代码库。如果多个团队在同一个应用程序上工作,并提供不同的清单,这将有利于Argo
。
Manifest工具支持
Argo
和Flux
都与Helm
和Kustomization
合作。Argo
还可以使用ksonnet
和jsonnet
。此外,这两种工具都支持作为配置管理插件配置的自定义配置管理工具。
多租户
直到几个月前,这可能还在Argo
的篮子里,然而,Flux v2
对多租户和服务器端协调的支持现在甚至在这个领域。
Flux多租户:https://github.com/fluxcd/flux2-multi-tenancy
服务器端协调的支持: https://fluxcd.io/blog/2021/09/server-side-reconciliation-is-coming/
Web UI
Argo
提供了一个强大的UI
,可以帮助可视化不同对象之间的关系,并更好地监控它们,而Flux
则完全依赖于CLI
。你可以添加web UI
到Flux
,但它仍然是实验性的。
web UI: https://github.com/fluxcd/webui
Flux: https://github.com/fluxcd/webui
身份验证
Argo
可以与SSO
集成,并且内置了对RBAC
的额外支持。Flux
只与服务帐户的RBAC
一起工作。
自动化容器更新
Flux
在自动化容器更新方面占了上风,而另一方面,在Argo
中需要手动提交和同步。
管理
另一点是Flux
的简单设计。Flux
可以自动部署应用程序,几乎无需维护。Argo
需要你来部署但我个人更喜欢在这里控制。
最后的判决
Argo
和Flux
都是非常棒的工具,为它们的用例提供了很好的服务。由于Argo
的可扩展控制和多功能性,我总是倾向于使用Argo
。然而,Flux v2
可能很快就会改变这一点!
参考资料
[1]
参考地址: https://rajputvaibhav.medium.com/argo-cd-vs-flux-cd-right-gitops-tool-for-your-kubernetes-cluster-c71cff489d26
本文转载自:「云原生CTO」,原文:https://tinyurl.com/3x8cf9w8,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。
你可能还喜欢
点击下方图片即可阅读
5 种快速查找容器文件系统中文件的方法
点击上方图片,『美团|饿了么』外卖红包天天免费领
更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!
这篇关于当 Argo CD 遇上 Flux CD,谁才是 Kubernetes 上 GitOps 的真王者?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!