第85节 ArgoCD vs FluxCD vs Jenkins X:哪个GitOps实现工具最适合你?


❤️💕💕新时代拥抱云原生,云原生具有环境统一、按需付费、即开即用、稳定性强特点。Myblog:http://nsddd.topopen in new window


[TOC]

随着GitOps实践的发展势头,一些玩家带着新的工具、计划和理念进入了游戏。

GitOps是一个分布式版本控制范例,其中所有资源和清单都在git中定义。

链接

  • Flux: https://github.com/fluxcd/flux2
  • argo CD: https://github.com/argoproj/argo-cd
  • Prow: https://prow.k8s.io/
  • JX: https://github.com/jenkins-x/jx

具体介绍:

  1. ArgoCD vs FluxCD:
    • 这两个都是Kubernetes的GitOps工具,它们可以自动化Kubernetes集群的部署。
    • ArgoCD 强在其UI界面和应用依赖关系的可视化。
    • FluxCD 则在集成和扩展性方面表现更好,比如与Helm和Kustomize的集成。
    • 对于OpenIM这样的即时通讯项目,选择哪个更多取决于您的团队对UI的需求和对集成的偏好。
  2. Jenkins X:
    • Jenkins X是为Kubernetes优化的CI/CD解决方案,支持云原生应用的持续集成和持续部署。
    • 它提供了一套完整的开发工作流程,包括构建、测试和部署。
    • 如果OpenIM项目需要复杂的构建管道和定制化CI/CD流程,Jenkins X可能是一个不错的选择。
  3. Prow:
    • Prow是Kubernetes的CI/CD系统,常用于Kubernetes项目本身。
    • 它适用于对GitHub仓库进行自动化管理,特别适合大型、分布式的开发项目。
    • 如果OpenIM项目与Kubernetes密切相关,或者您希望实现与GitHub深度集成的自动化,Prow是个好选择。

GitOps Tooling

到目前为止,Jenkins X、ArgoCD和Flux等开源项目一直在推动GitOps的发展。由于GitOps空间仍处于起步阶段,这些开源项目已经开发了实现GitOps的本地方法。

让我们详细讨论这些工具 :

ArgoCD

我认为 ArgoCD 是 gitops 中最有代表性的项目。

ArgoCD是Kubernetes的声明式CD工具。作为Argo家族的一部分,ArgoCD已在CNCF内孵化。所有资源都在Git repo中定义,因为Argo可以直接与部署交互。

CLI和相应的UI提供了一个全面的工具集,便于将git定义的资源部署到Kubernetes集群。

它专注于管理应用程序部署,具有出色的功能集,包括几个同步选项,用户访问控制,状态检查等。

此外,ArgoCD还具有友好的现代Web UI,用户可以在其中检查其应用程序部署的状态。同时,管理员可以管理项目和用户访问。

image-20231113100313215

Argo CD 介绍

Argo CD以原生Kubernetes方式安装和管理。它在Kubernetes上运行在自己的命名空间中,所有配置都保存在 Config Maps,Secrets 和 Custom Resources 中。

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

然后继续:

kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

介绍:

  • 它通过称为项目的概念提供多租户。

  • 它可以同步Kubernetes集群,同时也能够处理外部集群。

  • 它解决了GitOps的资源从配置漂移的挑战。就像Flux一样,ArgoCD也检测漂移的资源。

  • ArgoCD可以在同步过程中删除过时的资源。

Flux CD

虽然Weaveworks开发了Flux,但它目前是CNCF项目。与ArgoCD类似,Flux也是Kubernetes的持续交付工具。

Flux CD是Kubernetes的GitOps操作符,它将Git存储库中的清单状态转换为集群中正在运行的状态。Flux CD在应用更新的集群中运行。

虽然在Git中定义部署资源的原则与ArgoCD相似,但部署是基于拉取请求,而不是与Kubernetes集群直接交互。

image-20231113101701001

Installation

curl -s  | sudo bash 

使用flux bootstrap命令,您可以在Kubernetes集群上安装Flux,并将其配置为从Git存储库管理自身。

flux bootstrap git
--url=ssh://git@//
--branch=
--path=clusters/my-cluster

Features

  • 它会自动部署新版本的容器镜像。
  • 它允许重新应用漂移的资源。
  • 它维护垃圾回收并删除在前一阶段中未同步的对象。

Flux有一个简单的设计,只支持一个仓库--这既是优点也是缺点。虽然它使其易于理解和使用,但当存在多个集群时,它会变成一个限制。

Jenkins X

Jenkins X抛弃了主工作节点的架构,被开发为Kubernetes原生CI/CD引擎。这个开源的完整CI/CD解决方案是围绕GitOps构建的,并使用Tekton。

虽然这个名字可能会给给予暗示,Jenkins X可能是Jenkins的下一个版本,但Jenkins X与Jenkins几乎没有相似之处,并且有不同的方向。

值得注意的是,除了基于GitOps的部署功能外,Jenkins X还涵盖了更广泛的开发周期,包括CI管道的构建和测试阶段以及构建和存储容器映像。

Jenkins X设置Kaniko和Skaffold来构建容器镜像,Helm charts用于打包Kubernetes清单。‍

对比

Argo CD和Flux CD基本上都是CD(Continues Delivery)工具。另一方面,Jenkins X是一个完整的CI/CD(持续集成和持续交付)工具。

由于Jenkins X是一个CI/CD工具,因此您不必设置CI管道。但是,在使用其他工具时,必须单独设置CI管道。

END 链接