关于 Argo 项目

167 阅读17分钟

介绍

本书围绕 Argo 项目家族,介绍如何使用及集成它们。Argo 项目是一套卓越的开源工具集合,旨在革新 GitOps 和云原生计算。本书将成为你全面了解和充分利用 Argo 项目及其相关工具的指南。

本章将介绍 Argo 项目及其历史,深入讲解 Argo 项目家族中令人印象深刻的工具,以及为何它在拥抱 GitOps(管理基础设施和应用的变革性方法)方面,是一个出色的选择。我们将了解 Argo 项目家族的核心组件:Argo CD、Argo Workflows、Argo Events 和 Argo Rollouts,每个组件都以独特的方式简化和优化云原生的开发与部署。

此外,我们还将探讨 Argo 项目在云原生计算基金会(CNCF)中的现状,凸显其在不断演进的云原生技术领域中的重要地位和影响力。

阅读本书后,你将具备驾驭云原生计算和持续交付复杂世界的能力,提升你的技术战略。

结构

本章将讨论以下内容:

  • Argo 项目概览
  • Argo 项目的发展历史
  • Argo 项目家族及其产品介绍
  • Argo Labs 项目
  • Argo 项目家族在 GitOps 领域的应用
  • Argo 项目在 CNCF 的当前状态
  • Argo CD 在生产环境中的采用情况
  • Argo 项目的使用场景

目标

本章旨在探索 Argo 项目,这是一套开源工具,致力于变革 GitOps 和云原生计算实践。我们将追溯项目的发展历程及其如何适应不断变化的云原生需求。

本章结束时,你将了解 Argo 项目的子项目,包括:

  • 用于持续交付的 Argo CD
  • 用于在 Kubernetes 中编排并行任务的 Argo Workflows
  • 用于事件驱动架构的 Argo Events
  • 用于应用发布管理的 Argo Rollouts

我们还将讨论为何 Argo 项目家族是 GitOps 的优秀选择,强调其强大的功能、活跃的社区支持以及与云原生最佳实践的高度契合。同时也会介绍项目在 CNCF 中的现状。

Argo 项目概览

Argo 项目是一套专为 Kubernetes 设计、严格遵循 GitOps 原则的开源工具集合。主要包括:

  • Argo CD:一种声明式的基于 GitOps 的持续部署解决方案,实现应用部署的无缝管理。
  • Argo Workflows:原生容器工作流引擎,高效编排 Kubernetes 内复杂任务。
  • Argo Events:基于事件的依赖管理器。
  • Argo Rollouts:扩展 Kubernetes 原生部署功能,支持蓝绿部署和金丝雀发布等高级策略。

这些工具帮助用户简化 Kubernetes 工作流,自动化运维,并通过 Git 仓库作为唯一真实来源,高效维护基础设施和应用配置。它们促进协作、增强控制力,并简化 Kubernetes 环境管理,是现代 DevOps 和基础设施团队的宝贵利器。

Argo 项目发展历史

Argo 项目自诞生以来经历了显著发展。以下是四个核心子项目的详细历史:

Argo CD

  • 2018-2019 年:Argo CD 逐步成型为声明式、版本可控的 GitOps 工具,允许用户通过 Git 仓库声明理想状态高效管理 Kubernetes 集群。
  • 2019 年至今:开发加速,广泛被 Kubernetes 社区采纳,诸如 CERN(欧洲核子研究组织)等机构在大规模数据处理场景中成功应用。

Argo Workflows

  • 2017 年 10 月 17 日:首次提交代码,标志项目启动。
  • 2017-2019 年:最初由 Applatix 开发,后被 Intuit 收购,期间作为基于 Kubernetes CRD 设计和编排并行任务的框架。
  • 2019 年至今:持续发展,成为定义和管理复杂 Kubernetes 工作流的强大工具。

Argo Events

  • 2019 年:基于 Argo 构建,提供工作流自动化能力。
  • 2020 年至今:在生态中稳固地位,实现事件驱动架构,扩展 Argo 工具套件能力。

Argo Rollouts

  • 2019 年:作为 Argo CD 的扩展,专注于金丝雀发布和蓝绿部署等高级发布策略。
  • 2020 年至今:不断完善,成为企业实现高级部署策略的热门选择。

CNCF 孵化

  • 2020 年 4 月 7 日:经过多年发展及社区支持,Argo 将四大项目(Workflows、CD、Rollouts、Events)捐赠给 CNCF,正式成为其孵化项目。

加入 CNCF 后,Argo 项目获得更高的关注度、协作机会和社区贡献,持续演进以满足 Kubernetes 用户及更广泛云原生社区的需求。Argo 的历程展示了开源协作和 GitOps 原则在有效管理 Kubernetes 工作负载中的强大力量。

Argo 项目家族及其产品介绍

Argo 项目家族是一组先进工具,旨在简化和优化 Kubernetes 工作流的各个方面。Argo 家族为开发者和 DevOps 专业人士提供了多功能工具集,使他们能够自动化复杂工作流、简化部署流程并管理发布管道。通过 Argo Workflows、Argo CD 和 Argo Events 等项目,用户可以轻松编排容器化应用,实现持续交付,并在 Kubernetes 生态系统内响应实时事件。Argo 项目家族赋能团队提升云原生环境的敏捷性、可扩展性和可靠性,无论是在自动化持续集成/持续交付(CI/CD)管道还是其他场景。

Argo CD

Argo CD 是 Kubernetes 应用的持续交付(CD)工具。它自动化从 Git 仓库向 Kubernetes 集群部署和管理应用的过程。Argo CD 监控 Git 仓库的变更,确保集群中的应用状态与仓库中定义的理想状态一致。它提供了基于 Web 的用户界面和命令行界面(CLI),方便管理持续交付流程。

典型用例包括:

  • 持续交付管道
  • 应用部署与管理
  • 应用配置管理

Argo Workflows

Argo Workflows 是一个工作流引擎,允许用户在 Kubernetes 上定义、管理和执行复杂的多步骤工作流。它通过基于 YAML 的声明式语法定义工作流,支持并行执行、条件执行以及步骤间数据传递等功能。Argo Workflows 还可与 Kubernetes 生态中的其他工具和服务集成。

典型用例包括:

  • 数据处理管道
  • 提取、转换、加载(ETL)任务
  • 科学计算与仿真
  • 批量处理与作业调度
  • 机器学习模型训练

Argo Events

Argo Events 是一个在 Kubernetes 上实现事件驱动自动化的平台。它使用户能够定义事件源,如 HTTP 端点、定时任务(cron)、外部服务及触发器。当特定事件发生时,触发器启动相应的动作。Argo Events 可与其他 Argo 项目集成,基于事件执行工作流或同步应用部署。

典型用例包括:

  • 针对特定事件自动执行任务
  • 构建自定义事件驱动应用
  • 与外部服务和 API 集成

Argo Rollouts

Argo Rollouts 扩展了 Kubernetes 原生的部署功能,支持高级部署策略和发布管理。它允许用户执行金丝雀发布、蓝绿部署等多种策略,具备自动化指标分析、发布暂停和回滚功能。

典型用例包括:

  • 金丝雀发布与渐进式部署
  • 应用版本的 A/B 测试
  • 降低应用更新风险

Argo CD 通知

Argo CD 通知是 Argo CD 生态系统中的专用组件,负责监控并通知用户 Argo CD 管理的应用发生的关键变更。它通过灵活的触发器和模板系统,让用户自定义通知的发送时机和内容,简化了应用状态变化或其他重要事件的通知工作。虽然存在其他监控 Argo CD 应用的方式,但 Argo CD 通知专注于 Argo CD 相关用例,提升用户体验,提供专门且高效的解决方案。

该项目最初独立启动,后合并进 Argo CD。旧项目仓库地址为 github.com/argoproj-la… ,现已归档,代码已并入 Argo CD 主体中。

Argo Labs 项目

让我们来介绍几个来自 Argo Labs 的项目。这里是项目和想法诞生的地方,但需要注意的是,这些项目尚未准备好用于生产环境。尽管如此,你仍然可以深入了解这些项目,看看最新的进展。

以下是几个引人注目的示例:

  • Argo CD Autopilot:这是一个强大的工具,旨在帮助用户更方便地采用 Argo CD 的 GitOps 实践。它通过 GitOps 自动化 Argo CD 的安装和配置,简化了设置和管理过程,确保 Argo CD 本身也能以代码方式管理,从而增强一致性和可追溯性。Argo CD Autopilot 提供了结构化的方法管理 GitOps 仓库中的应用,加快了在不同环境中添加、更新和推广应用的流程。此外,它提升了灾难恢复能力,使得整个环境(包括 Git 仓库中以前安装的应用)都能轻松重建。总体来说,Argo CD Autopilot 使用户能够高效实施 GitOps 和 Argo CD,使应用交付和管理更加稳健可靠。
  • Argo CD Vault 插件:argocd-vault-plugin 是一个专为 GitOps 和 Kubernetes 生态中简化密钥管理设计的 Argo CD 插件。它提供了从多种密钥管理工具(如 HashiCorp Vault、IBM Cloud Secrets Manager、AWS Secrets Manager 等)获取密钥的便捷方案。使用该插件,用户无需复杂的操作器或自定义资源定义,即可轻松将密钥集成到 Kubernetes 资源中。它简化了密钥及其它 Kubernetes 资源(如部署、ConfigMaps)的管理,是团队使用 Argo CD 实施 GitOps 工作流时的重要工具。
  • Argo CD Image Updater:这是一个由 Argo Labs 提供的工具,能够自动检测并更新 Kubernetes 工作负载中的容器镜像。它与 Argo CD 集成,允许用户通过应用参数指定镜像更新。该工具既可在 Kubernetes 集群内运行,也可作为独立的命令行工具使用。其关键功能包括为 Argo CD 管理的应用更新镜像,支持多种更新策略,兼容包括私有仓库在内的主流容器注册中心,能将变更写回 Git,支持基于注册表标签的镜像过滤,并通过多种方式(如 Kubernetes 密钥、环境变量或外部脚本)支持特定镜像的自定义拉取密钥。

Argo 项目家族在 GitOps 中的应用

Argo 项目家族是组织实施 GitOps 的强力选择,原因包括:

  • GitOps 先驱之一
    Argo 项目家族以 Argo CD 为核心,从零开始构建,严格遵循 GitOps 原则。它专为使用 Git 作为真实来源来管理 Kubernetes 基础设施和应用部署而设计,采用这种原生 GitOps 方法,大大简化并提升部署效率。
  • 实战中经过验证的可靠性
    Argo 家族项目不断创新,Argo CD 在真实生产环境中表现卓越。特别是在 Intuit 等运行数千应用的复杂环境中,Argo CD 经受住考验,展示了其可靠性、可扩展性和轻松处理关键任务负载的能力。
  • 广泛企业信赖
    Argo 项目家族赢得了多个行业龙头企业的信赖和贡献,如 Adobe、Blackrock、Capital One、Google、IBM 以及 Red Hat 等。这些成熟企业的采纳表明 Argo 已达到大规模生产使用的成熟度和适用性。
  • 丰富的 DevOps 生态系统
    Argo 项目家族不仅仅是 Argo CD,还包括 Argo Workflows、Argo Rollouts 和 Argo Events 等工具。它们与 Argo CD 无缝集成,提供工作流编排、渐进式发布和事件管理等关键 DevOps 功能,完善持续交付的方方面面。
  • 灵活的模块化设计
    Argo 项目家族的工具既可独立使用,也可组合使用,给予组织极大的灵活性,能够根据实际需求选择最合适的组件,并有效整合到现有系统或工具链中。

综上所述,Argo 项目家族以其原生 GitOps 方法、生产环境的成熟可靠、企业信任、丰富的生态系统以及高度灵活的定制与集成能力,成为组织实施 GitOps 的有力选择。采用 Argo 项目家族,您能够简化 DevOps 流程,提升可扩展性,并通过 GitOps 方法流畅管理应用部署。

当前 CNCF 中 Argo 项目的状态

CNCF(云原生计算基金会)是一个重要的开源组织,专注于推动云原生技术与实践的发展和采用。CNCF 隶属于 Linux 基金会,作为多个与云原生计算相关项目和倡议的汇聚地。CNCF 托管并支持广泛的开源项目,包括容器编排系统 Kubernetes,容器运行时如 containerd 和 rkt,以及其他对构建和管理现代、可扩展、容器化应用至关重要的技术。该基金会提供一个协作且厂商中立的环境,用于开发和维护这些项目。

CNCF 的使命是让云原生计算无处不在,帮助组织利用这些技术构建和管理具有弹性、可扩展且高效的应用。其通过推广开源项目、行业最佳实践和社区参与来实现这一目标。

CNCF 通过“毕业”(Graduated)和“孵化”(Incubating)两个不同阶段,来代表项目在 CNCF 生态系统中的成熟度和状态:

毕业项目(Graduated Projects):

  • 已达到较高的成熟度、稳定性和社区采用水平。
  • 具备成功的良好记录,已成为云原生生态系统中可靠且广泛使用的组件。
  • 满足一定标准,包括多元且活跃的贡献者和用户社区、明确的治理结构,以及对可持续发展的承诺。
  • 例如 Kubernetes、Prometheus 和 Envoy。

孵化项目(Incubating Projects):

  • 处于 CNCF 内部较早的开发和采用阶段。
  • 正在努力达到毕业项目的成熟度和稳定性水平。
  • 展现出潜力,但尚未达到毕业项目的广泛采用或成熟度。
  • CNCF 提供支持和资源,帮助孵化项目成长和成熟。
  • 随着满足必要标准,孵化项目可晋升为毕业项目。
  • 例如新兴技术和正在积极开发测试的项目。

获得孵化认可的项目被认为是稳定的,并在生产环境中有成功应用的记录。例如,Argo 于 2020 年 3 月 26 日被接受为 CNCF 孵化项目,随后于 2022 年 12 月 6 日晋升为毕业项目。

Argo CD 在生产环境中的采用

Argo 项目组织了一些调查,显示 Argo CD 在生产环境中的采用显著增长,超过 93% 的受访用户报告在其生产环境中使用 Argo CD。如此高的采用率强烈表明该项目在简化部署流程、帮助组织高效管理和部署 Kubernetes 集群中的应用方面取得了成功。用户赞赏 Argo CD 的用户友好功能,包括资源 UI、GitOps 方法、ApplicationSets、漂移检测(drift detection)、自动同步(auto-sync)和简易升级。这一高生产采用率反映了该项目在现实关键任务环境中的价值和可靠性。

Argo 项目发布了 2023 年关于 Argo Workflows 和 Events 的用户调查结果,涵盖了 207 名受访者,其中 58% 在生产环境中使用 Argo Workflows,42% 正在评估该工具。用户称赞 Argo Workflows 的多功能性、Kubernetes 原生特性以及与 Argo CD 和 Argo Rollouts 的集成。包括 DevOps 工程师、软件工程师、架构师和数据专业人员在内的多种工程角色都在使用 Argo 工具,DevOps 工程师人数有所增加。

Argo Workflows 和 Events 的使用场景日益多样化,涵盖 ETL、机器学习和 CI/CD。虽然受访者中生产使用比例降至 58%,但 Argo Workflows 的操作规模同比增长。用户通常将 Argo Workflows 与其他工具结合使用,尤其是 Argo CD 和 Rollouts。与 Argo 集成的知名工具包括 Jupyter Notebooks、Apache Kafka、Airflow 以及用于管理 Kubernetes 策略的 Kyverno。

Argo 项目的使用情况

Argo CD 的官方用户列表位于:github.com/argoproj/ar…。 该列表显示,Argo 在软件开发和 DevOps 社区中被广泛采用。自诞生以来,Argo CD 已积累了大量用户,这些用户来自不同行业和领域。项目在 GitHub 的 USERS.md 文件中维护着用户名单,展示了众多不同组织和团队从 Argo CD 中受益的情况。以下是基于该名单整理出的主要用户群体及其采用原因:

  • 许多大型企业将 Argo CD 作为其基于 Kubernetes 基础设施的核心组件。这些企业通常拥有复杂的多集群 Kubernetes 环境,使用 Argo CD 来简化和自动化应用部署,帮助他们在应用间保持一致性和可靠性。
  • 初创公司和小型企业也青睐 Argo CD,因其提供了简洁且具成本效益的 Kubernetes 部署管理方案。其开源特性使得各种规模的组织均可轻松使用。
  • 各行业的 DevOps 团队依赖 Argo CD 来实施持续交付流水线,确保高效自动化的部署。Argo CD 符合 DevOps 原则,促进开发与运维团队的协作。
  • 云原生技术、微服务及容器化的爱好者倾向于选择 Argo CD。它与 Kubernetes 深度集成,成为投资云原生架构者的理想之选。
  • 开发代理机构和咨询公司常用 Argo CD 来简化客户的 Kubernetes 部署,从而加速项目推进,确保应用高效交付并遵循最佳实践。
  • 开源项目和社区广泛使用 Argo CD 来管理和自动化自身的部署。Argo CD 的开源属性与其价值观契合,且其功能简化了应用管理流程。
  • 部分教育机构利用 Argo CD 向学生教授 Kubernetes 和 DevOps 原则,其直观的界面和易用性使其成为宝贵的教学工具。
  • 人工智能、数据科学和机器学习领域的研发团队常用 Argo CD 管理 Kubernetes 部署,保障研究应用的无缝发布。
  • 一些政府机构也采用 Argo CD 来自动化管理其 Kubernetes 集群中的应用部署。

除了上述具体场景,任何使用 Kubernetes 的组织或个人都能从 Argo CD 中获益。其用户友好的界面和强大的功能集,使其成为管理 Kubernetes 部署的优选,无论组织规模或行业如何。

Argo CD 被广泛采用,归功于其易用界面、丰富功能、强大的社区支持及开源特性。该工具简化了在 Kubernetes 环境中部署应用的复杂流程,成为寻求高效自动化应用交付的组织和个人的重要组件。随着 Argo CD 持续发展,预计其用户群将更加庞大,反映出 Kubernetes 在现代软件开发和部署中的日益重要地位。

总结

Argo 项目提供了一个强大且开源的解决方案,简化和自动化 Kubernetes 应用的部署与管理。其 GitOps 方法和不断扩展的项目生态,使其成为希望现代化 DevOps 实践、在 Kubernetes 环境中保持高度控制和一致性的组织的理想选择。随着社区的壮大和持续开发,这些工具有望在 Kubernetes 应用交付的未来发挥关键作用。

下一章节,我们将讨论 Argo CD,并逐步熟悉 Argo 项目家族的所有工具。同时探讨这些工具如何协同解决复杂的组织问题,以及是什么使 Argo 项目家族特别适合 GitOps。

参考资料:

  1. www.cncf.io/reports/arg…
  2. blog.argoproj.io/cncf-argo-c…
  3. blog.argoproj.io/argo-workfl…