热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

如果您是一名DevOps工程师,您可能至少听说过Argo这个名字,看到友好的墨鱼(squid)徽标,并想知道&

如果您是一名 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 工作流程的方式。


推荐阅读
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了Java的集合及其实现类,包括数据结构、抽象类和具体实现类的关系,详细介绍了List接口及其实现类ArrayList的基本操作和特点。文章通过提供相关参考文档和链接,帮助读者更好地理解和使用Java的集合类。 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • Google在I/O开发者大会详细介绍Android N系统的更新和安全性提升
    Google在2016年的I/O开发者大会上详细介绍了Android N系统的更新和安全性提升。Android N系统在安全方面支持无缝升级更新和修补漏洞,引入了基于文件的数据加密系统和移动版本的Chrome浏览器可以识别恶意网站等新的安全机制。在性能方面,Android N内置了先进的图形处理系统Vulkan,加入了JIT编译器以提高安装效率和减少应用程序的占用空间。此外,Android N还具有自动关闭长时间未使用的后台应用程序来释放系统资源的机制。 ... [详细]
  • 集合的遍历方式及其局限性
    本文介绍了Java中集合的遍历方式,重点介绍了for-each语句的用法和优势。同时指出了for-each语句无法引用数组或集合的索引的局限性。通过示例代码展示了for-each语句的使用方法,并提供了改写为for语句版本的方法。 ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
author-avatar
M-When
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有