- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章当 Argo CD 遇上 Flux CD,谁才是 Kubernetes 上 GitOps 的真王者?由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
在我们开始实现Gitops之前,让我为那些不熟悉 GitOps 及其工具的人提供一些背景.
GitOps 背后的基本思想是拥有一个版本控制的代码,就像在 Git 存储库中一样,它包含我们在生产中期望的基础设施的声明性定义,以及一个确保我们在那里拥有该状态的自动化过程.
这意味着每个pull请求都可以为您的用户发布一个新特性,任何断点都可以通过简单的git revert来回滚。因此,开发人员只需要访问代码,而不需要访问实际环境。请注意,这并不意味着我们在限制开发人员;这只会让开发人员更接近环境,从而使他们能够使用.
Argo CD 和 Flux CD 都是著名的工具,可以将您的实时环境与 Git 存储库中的所需状态相匹配。而这个博客内容将帮助您了解这些工具的核心功能,然后进行公平的比较,以便您做出正确的选择.
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最初由Weaveworks开发,现在在CNCF下孵化,是一套针对Kubernetes的持续和进步的交付解决方案,是开放和可扩展的.
Flux有一个cli优先的方法,UI只是一个附加组件。要安装Flux CLI,请使用其中之一.
安装Flux CLI: https://fluxcd.io/docs/installation/ 。
安装CLI后,使用以下命令在Kubernetes集群上安装Flux .
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可能很快就会改变这一点.
原文链接:https://mp.weixin.qq.com/s/NkovxnWM1PEg8EL6JnCy7Q 。
最后此篇关于当 Argo CD 遇上 Flux CD,谁才是 Kubernetes 上 GitOps 的真王者?的文章就讲到这里了,如果你想了解更多关于当 Argo CD 遇上 Flux CD,谁才是 Kubernetes 上 GitOps 的真王者?的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在尝试构建一个应用程序 A(如适配器),它将: 1)接收带有某些 key (JSON格式)的POST请求 2) 它应该以某种方式修改该 key 并向另一个系统 B 创建 POST 请求。 3)应用
除了语义之外,是否有任何理由为 View 和服务器操作创建不同的调度方法?我见过的所有教程和示例(最值得注意的是 this )在监听已分派(dispatch)的有效负载时完全忽略源常量,以支持打开有效
我的密码 https://gist.github.com/ButuzGOL/707d1605f63eef55e4af 因此,当我收到登录成功回调时,我想进行重定向, 重定向也可以通过调度程序进行。 我
我试图找出使用 Flux 架构处理中型复杂应用程序中相当常见的情况的最佳方法是什么,当组成数据的模型之间存在依赖关系时如何从服务器检索数据。例如: 商店网络应用程序,具有以下模型: 购物车(用户可以拥
我有点坚持一项琐碎的任务:每当我使用响应式 spring WebClient 查询外部 API 或查询响应式 MongoDBRepository 时,我想记录有多少实体通过了我的通量,例如。记录消息,
我有这种情况。我有一个分页 API,它为我提供了过去 12 个月的数据。 API 的响应如下: public class PagedTransfersDto { private List cont
我有两个 Flux,一个用于成功元素,另一个用于保存错误元素 Flux success= Flux.just("Orange", "Apple", "Banana","Grape", "Strawbe
我现在正在使用 Flux .我想创建一个 Flux来自两个不同的对象 Flux .我知道我必须使用 BiFunction但我不知道怎么办。第一个对象对第一个对象有 PK,第二个 FK。我想压缩 PK=
我们正在重构一个大型 Backbone 应用程序以使用 Flux 来帮助解决一些紧密耦合和事件/数据流问题。但是,我们还没有弄清楚如何处理需要知道特定 ajax 请求状态的情况 当 Controlle
作为主题,Flux.concatMapIterable 和 Flux.flatMapIterable 都不会根据大理石图交错,这与 Flux.concatMap 和 Flux.flatMap 其中 f
我有一个flux这是由 Iterable 构建的8 个元素 ( Flux.fromIterable(..) )。对于每个通量排放,我想异步调用一个方法。我尝试了各种方法 dispatchOn和publ
Mono mono1 = repository.get(id); // data from reactive mongo Flux availabilityInfo = getAvailability
使用同构应用程序设置应用程序初始状态的一般做法是什么?如果没有 Flux,我会简单地使用类似的东西: var props = { }; // initial state var html = Reac
你好,我的代码是这样的: fun mapBatch(batch: List): Mono> ... fun myFun(stream: Flux): Flux { return stream
所以我从文档中了解到,并行 Flux 本质上是将通量元素划分为单独的轨道。(本质上类似于分组)。就线程而言,这将是调度程序的工作。因此,让我们考虑这样的情况。所有这些都将在通过 runOn() 方法提
我一直看到使用 flatMap 的例子对于 1 对 1 操作,例如: Flux.just("a", "b", "c") .flatMap(s -> Mono.just(s.toUpperCas
Flux.create 和有什么区别和 Flux.generate ?我正在寻找 - 最好是使用示例用例 - 了解我何时应该使用其中一个。 最佳答案 简而言之: Flux::create doesn'
我想发布 key 列表,但仅限于修改 key 时。 通过以下内容,即使没有任何更改,它也会以无限循环的方式发布值 RedisReactiveCommands commands = connec
我正在尝试从我从服务器获得的许多项目中实现无限滚动,但我找不到任何适当的方法来保持通量架构设计规则。 想法是:在第一次加载时,我从服务器获取完整的项目列表(只有 id),然后使用 ajax 每次获取
我有端点:/upstreams 它将返回以下格式的 Json: { "next" : "String", "data" : [ { "id" : "String",
我是一名优秀的程序员,十分优秀!