当 Argo CD 遇上 Flux CD,谁才是 Kubernetes 上 GitOps 的真王者?

2023-11-08 23:40

本文主要是介绍当 Argo CD 遇上 Flux CD,谁才是 Kubernetes 上 GitOps 的真王者?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

公众号关注 「奇妙的 Linux 世界」

设为「星标」,每天带你玩转 Linux !

910216c075e74891a2abbcb9beb36daf.png

在我们开始实现Gitops之前,让我为那些不熟悉 GitOps 及其工具的人提供一些背景。

GitOps 背后的基本思想是拥有一个版本控制的代码,就像在 Git 存储库中一样,它包含我们在生产中期望的基础设施的声明性定义,以及一个确保我们在那里拥有该状态的自动化过程。

这意味着每个pull请求都可以为您的用户发布一个新特性,任何断点都可以通过简单的git revert来回滚。因此,开发人员只需要访问代码,而不需要访问实际环境。请注意,这并不意味着我们在限制开发人员;这只会让开发人员更接近环境,从而使他们能够使用。

Argo CD 和 Flux CD 都是著名的工具,可以将您的实时环境与 Git 存储库中的所需状态相匹配。而这个博客内容将帮助您了解这些工具的核心功能,然后进行公平的比较,以便您做出正确的选择。

ArgoCD

Argo CDKubernetes的声明式GitOps持续交付工具。它具有可伸缩性、安全性(以及SSO集成)、多集群多租户支持和可扩展性。

安装

Argo CD的安装非常简单,可以在入门页面上看到。

https://argo-cd.readthedocs.io/en/stable/getting_started/

18ccfacbbd47155527ba510429118139.png

要访问UI,使用这两种方法暴露Argo CD服务

3594db1e2ea3c504da215e5e8178ba46.png

如果你计划只使用核心的argocd,你可以用argocd CLI来控制它。要安装命令行,只需运行命令行

dcc170ca3662a69cf41f3c604d750e28.png
核心概念

Argo CD中,所有相关资源都被分组并部署为一个名为Application的单元。每个申请都是Project的一部分,ProjectArgo CD的租赁单位。每个租户可以被限制在一个名称空间和集群中。

您的应用程序链接到一个版本控制,比如Git,它决定应用程序的状态。一旦部署,资源就处于Live状态。每当在Git中更改代码时,就会创建一个新的Desired状态,可以通过仪表板上的快速刷新查看该状态。为了使您的活动状态与期望的状态相匹配,您可以同步它们。

它还允许您监视应用程序的运行状况,并在出现故障时,允许使用历史记录和回滚功能回滚到旧版本。

预排

现在到仪表板上… 仪表盘看起来非常现代,非常直观。要开始一个新项目,只需单击new App按钮并填写以下细节。

f2e6d0d07ba08bc54cbb9095f9e99d6c.png

在源代码部分,提供Git repoURL和文件夹的路径(这是从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

9b108830c39bd9538b2e0fef40d7e2af.png

live状态不等于想要的状态(因为我们还没有部署任何东西),因此它显示OutOfSync状态。现在单击Sync按钮进行部署

8caafdd114701784eefaf10df307e566.png

该视图显示了部署中复制集中的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登录细节。

b40d29e70a4341e2a6baef2acbffb698.png

接下来,检查集群是否兼容。您应该看到这样的输出

dbece1e551d0d378ded46d6d8a85135a.png现在使用git配置将flux安装到你的集群中

e40d87e02c9ce3b6a885a5fe36c1e374.png

这将在你的GitHub帐户中创建一个test-repo,并在repo中添加Flux组件清单。它还将附带组件部署到集群,并将它们配置跟踪集群中的./clusters/my-cluster/目录。如果你克隆这个和检查内容,你会发现类似的东西

73741a2d7376fe905d5200512442f6de.png

这样,您的设置就准备好了。您可以在test-repo/clusters/my-cluster/中创建任何清单,flux将轮询它并部署更新。

你也可以试试它实验性的web UI。

https://github.com/fluxcd/webui

那我该选哪个呢?

虽然它们都遵循相同的路径,但这些工具之间存在差异。让我们看看,然后我会让你决定什么最适合你

代码协作中的灵活性

Argo允许将多个代码库连接到集群,而Flux每个operator只能连接一个代码库。如果多个团队在同一个应用程序上工作,并提供不同的清单,这将有利于Argo

Manifest工具支持

ArgoFlux都与HelmKustomization合作。Argo还可以使用ksonnetjsonnet。此外,这两种工具都支持作为配置管理插件配置的自定义配置管理工具。

多租户

直到几个月前,这可能还在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 UIFlux,但它仍然是实验性的。

web UI: https://github.com/fluxcd/webui

Flux: https://github.com/fluxcd/webui

身份验证

Argo可以与SSO集成,并且内置了对RBAC的额外支持。Flux只与服务帐户的RBAC一起工作。

自动化容器更新

Flux在自动化容器更新方面占了上风,而另一方面,在Argo中需要手动提交和同步。

管理

另一点是Flux的简单设计。Flux可以自动部署应用程序,几乎无需维护。Argo需要你来部署但我个人更喜欢在这里控制。

最后的判决

ArgoFlux都是非常棒的工具,为它们的用例提供了很好的服务。由于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。

6f1e8d5669920e1c6042996f2cda608b.gif

0a3765677fa3ab2678fa2c7d44963caa.png

你可能还喜欢

点击下方图片即可阅读

de588b49d1c154017be50c1180d24d37.png

5 种快速查找容器文件系统中文件的方法

8e4821d97759771a91599dacb59be7a6.png
点击上方图片,『美团|饿了么』外卖红包天天免费领

bb69eb6cab85b529010bc677c7e10630.png

更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!

这篇关于当 Argo CD 遇上 Flux CD,谁才是 Kubernetes 上 GitOps 的真王者?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/373107

相关文章

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

什么是Kubernetes PodSecurityPolicy?

@TOC 💖The Begin💖点点关注,收藏不迷路💖 1、什么是PodSecurityPolicy? PodSecurityPolicy(PSP)是Kubernetes中的一个安全特性,用于在Pod创建前进行安全策略检查,限制Pod的资源使用、运行权限等,提升集群安全性。 2、为什么需要它? 默认情况下,Kubernetes允许用户自由创建Pod,可能带来安全风险。

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

kubernetes集群部署Zabbix监控平台

一、zabbix介绍 1.zabbix简介 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数,保障服务器及设备的安全运营。 2.zabbix特点 (1)安装与配置简单。 (2)可视化web管理界面。 (3)免费开源。 (4)支持中文。 (5)自动发现。 (6)分布式监控。 (7)实时绘图。 3.zabbix的主要功能

【Kubernetes】常见面试题汇总(三)

目录 9.简述 Kubernetes 的缺点或当前的不足之处? 10.简述 Kubernetes 相关基础概念? 9.简述 Kubernetes 的缺点或当前的不足之处? Kubernetes 当前存在的缺点(不足)如下: ① 安装过程和配置相对困难复杂; ② 管理服务相对繁琐; ③ 运行和编译需要很多时间; ④ 它比其他替代品更昂贵; ⑤ 对于简单的应用程序来说,可能不

【Kubernetes】常见面试题汇总(一)

目录 1.简述 etcd 及其特点? 2.简述 etcd 适应的场景? 3.简述什么是Kubernetes? 4.简述 Kubernetes和 Docker的关系? 1.简述 etcd 及其特点? (1)etcd 是Core0s 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(keyvalue)数据