当前位置: 首页 > news >正文

创建CI/CD流水线中的IaC前,需要考虑哪些事项?

许多软件工程团队通常会遵循相似的方法来交付基础设施以支持软件开发生命周期。为了缩小基础设施配置方式与应用程序环境部署方式之间的差距,许多 DevOps 团队将其基础设施即代码(IaC)模块直接连接到其 CI/CD 平台。其目的是创建一个直接融入软件开发和交付流程的连续基础设施流水线,类似于用于持续交付应用程序的 CI/CD 流水线。
 

原因很容易理解。开发团队需要快速部署基础架构,他们没有时间了解配置的细微差别。许多人根本不熟悉 IaC 工具,因此无法在第一时间进行部署。
 

从理论上讲,将 IaC 模块插入 CI/CD 工具应该使开发人员无需了解 IaC 配置中使用的语法和逻辑。当开发人员和测试人员在整个流水线中执行其工作时,会部署基础设施以支持每个步骤。
 

不过在采用这种方法之前,有几个重要的事项需要明确。
 

如何跟踪资源利用率?

虽然在 CI/CD 流水线中部署 IaC 可以帮助团队更快地移动,但它会使运营团队忽视资源消耗、使用情况和成本应计情况。
 

这对于用于测试、调试和暂存的临时环境尤其重要。如果 CI/CD 流水线正在大规模部署云资源,那么谁负责在这些阶段完成后终止它们?如果您想了解当前正在运行哪些环境、谁启动了这些环境,以及这些环境给您带来的实时成本,应该从哪里开始下手?
 

在急于加速运维的过程中,通常会牺牲可观测性**。这使得基础设施资产的端到端管理和成本控制变得困难**。
 

团队是否共享云帐户凭据和密钥以获取访问权限?

面对按时完成任务的压力,一些团队可能会走捷径,将云帐户凭据、证书和其他密钥以硬编码的形式放到 IaC 模块中,以便为团队成员提供所需的访问权限。
 

仅依靠 IaC 在整个 CI/CD 流水线中交付基础设施会快速加速 IaC 模块的创建,但并不能更轻松地分发对云基础设施的安全访问。这是一个需要避免的严重风险。
 

如何确保 IaC 模块是最新的?

在生命周期阶段保持一致的配置在较大规模上可能具有挑战性,导致测试环境过期并需要返工。IaC 工具仅标识何时对源文件进行配置更改,这可能难以跟踪。如果实时环境发生更改,开发人员将花费大量时间来尝试了解其部署失败的原因。
 

DevOps 团队在预配基础架构上花费了多少时间?

对于 DevOps 的工作效率而言,基础设施置备(provisioning) 是一把双刃剑。一方面,频繁的环境部署对云成本效益来说是一个积极的信号,因为这表明当不再需要短暂环境时,团队会将其停用。
 

另一方面,对部署的高需求可能意味着您的 DevOps 团队需要繁忙地处理基础设施置备工单,这会降低开发速度。
 

即使在使用基础设施即代码时,交付支持 CI/CD 流水线的环境所需的编排工作量也可能相当大。请务必考虑支持流水线的环境的内容以及交付流水线所需的工作
 

如何将云运营标准化?

随着越来越多的企业采用云原生开发,复杂性挑战变得越来越普遍。开发团队如何在不牺牲对云资源使用方式的控制的前提下加快速度,成为需对企业需要解决的问题。
 

通过 CI/CD 流水线扩展 IaC 可能会导致配置混乱。在 git 仓库管理的基础架构缺乏一个执行标准的中心点,因此很难了解团队是否部署了经批准的云配置。云运营也是如此。如果要为临时环境要求最大运行时,需要考虑在数十甚至数百个 IaC 配置支持的多个流水线中强制实施。
 

参考链接:
https://thenewstack.io/questions-to-ask-about-the-iac-in-your-ci-cd-pipeline/

 

相关文章:

  • vue3框架全局修改样式(字体颜色以及初始化定义基础elemplent颜色)
  • MCU HardFault_Handler调试方法
  • Flask后端开发(二) - 功能实现和项目总结
  • 学习英语1
  • 基于Tensorflow卷积神经网络玉米病害识别系统(UI界面)
  • 大神总结:做数据可视化,谨记三要、两不要
  • 高德地图撒点组件
  • React使用富文本CKEditor 5,上传图片并可设置大小
  • 【机器学习】四、计算学习理论
  • 年终总结一定用得上!这8款AI制作PPT软件不容错过。
  • JS ??和?.
  • springboot 操作sql改变状态的时候,怎么防止并发操作带来的问题
  • python加上ffmpeg实现音频分割
  • nginx项目部署教程
  • [云原生1. ] 使用Docker-compose一键部署Wordpress平台
  • [ JavaScript ] 数据结构与算法 —— 链表
  • Android优雅地处理按钮重复点击
  • Cookie 在前端中的实践
  • fetch 从初识到应用
  • IndexedDB
  • Java|序列化异常StreamCorruptedException的解决方法
  • Java深入 - 深入理解Java集合
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Linux各目录及每个目录的详细介绍
  • nginx 负载服务器优化
  • ubuntu 下nginx安装 并支持https协议
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 基于webpack 的 vue 多页架构
  • 扑朔迷离的属性和特性【彻底弄清】
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 网络应用优化——时延与带宽
  • 追踪解析 FutureTask 源码
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​io --- 处理流的核心工具​
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (8)STL算法之替换
  • (HAL库版)freeRTOS移植STMF103
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (三)c52学习之旅-点亮LED灯
  • (一一四)第九章编程练习
  • (转载)利用webkit抓取动态网页和链接
  • **PHP分步表单提交思路(分页表单提交)
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Core 版本不支持的问题
  • .NET 使用配置文件
  • @vue/cli 3.x+引入jQuery
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce