第85节 ArgoCD vs FluxCD vs Jenkins X:哪个GitOps实现工具最适合你?
❤️💕💕新时代拥抱云原生,云原生具有环境统一、按需付费、即开即用、稳定性强特点。Myblog:http://nsddd.top
[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
具体介绍:
- ArgoCD vs FluxCD:
- 这两个都是Kubernetes的GitOps工具,它们可以自动化Kubernetes集群的部署。
- ArgoCD 强在其UI界面和应用依赖关系的可视化。
- FluxCD 则在集成和扩展性方面表现更好,比如与Helm和Kustomize的集成。
- 对于OpenIM这样的即时通讯项目,选择哪个更多取决于您的团队对UI的需求和对集成的偏好。
- Jenkins X:
- Jenkins X是为Kubernetes优化的CI/CD解决方案,支持云原生应用的持续集成和持续部署。
- 它提供了一套完整的开发工作流程,包括构建、测试和部署。
- 如果OpenIM项目需要复杂的构建管道和定制化CI/CD流程,Jenkins X可能是一个不错的选择。
- 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,用户可以在其中检查其应用程序部署的状态。同时,管理员可以管理项目和用户访问。
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集群直接交互。
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 链接
✴️版权声明 © :本书所有内容遵循CC-BY-SA 3.0协议(署名-相同方式共享)©