许多软件工程团队通常会遵循相似的方法来交付基础设施以支持软件开发生命周期。为了缩小基础设施配置方式与应用程序环境部署方式之间的差距,许多 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/

创建CI/CD流水线中的IaC前,需要考虑哪些事项?的更多相关文章

  1. 如何在 Jenkins CI/CD 流水线中保护密钥?

    CI/CD 流水线是 DevOps 团队软件交付过程的基本组成部分.该流水线利用自动化和持续监控来实现软件的无缝交付.通过持续自动化,确保 CI/CD 流水线每一步的安全性非常重要.在流水线的各个阶段 ...

  2. devops-5:从0开始构建一条完成的CI CD流水线

    从0开始构建一条完成的CI CD流水线 前文中已经讲述了静态.动态增加agent节点,以动态的k8s cloud为例,下面就以Maven构建Java程序为例,开始构建出一条完整的CI CD流水线. 实 ...

  3. Docker: Jenkins与Docker的自动化CI/CD流水线实战

    什么是CI/CD 持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈.持续部署(Continuous Deployme ...

  4. Jenkins自动化CI CD流水线之1--介绍与安装

    第1章 大纲 CI/CD, DevOps介绍 Git安装与使用 Jenkins安装与使用 权限管理 参数化构建 Master-Slave 流水线(Pipeline) 邮件通知 应用案例 自动发布PHP ...

  5. Jenkins自动化CI&CD流水线

    1 环境说明 主机名称 IP cpu核数/内存/硬盘 安装软件 用途 controlnode 172.16.1.120 2/2/60 git 代码仓库 slavenode1 172.16.1.121 ...

  6. Jenkins自动化CI CD流水线之5--pipeline

    一.概览 二.安装 在对jenkins进行初始化安装时,默认已经安装了jenkins的相关插件,如下图所示: 三.实操 新建任务: 编写pipeline脚本: 我们可以借助流水线语法去做. test流 ...

  7. Jenkins自动化CI CD流水线之3--参数化构建

    一. 背景 如果只是简单的构建,jenkins自己默认的插件可以做,但是如果我们想要在构建过程中有更多功能,比如说:选择性构建.传参.项目指定变量等等其他功能,基础的参数化构建可以实现一些简单功能,但 ...

  8. Jenkins自动化CI CD流水线之2--用户权限管理

    一. 背景 针对开发.运维.测试针对不同角色进行不同权限划分, 基于插件: Role-based Authorization Strategy来实现. 一. 安装 安装该插件: 系统管理->管理 ...

  9. jenkins自动化pipline的ci/cd流水线

    pipeline { agent any tools { //工具必须预先在jenkins中预配置 maven 'mvn' jdk 'jdk' } stages { stage('Env') { st ...

  10. 使用 jenkins 搭建CI/CD流水线 (MAC)

    如何搭建持续集成/持续交付平台?? 如何使用jenkins搭建持续交付流水线,以及和其他工具(如artifactory)集成?如何使用元数据,记录软件发布过程的构建信息,测试结果,并用rest Api ...

随机推荐

  1. java查询sql动态查询需要的字段

    方法一:使用"trim"标签. <select id="selTest" parameterType="mocha.framework.enti ...

  2. 【Azure API Management】实现在API Management服务中使用MI(管理标识 Managed Identity)访问启用防火墙的Storage Account

    问题描述 在Azure的同一数据中心,API Management访问启用了防火墙的Storage Account,并且把APIM的公网IP地址设置在白名单.但访问依旧是403 原因是: 存储帐户部署 ...

  3. linux_mint_21 vim配置:剪贴板支持和输入法自动切换

    一.vim的剪贴板支持 有的vim版本不支持系统剪切板,也就是说在vim编辑器外面复制的内容,不能够粘贴到vim中;在vim中通过yy.d.c复制剪切的内容也不能粘贴在vim编辑器外面. 这实在是有点 ...

  4. PerfView专题 (第十四篇): 洞察那些 C# 代码中的短命线程

    一:背景 1. 讲故事 这篇文章源自于分析一些疑难dump的思考而产生的灵感,在dump分析中经常要寻找的一个答案就是如何找到死亡线程的生前都做了一些什么?参考如下输出: 0:001> !t T ...

  5. 大白话讲讲 Go 语言的 sync.Map(一)

    阅读本文大约需要 4.25 分钟. 程序是枯燥乏味的. 在讲 sync.Map 之前,我们先说说什么是 map(映射). 我们每个人都有身份证号码,如果我需要从身份证号码查到对应的姓名,用 map 存 ...

  6. 2023牛客暑期多校训练营5 ABCDEGHI

    比赛链接 A 题解 知识点:莫队,树状数组. 区间询问显然可以离线莫队,考虑端点移动对答案的影响. 不妨先考虑右端点右移一个位置,对答案的改变.假设右端点右移后在 \(r\) ,我们先要知道 \([l ...

  7. 如何用IoT边缘连接器实现云端应用控制PLC?

    本文分享自华为云社区<数字工厂深入浅出系列(十):IoT边缘连接器实现云端应用控制PLC>,作者: 云起MAE. 通过IoT云平台和边缘计算的技术设施,工厂可以将PLC等OT过程制造控制器 ...

  8. centos7离线安装harbor

    前言 harbor是一个docker私有仓库,基于docker官方的registry,提供GUI.权限控制.项目管理等功能. 安装harbor前,需要先安装docker和docker-compose ...

  9. docker安装phpmyadmin

    下载docker镜像 docker pull phpmyadmin/phpmyadmin 创建容器 # 假设MySQL服务器的地址为:192.168.0.10,端口3306 # 通过3360端口访问p ...

  10. AI绘画StableDiffusion:云端在线版免费使用笔记分享-Kaggle版

    玩AI绘画(SD),自己电脑配置不够?今天给大家介绍一下如何baipiao在线版AI绘画StableDiffusion. Kaggle 是世界上最大的数据科学社区,拥有强大的工具和资源,可帮助您实现数 ...