Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从基础设施即代码到环境即代码的进化之路

从基础设施即代码到环境即代码的进化之路

作者头像
云云众生s
发布于 2024-03-28 07:36:02
发布于 2024-03-28 07:36:02
14000
代码可运行
举报
文章被收录于专栏:云云众生s云云众生s
运行总次数:0
代码可运行

运用GitOps来启动环境,可为开发团队带来一致性、版本控制、速度等多方面的好处。

译自 How We Evolved from IaC to Environments as Code,作者 Edan Evantal 是 Quali 的CTO Edan Evantal负责Quali基础设施自动化和环境交付平台的所有产品工程。在加入Quali之前,Edan曾在Matrix IT和Sibam Ltd担任工程管理职务。他在高科技行业拥有18年以上的经验......

这些年来,在构建我们的平台的过程中,并与我们的产品所支持的其他DevOps平台工程师一起工作,我亲眼见证了应用基础架构的演变正在打破它本来意在提供的自动化。

基础设施即代码(IaC)工具对于定义和自动交付云服务非常宝贵。当一个开发团队的需求扩展到此范围之外时,自动化通常就会中断。

原因有两个:

  • IaC工具的设计目的在于速度和自动化,而不是作为环境的真实来源。大型团队在大规模利用基础设施和了解代码更改可能如何扰乱应用性能方面可能会遇到困难。
  • IaC工具之间不兼容。应用日益依赖于用各种技术定义的复杂基础设施,需要手动编排来协调工具的细微差异。

开发人员在基础设施自动化功能与应用需求实际情况之间存在鸿沟。其结果是速度降低,基础设施存在未管理或配置错误的风险增加。

我们询问自己,我们能做些什么来弥合这一鸿沟,这让我们想到了一个简单的问题:

如果您可以以代码的形式启动所有环境,而不管基础设施的范围或用于定义它的 IaC 工具是什么,会怎么样?

在Git中将环境定义为代码

为了将环境定义为代码,我们首先需要以开发人员启动环境所需的一切来定义,这种格式对于DevOps来说既易于理解,又方便自动化机器读取。

使用我们的Torque平台,我们连接到一个Git仓库,发现其中定义的IaC模块,并将资源配置打包成一个新的由平台自动生成的YAML。

从那里,我们可以修改任何YAML代码,以包含环境启动时将生成的基础架构组件、参数、依赖项、元数据、身份验证和输出。

下面是YAML代码片段示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kind: environment
environment_name: "Workstation Staging A"
description: "EC2 workstation for staging workloads"
state: inactive
owner_email: "myemail@email.com"
blueprint:
 name: "test-workstation"
 repository_name: "cloud-native-application"
 branch: "main"
 commit: "536955389cd4ecbd1b8895c4a1093fe14a809b65"
inputs:
 service-account: "sa"
 agent: "review3"
grains:
 create-ec2:
   source:
     commit: "697d1"
   specs:
     instance_type: "t2.large"
     ami: "ami-0c55b159ertafe1f0"
     security_groups: ["sg-0246e9ddc2b2f23f4"]
 post-deployment:
   scripts: ["./configure-environment.sh", "./deploy-application.sh"]

这包含了环境所有必要元数据的单一定义,以结构化格式呈现。

简单来说,我们利用现有的基础设施代码来定义环境为代码。

使用GitOps启动应用环境

为了满足客户的需求,我们需要使这一定义具有操作性。

我们的初始答案是依赖我们的自助门户。当我们平台中的管理员创建这些YAML文件(我们称之为环境的“蓝图”)时,他们可以选择“发布”它。这会将环境添加到平台中的一个自助服务目录中,拥有最终用户权限的用户可以按需启动该环境。对于那些将环境集成到开发者工具、CI/CD或内部开发者门户的人来说,发布新蓝图也可以通过这些工具访问。

为了支持采用GitOps的团队,我们需要将已发布的蓝图集成到日常工作流程中。

通过在我们发现IaC模块的原始仓库中存储这个新的YAML文件,我们使环境定义在GitOps中可访问。实际上,我们为能够访问该仓库的用户“发布”了环境定义。

现在,开发人员可以使用单个命令启动完整的环境。

这种方法还提供了几个额外的优势:

  • 版本控制: 就像应用代码一样,环境可以进行版本控制,以确保跟踪每一次更改,并在必要时进行回滚。
  • 一致性: 利用这一定义每次都以一致的方式预配环境,消除了“它在我的机器上能工作”的问题。
  • 速度: 开发人员可以通过简单地提交代码来预配环境——这是他们熟悉的动作,所以他们可以快速响应开发、测试或生产需求,而无需其他团队的帮助。
  • 协作和治理: 创建环境的共享定义为仅靠IaC本身所不能轻松做到的协作奠定了基础。
  • 运营效率: 自动化预配流程意味着减少冗余的手动工作(和疲惫),以及DevOps工程师可以承担更有价值的任务。

在平台工程中,每一秒都是宝贵的,每一个资源都很重要。随着基础设施变得越来越复杂,以代码的形式管理环境是现代DevOps组织成熟的下一步。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-032,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
为什么说 DevOps 治理是实现快速开发的关键
作者 | Amir Rozenberg 译者 | 平川 策划 | 丁晓昀 对于任何组织,产品创新都是其在垂直市场中取得商业成功的关键因素。用户希望获得高度差异化、高性能而又令人愉悦的功能体验,而且这种期望比以往任何时候都强烈。COVID 加剧了对速度的需求,越来越多的企业将他们的主要精力转移到通过多种渠道在互联网上提供服务。 不过,在有些组织中,速度和创新与成本控制、规划及合规性是针锋相对的。如今,每一个阻碍快速操作的潜在障碍都是标准化和自动化的候选项。测试方式和测试主体的转变就是一个这样的例子。从
深度学习与Python
2023/03/29
4380
为什么说 DevOps 治理是实现快速开发的关键
自动化基础设施是否能够消除工单?
曾经有一段时间,开发人员编写的代码与其运行的基础设施非常接近。基础设施简单到工程师可以处理整个技术栈。这意味着他们可以同时管理用户体验、业务逻辑和服务器。但是企业软件发生了巨大变化:多个环境、云的兴起以及在可扩展性、监控和测试方面的巨大需求增加,使得产品工程师更难以按需创建、访问和管理基础设施。
云云众生s
2024/03/28
1090
自动化基础设施是否能够消除工单?
2025年基础设施即代码的成熟状态
多云环境激增,IaC采用率虽高但覆盖不足!Terraform地位受OpenTofu、Pulumi挑战。安全与治理仍是重点,DevOps流水线自动化待加强。2025年IaC报告聚焦AI在基础设施自动化中的作用,揭示IaC执行新挑战与自动化流水线变革。
云云众生s
2025/03/15
970
2025年基础设施即代码的成熟状态
探索进化之路:基础设施即目录
译自 Navigating the Evolution: Infrastructure as Catalog 。
云云众生s
2024/03/27
1370
将基础设施管理为代码-责任转移和开发人员的角色
介绍: 将基础架构编写为代码是一种好的做法吗?开发人员是否应该负责编写和维护基础设施代码?这种做法如何影响软件工程?在本文中,我们将探讨基础设施管理不断发展的格局、开发人员在基础设施代码中日益增长的作用,以及管理复杂系统时出现的挑战。
DevOps云学堂
2023/09/11
2030
将基础设施管理为代码-责任转移和开发人员的角色
构建内部开发者平台:四大支柱
基于这些原则设计的 IDP 简化了平台团队的操作,并使开发人员能够更快、更安全地移动。
云云众生s
2024/10/09
1600
基础设施即代码终极指南
随着 IaC 的兴起,DevOps 中对于与机器直接通信的需求日益增长,这使得开发人员和运维人员能够使用共享语言来实现和管理基础设施。
云云众生s
2024/03/28
2000
基础设施即代码终极指南
大妈都能看懂的 GitOps 入门指南
GitOps 这个概念最早是由 Kubernetes 管理公司 Weaveworks 公司在 2017 年提出的,如今已经过去了 5 个年头,想必大家对这个概念早有耳闻,但你可能并不知道它到底是什么,它和 DevOps 到底是啥关系,本文就来帮大家一一解惑。
米开朗基杨
2022/11/07
2.1K0
大妈都能看懂的 GitOps 入门指南
大多数公司难以实现基础设施即代码的原因
基础设施即代码 (IaC) 是云原生应用和基础设施定义、供应和管理 IT 基础设施的一项基本实践。
云云众生s
2024/11/28
650
基础设施即代码:你需要知道的一切
基础设施是软件开发过程的核心原则之一——它直接负责软件应用程序的稳定运行。这种基础设施的范围从服务器、负载平衡器、防火墙和数据库一直到复杂的容器集群。
陈哥聊测试
2022/05/13
9000
内部开发者平台:来自100多位专家的对话见解
注意:感谢您对该主题的宝贵意见。我收到了来自内部开发者平台运营商、失败公司、后悔公司、对平台感到满意的公司以及将其转变为产品或 SaaS 解决方案的公司提供的见解。我已经探索了它带来的价值,并发现最终许多解决方案都具有类似的逻辑。
云云众生s
2024/10/09
1340
内部开发者平台:来自100多位专家的对话见解
基础设施即代码的利与弊
基础设施即代码虽然解决了自动化、一致性和可扩展性等传统挑战,却也引入了新的复杂性问题。
云云众生s
2024/03/28
1300
2024年的基础设施即代码:为什么它仍然如此糟糕
工具碎片化,集成困难,配置噩梦:IaC 工具的用户们忍无可忍了。基础设施即代码的兴起能否带来帮助?
云云众生s
2024/12/28
1150
基础设施即代码:IaC简介
IaC:自动化您的IT,消除错误并更快扩展。学习Terraform和Ansible。拥抱当今基础设施的未来!
云云众生s
2025/01/11
1860
构建工作负载,而非基础设施:重新定义K8s平台
支持开发人员和运维人员的 Kubernetes 平台应该赋予团队构建工作负载的能力,而不仅仅是基础设施。
云云众生s
2024/11/05
1690
弥合基础设施即代码和GitOps的鸿沟
如何将Terraform、Crossplane和Atlantis巧妙地组合使用,发挥每项技术的优势,同时保留实施严格日常管理的灵活性。
云云众生s
2024/03/28
1430
弥合基础设施即代码和GitOps的鸿沟
GitOps—用于基础设施自动化的DevOps
GitOps提供了一种自动化和管理基础设施的方法。它通过许多团队已经应用的DevOps最佳实践来做到这一点,例如版本控制、代码评审和CI/CD管道。
陈哥聊测试
2020/12/10
1.5K0
如何控制云基础设施漂移
基础设施漂移不仅仅是技术上的小麻烦;它是一个普遍存在的问题,如果不加以控制,会危及整个组织。
云云众生s
2024/12/04
1200
如何控制云基础设施漂移
CI/CD流水线中的有关基础设施即代码的几个问题
译自 Questions to Ask about the IaC in Your CI/CD Pipeline 。
云云众生s
2024/03/28
1360
通过IaC自动化实现第一天的GitOps
GitOps有助于重新定义需要精确、自动化和透明性的环境中管理基础设施和应用部署的方式。
云云众生s
2024/03/28
960
通过IaC自动化实现第一天的GitOps
相关推荐
为什么说 DevOps 治理是实现快速开发的关键
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验