创建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/
创建CI/CD流水线中的IaC前,需要考虑哪些事项?的更多相关文章
- 如何在 Jenkins CI/CD 流水线中保护密钥?
CI/CD 流水线是 DevOps 团队软件交付过程的基本组成部分.该流水线利用自动化和持续监控来实现软件的无缝交付.通过持续自动化,确保 CI/CD 流水线每一步的安全性非常重要.在流水线的各个阶段 ...
- devops-5:从0开始构建一条完成的CI CD流水线
从0开始构建一条完成的CI CD流水线 前文中已经讲述了静态.动态增加agent节点,以动态的k8s cloud为例,下面就以Maven构建Java程序为例,开始构建出一条完整的CI CD流水线. 实 ...
- Docker: Jenkins与Docker的自动化CI/CD流水线实战
什么是CI/CD 持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈.持续部署(Continuous Deployme ...
- Jenkins自动化CI CD流水线之1--介绍与安装
第1章 大纲 CI/CD, DevOps介绍 Git安装与使用 Jenkins安装与使用 权限管理 参数化构建 Master-Slave 流水线(Pipeline) 邮件通知 应用案例 自动发布PHP ...
- Jenkins自动化CI&CD流水线
1 环境说明 主机名称 IP cpu核数/内存/硬盘 安装软件 用途 controlnode 172.16.1.120 2/2/60 git 代码仓库 slavenode1 172.16.1.121 ...
- Jenkins自动化CI CD流水线之5--pipeline
一.概览 二.安装 在对jenkins进行初始化安装时,默认已经安装了jenkins的相关插件,如下图所示: 三.实操 新建任务: 编写pipeline脚本: 我们可以借助流水线语法去做. test流 ...
- Jenkins自动化CI CD流水线之3--参数化构建
一. 背景 如果只是简单的构建,jenkins自己默认的插件可以做,但是如果我们想要在构建过程中有更多功能,比如说:选择性构建.传参.项目指定变量等等其他功能,基础的参数化构建可以实现一些简单功能,但 ...
- Jenkins自动化CI CD流水线之2--用户权限管理
一. 背景 针对开发.运维.测试针对不同角色进行不同权限划分, 基于插件: Role-based Authorization Strategy来实现. 一. 安装 安装该插件: 系统管理->管理 ...
- jenkins自动化pipline的ci/cd流水线
pipeline { agent any tools { //工具必须预先在jenkins中预配置 maven 'mvn' jdk 'jdk' } stages { stage('Env') { st ...
- 使用 jenkins 搭建CI/CD流水线 (MAC)
如何搭建持续集成/持续交付平台?? 如何使用jenkins搭建持续交付流水线,以及和其他工具(如artifactory)集成?如何使用元数据,记录软件发布过程的构建信息,测试结果,并用rest Api ...
随机推荐
- List去除重复数据的五种方式
来自:CSDN,作者:多纤果冻 链接:https://blog.csdn.net/qq_37939251/article/details/90713643 以下介绍五种-不同的方法去除 Java 中A ...
- 【技术积累】Vue.js中的组件库【一】
Vue组件库是什么 Vue中的组件库是一组预先构建好的可重用组件,用于加速开发过程并提高代码的可维护性.组件库通常包含一系列常用的UI组件,如按钮.输入框.下拉菜单等,以及一些功能性组件,如模态框.轮 ...
- Linux 命令:btrfs filesystem resize
btrfs filesystem resize 2:300G /path ## 为创建了btrfs文件系统,已经挂载到/path 且device ID为2的硬盘/分区进行resize # 已经做过硬盘 ...
- XCTF-favorite_number
题目 (xctf.org.cn) 判断,既要数组强等于,又要首元素不等:php有下标越界溢出漏洞,因此0可以通过整型溢出得到 绕过if判断 playload:stuff[4294967296]=adm ...
- React: husky > pre-push hook failed (add --no-verify to bypass)
解决方案 提交commit和推送代码时都加上--no-verify参数,然他跳过检查 提交 推送
- pandas 显示所有的行和列
import pandas as pd # 显示所有列,所有行 pd.set_option('display.max_columns', None) pd.set_option('display.ma ...
- 王道oj/problem11(函数调用中实现指针的传递)
网址:http://oj.lgwenda.com/prblem/11 思路:函数中的j=&i,为i的地址 *j可以从地址访问,从而改变i的值 代码: #define _CRT_SECURE_N ...
- [nginx]proxy_cache缓存系统
前言 proxy_cache是nginx内置的一个缓存系统,可实现减小后端负载的作用. 常用参数说明 参数 说明 proxy_cache_path 缓存文件路径.level表示目录层级,1:2表示两个 ...
- 从零玩转系列之微信支付实战PC端项目构建+页面基础搭建 | 技术创作特训营第一期
一.前言 欢迎来到本期的博客!在这篇文章中,我们将带您深入了解前端开发领域中的一个热门话题: 如何使用 Vue 3 和 Vite 构建前端项目.随着现代 Web 应用程序的需求不断演进, 选择适当的工 ...
- 实现在Qt窗口中嵌套SDL
实现在Qt窗口中嵌套SDL 在现代软件开发中,多媒体处理和交互性成为应用程序不可或缺的一部分.Qt作为一个强大的GUI框架,为开发者提供了丰富的图形.界面和事件处理工具.然而,有时候,我们可能需要更多 ...