Argo 全家桶如何让 DevOps 变的更容易?

2023-03-19 17:19:42 浏览数 (2)

原文:https://devops.com/the-argo-project-making-gitops-practical/

如果您是一名 DevOps 工程师,您可能至少听说过 Argo 这个名字,看到友好的墨鱼(squid)徽标,并想知道:每个人都在谈论的这个工具到底是什么?

简而言之,Argo 是一种流行的开源工具,它使 GitOps 对任何使用 Kubernetes 的人都实用。但这远不止于此,因为通过启用 GitOps,Argo 还将使 Kubernetes 环境比以往任何时候都更加健壮、安全和可靠。

什么是 GitOps,会取代 DevOps 吗?

GitOps 是开发团队用来管理基础设施和部署应用程序的新的流程和范例。GitOps 中的“Git”指的是开源版本控制系统。GitOps 使用 Git 作为声明性配置的单一信息源。基于这种声明性配置,它发挥了它的魔力。

GitOps 使用 Git 拉取请求自动管理基础设施的配置和部署。当开发团队对 Git 配置进行更改时,部署在环境中的 GitOps 代理会自动将更改与实时状态相协调。对实时环境的每一次更改都会在 Git 存储库中捕获,因此团队对系统更改具有可见性和可审计性。最重要的是,如果生产中发生故障,回滚到以前的工作版本是轻而易举的。

GitOps 建立在开发人员经验的基础上,使团队能够使用用于开发软件的相同工具和流程来管理基础设施,并将这些工具扩展到软件部署和基础设施管理领域。

虽然有些人将 GitOps 吹捧为“DevOps 2.0”,但许多专家不同意,称 GitOps 不是 DevOps 的更好版本,也不会完全取代 DevOps。GitOps 是一种对 DevOps 团队非常有益的技术实践。DevOps 工程师不会被 Git 触发的机器人所取代。但 GitOps 会让开发人员更有效率。

什么是 Argo 项目?

Argo 是一个由云原生计算基金会 (CNCF) 托管的开源项目:

https://www.cncf.io/projects/argo/

用于构建和管理 Kubernetes、GitOps 风格的持续交付工作流。Argo 的独特之处在于它是 Kubernetes 原生的,从头开始为现代容器化环境而设计。

Argo 项目由四个主要子项目组成:

  • Argo CD:具有强大 GUI 和 CLI 的 GitOps 持续交付引擎。
  • Argo Workflows:一种工作流引擎,支持工作流和有向无环图 (DAG),其中每个流程阶段都是一个容器。
  • Argo Rollouts:一种先进的 Kubernetes 部署引擎,支持渐进式交付策略,如金丝雀和蓝/绿部署,这些在普通 Kubernetes 中很难实现。
  • Argo Events:一个基于 Kubernetes 事件的依赖管理系统,可用于触发 CI/CD 管道中的自动化工作流。

Argo 工具在生产环境中的优势

ArgoCD

Argo CD 是 Kubernetes 原生的持续交付 (CD) 工具。

https://argoproj.github.io/cd/

虽然大多数 CD 工具仅支持基于推送的部署,但 Argo CD 以拉取模式工作,从 Git 存储库检索更新的代码并将其直接部署到 Kubernetes 资源。这允许开发人员在一个系统中管理基础架构配置和应用程序更新。

Argo CD 的主要功能包括:

  • 自动将 Kubernetes 集群中的应用程序状态与 Git 存储库 (GitOps) 中的声明性配置的当前版本同步。
  • 能够可视化部署问题并检测和修复错误配置。
  • 方便的基于 Web 的 GUI 和 CLI。
  • 基于角色的访问控制 (RBAC) 和单点登录 (SSO),包括通过 GitHub、LinkedIn、Microsoft 等登录。
  • 支持在 GitLab、GitHub 和 BitBucket 中触发操作的 webhook。

GitOps 可以帮助您在 Kubernetes 中实现真正的 GitOps 工作流,在生产环境中提供以下好处:

  • 最大限度地减少失败的部署并从停机中快速恢复:Argo CD 可让您在生产中出现任何问题时立即轻松地恢复和回滚,从而将恢复时间缩短至数秒。
  • 内置审计历史:Argo CD 确保对 Kubernetes 集群的每次更改都以 Git 配置更改日志的形式进行审计。这提供了关于谁更改了集群中的内容的完整审计跟踪,从而实现了一致的操作并支持合规性要求。
  • 提高开发功能生命周期的可见性:Argo CD 提供从基础设施或应用程序的每次更改直接到导致这些更改的代码提交的可追溯性。
  • 提高安全性:Argo CD 提供强大的安全保证,利用强大的加密手段来管理和验证身份,并在 CI 环境和生产系统之间创建完全分离,消除多种类型的供应链攻击。

Argo Rollouts

Argo Rollouts 是一组 Kubernetes 控制器和 CRD,提供高级部署功能。

https://codefresh.io/learn/argo-rollouts/

例如 Kubernetes 环境中的蓝/绿和金丝雀部署、实验和渐进式交付。它可以与 Ingress 控制器和服务网格集成,以在更新期间将流量增量转换到新版本。

Argo Rollouts 的一个关键功能是它可以查询和解释来自许多来源的指标,以验证部署是否正常工作并执行自动升级或回滚。

默认情况下,Kubernetes 提供 Deployment 对象,该对象使用“滚动更新”策略更新应用程序。在大型生产环境中,滚动更新被认为风险太大,因为无法控制推出速度,也无法在发生故障时自动回滚。

另一个限制是开箱即用,Kubernetes Deployment 无法查询外部指标,例如真实用户对性能或参与度的测量,以确定部署是否成功。

Argo Rollouts 可以解决所有这些挑战,并在 Kubernetes 环境中实现完全渐进式交付,而无需复杂的配置。

Argo Workflows

Argo Workflows 是一个开源容器原生工作流引擎,用于在 Kubernetes 上编排并行任务。Argo 工作流被实现为 Kubernetes 自定义资源定义 (CRD)。

Argo 工作流程的主要特点包括:

  • 定义工作流中的每个步骤都是一个容器的工作流。
  • 将多步骤工作流建模为一组操作或 DAG 以捕获依赖关系。
  • 在 Kubernetes 上本地运行 CI/CD 管道,无需配置复杂的软件开发产品。

Argo Workflows 可让您在任何 Kubernetes 环境中自动化生产工作流程,无论是本地、混合云还是多云环境。它消除了手动流程,并确保自动化以声明性配置的形式呈现,使其一致、可重复、易于回滚和易于故障排除。

Argo Events

Argo Events 是一个基于 Kubernetes 事件的依赖管理器,它为不同的事件源(例如 webhook、 S3、调度、流等),以及事件依赖的 Kubernetes 对象依赖被成功解决,提供触发器。

Argo 事件本身并不是很有用。要产生价值,需要与可以执行工作流步骤的系统集成。因此,可以使用 Argo Workflows 来集成 Argo Events。这有助于编排并行 Kubernetes 作业。

Argo Events 提供了几种在生产 Kubernetes 环境中启用依赖管理的功能:

  • 管理各种事件源的依赖关系。
  • 能够自定义业务级约束逻辑以解决事件依赖关系。
  • 管理从简单的线性实时依赖项到复杂的多源批处理作业依赖项的所有内容。
  • 符合 CloudEvents 标准。
  • 能够在运行时管理事件源。

结论

本文介绍了 GitOps 和 Argo 项目的基础知识,并展示了 Argo 项目的每个关键模块如何帮助开发人员和 DevOps 工程师以最小的努力使 Kubernetes 做好生产准备。Argo 的魔力在于它的简单性和无缝融入现有 Kubernetes 工作流程的方式。

- END -

0 人点赞