第 1 天:使用 IaC 自动化的 GitOps

小夏 科技 更新 2024-01-31

GITOPS 有助于重新定义在需要精确性、自动化和透明度的环境中管理基础架构和应用程序部署的方式。

翻译自 Achieve Gitops on Day One with IAC Automation,作者是 Team Nitric 的工程副总裁 Rak Siva,致力于改善软件开发人员的体验。 在他丰富的 15 年软件行业任期内,他开始深入参与具有挑战性的工程之旅。 在金融科技和数字入职领域任职期间,我经历了三个不容小觑的挑战,这些挑战不断考验着团队的韧性:

错误配置和不一致:不同环境中配置漂移或不一致的后果可能是灾难性的。 面对监管审查和运营风险,满怀信心地回滚到经过验证的状态成为当务之急。 手动且容易出错的过程:人为疏忽导致的错误,例如错误配置、安全漏洞和代价高昂的停机威胁,即使在精心策划的项目中也会蒙上阴影。 缺乏可见性和可审计性:比如“谁做了这个改变?什么时候?为什么?“诸如此类的问题可能成为不可避免的挑战,阻碍我们满足合规性要求和解决安全问题。

像Spotify这样的行业领导者已经利用Gitops的力量来应对这些行业特定的挑战,正如Tim Hansen在上个月的Kubecon北美会议上所描述的那样,“一切都在Spotify拥抱Gitops。 Gitops 不仅提供解决方案,还使我们能够重新定义在精确、自动化和透明不仅是理念,而且是成功的基石的环境中管理基础设施和应用程序部署的方式。 Gitops 是一种将 Git 版本控制的强大功能与基础架构 (IAC) 和持续交付 (CD) 实践相结合的方法。 Gitops 的核心是将您的基础架构和应用程序配置视为 **,并将它们存储在 Git 存储库中。 这一单一事实来源成为自动部署和同步环境的基础。

有很多文章深入研究了 gitops,我总结了以下关键原则。 您可以在此处了解有关 Gitops 和这些原则的更多信息。 声明式配置:Gitops 依赖于声明式配置,您可以在其中定义基础架构和应用程序的所需状态。 这意味着您描述所需的内容,而不是如何实现它,这有助于保持一致性并减少配置漂移。

版本控制:Git 是 Gitops 的支柱。 它提供版本控制、协作和审核功能。 对基础架构或应用程序的每一次更改都会被跟踪,这样就可以在需要时轻松回滚到以前的状态。

持续交付:Gitops 采用持续交付的原则来自动化部署过程。 每当您对 Git 存储库进行更改时,都会启动一个自动化管道,将这些更改应用于您的环境。 这降低了人为错误的风险,并确保了快速可靠的部署。

自动化:制定工具和流程以自动将基础结构的实际状态与 Git 存储库中的所需状态同步。 日常操作无需人工干预。

实施 Gitops 流程简化了开发人员和运营团队的职责。 开发人员主要专注于编写和提交,而运营团队则承担着维护和确保解决方案和部署对开发人员和操作员始终安全可靠的关键作用。

开发人员可以从这种方法中受益,因为他们可以专注于编写和改进应用程序的核心任务。 他们不需要关注基础设施**或部署过程的复杂性。 它们的更改、配置和应用程序更新在 Git 存储库中进行版本控制,从而使协作和跟踪更改变得简单明了。

运营团队在 Gitops 中发挥着至关重要的作用,确保 Git 存储库中指定的基础架构和部署配置是一致的,并符合最佳实践。 他们管理这些配置的自动化和编排,确保在开发、测试和生产等各种环境中安全可靠地应用更新。 这种方法增强了安全性,减少了人为错误,并为合规性和故障排除提供了清晰的审计路径。

采用GITOPS通常需要改变传统基础设施管理的思维方式。 团队需要采用声明性的、版本控制的方法来定义和管理基础结构,这可能与他们现有的做法不同。

*: VMware 根据上图,Gitops 工作流中与软件开发和部署过程相关的几乎所有内容都存储在您的存储库中:

基础结构作为 ** (IAC):这涉及通过流程而不是手动流程来管理和配置基础架构。 它使团队能够将版本控制、协作、合规性和 CI CD 实践应用于基础架构管理。

配置:这些是控制应用程序和基础结构行为的设置和参数。 在 Gitops 工作流程中,配置与 ** 一起进行版本控制和管理,以确保一致性和可追溯性。

应用**:这是正在开发的应用程序的实际**。 在 Gitops 中,应用程序存储在版本控制系统中,通常与 IAC 和配置一起维护,以确保版本和更改的统一方法。

CI CD 管道:CI CD 管道定义了从开发到生产所经历的更改的自动化步骤。 在 Gitops 中,这些管道也被视为 ** 并进行版本控制,从而实现自动化、可重复且可靠的流程。

乍一看,这似乎很简单,然而,在这些资产中,存在着构建成功的 Gitops 工作流程的真正挑战。 例如,声明基础架构会带来许多好处,包括版本控制和可重复性,但它也带来了一系列挑战。

复杂性:基础结构可能很复杂,涉及各种资源,例如虚拟机、网络、存储和安全策略。 编写来定义和管理这种复杂性可能具有挑战性,尤其是对于更大、更复杂的环境。

学习曲线:采用 IAC 通常需要团队成员学习新语言(Terraform、AWS CloudFormation、Ansible)、工具和最佳实践。 这种学习曲线会减慢初始实现速度并导致错误。

测试与验证:可能很难确保 IAC 模板按预期工作。 在部署之前,需要进行全面的测试和验证过程,以发现潜在问题。 这包括针对目标环境的单元测试、集成测试和验证。

基础设施漂移:在将 IAC 引入 CI CD 管道时,团队还必须处理漂移问题。 当应用程序要求开始偏离 IAC 中定义的状态时,就会发生偏移。

因此,对于正在与 IAC 作斗争或尚未完全接受 IAC 的团队来说,GITOPS 可能特别具有挑战性。 这可能是一个令人不安的过渡,但幸运的是,有一些方法可以帮助实施 Gitops,而无需接受 IAC。

要满怀信心地开始您的 Gitops 之旅,关键是要使过程尽可能简单。 这可以通过使用解决 IAC 相关问题的自动化和抽象框架来实现。

将下面的图表与上面显示的图表进行比较。 该过程消除了一些最初通过使用自动化框架手工制作的资产,以解决以前提出的一些问题。 在本例中,我们使用的是开源 nitric 框架其他工具也可用于自动化该过程的某些部分。

本地开发和版本控制:开发人员首先在模拟云基础架构的本地环境中构建项目和编写应用程序。 这种方法允许他们离线迭代和测试**。 这些更改将提交到版本控制存储库,开发人员决定何时将它们部署到云中。

CI CD 管道和硝酸框架:当应用程序准备好迁移到更高的环境(例如暂存或生产环境)时,与 Nitric 框架集成的 CI CD 管道会从应用程序推断出必要的云基础结构要求。 它生成一个资源规范,该规范充当基础结构的真实来源,并受版本控制以进行审核。

基础架构同步:Nitric 框架使用资源规范来识别所需的基础架构组件并将其部署到云提供商。 此过程可确保基础结构始终与应用程序同步**,从而消除了每次运行 CI CD 管道时配置偏移的可能性。

运营团队的角色:虽然对手工制作的基础设施(即**)的需求已经减少,但运营团队仍然发挥着关键作用。 他们负责实现满足应用程序需求(如规模和可用性)的基础结构提供程序。

这种方法简化了产品开发周期,缩短了上市时间,并促进了开发人员和运营团队之间的协作环境。 它有效地平衡了自动化和控制,以确保基础设施变更既高效又管理良好。

构建和部署应用程序**的前景似乎令人望而生畏。 通过利用现代基础设施(即最好的自动化工具)的力量,并采用 Gitops 方法,公司可以找到从开发到生产的无缝路径。

像 Nitric 这样的自动化框架专注于简化工作流程中耗时的手动步骤,使您能够从第一天起就使用 Gitops 工作流程构建和发布应用程序。 对于那些有兴趣进一步探索这种方法的人,可以考虑深入研究 NITRIC。

相似文章

    我的百万梦想第一天

    我的百万梦想第一天 今天进行了两笔交易,但都以失败告终。现在回想起来,点仍然坚持自己的交易原则,但并没有成功。为了流动性,下午积极卖出。交易分时图如下 第一笔交易 时间是 ,股价 股,挂牌价。第二笔交易 时间是 ,股价 股,挂牌价为。下午,由于划水,他主动卖出,以期手头有流动资金。第一笔交易于 卖出...

    12月孤独的第一天

    作者 李丽。月就是这样一个月。寒风吹过月光。默默地,安静地。拥抱白死病。在生命弧线的底部。北风呼啸,万物沉睡。等待雪轻轻地落下。大自然将月视为生命的一轮。 月至 月,每年。从一月的寂静中。醒来吧,二月。玫瑰在三月的头发上绽放。四月,烟雨四季,绿 肥 红 稀。五月坐在东风的对面,鹧鸪鸣叫。六月的蝉鸣,...

    第一天的第一天是如何计算的?

    第一天的第一天是根据夏至和庚正三之间的天数计算的。夏至在庚日伏击 是指从夏至算起,第一次火山的第一天。什么是Gengri?在中国,年 月 日的计数与西方的计数不同,而是采用天干地支的年代法,即天干的A B C D E G XIN NON 癸,以及紫 周 阴 毛 陈 思 吴 地上枝的魏 沈 优 徐 海...

    第一天的第一天是如何计算的?

    第一天的第一天是如何计算的?初府,又称头府,是除中国传统二十四节气外的杂节气,是第一阶段。它标志着仲夏的正式开始,是一年中最热的时期之一。第一天的第一天是如何计算的?.了解干部和支部的日期。第一伏的计算与中国古代的赣跷日期密切相关。甘芷编年史 是一本古老的历法,记载了十天主干 A B C D E G...

    入学考试后的第一天,我崩溃了

    今天是联考考试结束的第一天。我满怀信心地进入了考场,但因为试题太难,我乱了。面对家长和老师的期望,我承认自己有点太低估了,本以为联考不会难,但结果适得其反,还是没有达到预期。通过联考进入满意的大学的希望渺茫。真的没有机会吗?我只能浪费一年,选择重读?不,现在不是悲伤和悲伤的时候!JAE不是终点,而是...