GitOps:提升开发人员生产力的新范式及可观察性问题解决方案
发表时间:2024-07-11 20:06:02
文章来源:炫佑科技
浏览次数:171
菏泽炫佑科技
GitOps:提升开发人员生产力的新范式及可观察性问题解决方案
其承诺是大幅提高开发人员的工作效率。但与任何新技术一样,挑战在于细节。 的复杂性之一是确保对活动环境具有足够的可见性,以便它们能够与所需的配置保持同步。在本文中,我将解释为什么可观察性对 如此重要,以及该平台如何解决可观察性问题。
什么是持续交付和持续部署
持续交付为生产部署做好环境准备,只需按一下按钮即可部署更改。传统方式下,更改通常会合并到主分支(也称为推送部署)。
在新环境中,通过将更改提交到集中环境代码存储库(也称为拉取部署)来触发部署。
持续交付负责构建可部署到生产中的工件。这是持续集成 (CI) 之后的下一步。它准备一个软件版本以供部署,然后等待团队评估更改并决定是否发布。
持续部署更进一步,无需人工审核新版本并按下发布按钮。在持续部署中,每个更改都会自动测试,如果符合某些预定义的质量标准,则会自动部署到生产中。
什么是
该模型需要使用源代码控制系统(通常基于 Git)来管理应用程序和基础设施的配置。Git 版本控制系统作为唯一事实来源。基于此唯一事实来源,使用声明式配置来调整生产环境以匹配所需状态。
通过 Git 拉取请求自动管理基础设施的配置和部署。它依赖于包含系统完整状态的 Git 存储库来实现对系统状态变化的完整审计跟踪。
强调开发人员体验,开发团队可以使用他们熟悉的流程和工具来管理基础设施,并在选择工具方面提供几乎完全的灵活性。
有什么好处
使用它的理由有很多,其中大部分与能够更快、更可靠、更高质量地交付软件有关。以下是经常提到的好处。
什么是可观察性以及它如何支持
在云原生应用架构中,传统的监控方式已经达到了极限。现在的重点从监控转向可观察性。
监控和可观察性紧密相连。可观察的系统更容易受到监控。监控是可观察性的一部分,有效的监控是有效的可观察系统的结果。
可观察性通过三个主要元素提供洞察力。
日志记录——提供离散系统事件的记录。
指标——在设定的时间间隔内测量和处理数字和统计数据。
跟踪——提供一系列事件来反映逻辑路径。
这三种类型的洞察可以解答大多数关键问题,包括部署的当前状态与预期状态的对比情况。它们对于系统的各个方面都很重要,从预期的架构和配置到 UI、资源和行为。
可观察性的需求
该模型强调简化复杂管理任务的能力,其核心理念是通过集中式 Git 代码仓库的变更来触发生产环境部署,并完全自动化集群修改。
为了实现真实的过程,需要两种类型的可观察性。
内部可观察性的工作原理
在这个过程中,Git 是系统预期状态的唯一真实来源,而可观察性为系统的实际状态提供了唯一真实来源。因此,它可以帮助开发人员了解系统的状态。
例如,如果您计划根据 Git 存储库中的部署清单在集群中运行三个 NGINX Pod,系统将使用控制器确定实际运行的 Pod 数量及其当前配置。如果它检测到错误的实例数量或对 Pod 配置的任何修改(这称为配置漂移),它将创建“差异警报”。
一旦系统感知到发生了漂移(即预期和实际实例数不匹配),diff 警报就会触发相关控制器。控制器将尝试将实际状态与预期状态同步。当 diff 警报消失时,系统会认为实际状态与预期状态相匹配,这意味着应用程序“同步”。
整个过程的关键是要意识到漂移。如果你不知道系统不同步,你就无法同步或修复状态。因此,内部可观察性对于确保实际状态保持同步至关重要。
外部可观察性如何发挥作用
外部可观测性有三个要素。
有了这三个元素,监控系统可以从集群的自动化系统中提取指标,并主动通知生态系统的其余部分正在发生的变化。换句话说,其他系统会得到应用程序正在同步的“提示”,而不是事后才发现并生成不必要的警报。
我们将使用流行的项目 Argo 作为示例。
Argo 是什么
Argo 是一组开源项目,可帮助开发人员更快、更安全地交付软件。Argo 是原生的,可让开发人员轻松部署和发布自己的应用程序。
Argo 使用先进的渐进式部署策略支持持续部署,开发人员可以定义发布服务所需的一系列操作。
在工作流中,Argo 简化了应用程序的部署和生命周期管理流程。它使开发人员能够无缝地操作环境和基础设施,自动化部署、回滚并使故障排除更容易。
Argo 赋能
Argo 使用清单持续监控 Git 存储库,验证提交,主动从存储库中获取更改,并将其与集群资源同步。此同步和协调过程可确保集群配置的状态始终与 Git 中描述的状态相匹配。
这就是 Argo 的确切定义——可以帮助团队轻松地在现有集群中实现完整流程,而无需改变现有的工作流程。
此外自动化软件开发,Argo 还消除了配置漂移这一常见问题。配置漂移是指集群中的元素随着时间的推移偏离所需配置。这些意外的配置差异是部署失败的*常见原因之一。Argo 可以自动消除配置漂移,或者至少显示集群的部署历史记录,以便识别漂移及其导致的更改。
*后,Argo 旨在为开发人员提供更好的体验,使他们能够轻松应用高级部署策略,同时保持熟悉的用户体验。它以自定义资源定义 (CRD) 的形式实现,这意味着它就像一个具有开发人员可以使用的扩展的现有对象。
总的来说,Argo 使实施变得更容易,原因如下。
Argo CD:内置可观察性
Argo CD 的内部可观测性
Argo CD 通过 API 接收有关资源状态和健康状况的信息。当它检测到当前集群状态与 Git 中的配置不一致时,它会经历三个阶段。
此过程涉及对整个集群进行一次或多次排查,发现偏差并做出反应。每次排查中资源的顺序由类型(命名空间、资源、自定义资源)和名称决定。
在每一轮检查中,如果任何资源不同步,Argo CD 会对其进行调整,然后继续扫描集群。请注意,如果**轮检查中的资源不健康,您的应用程序可能无法成功同步。
Argo CD 在每波同步演练之间都会延迟GitOps:提升开发人员生产力的新范式及可观察性问题解决方案,以便其他控制器有机会对变化做出反应。这还可以防止 Argo CD 在更新以反映当前对象状态之前过快评估资源健康状况。
Argo CD 和 Argo 中的外部可观测性
Argo CD 提供通知功能,让您可以持续监控 Argo CD 应用程序并接收有关应用程序状态重大变化的警报。它提供了一种使用模板和触发器设置通知的灵活方法 - 您可以定义通知的内容以及 Argo CD 应何时发送通知。
Argo 的另一个部分是 Argo,它允许您自动执行与集群中的 CI/CD 管道相关的任务。Argo 可以生成多个默认控制器指标,您还可以定义自定义指标来提供有关工作流状态的信息。
Argo 可以生成两种类型的指标。
例如,您可以定义自定义指标并将其应用于工作流或模板级别。这些指标在各种情况下都很有用。
综上所述
它正在逐渐成为一种主流的开发实践。我解释了为什么可观察性是系统不可或缺的一部分,并描述了两种类型的可观察性。
我还简要展示了如何在流行的开源平台 Argo 上实现这两者。
有几种复杂的机制,理解它们的*佳方法是使用 Argo CD 测试一次。您还可以参考官方的入门教程,其中展示了如何安装 Argo CD 并将小型应用程序部署到集群。尝试“弄乱”您的测试集群,看看 Argo 如何拾取更改并将集群恢复到您想要的状态。
为了更深入地了解 Argo CD 同步过程,请参阅有关同步阶段和同步波的官方文档。
关于作者
Gilad David 是一位技术作家,曾与 SAP、NEXT 和 Check Point 等 150 多家科技公司合作,为开发人员和 IT 经理提供技术和思想领导力内容。
原文链接: