创建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 ...
随机推荐
- 落地微服务架构v2.0
网关+服务治理 将服务注册到Consul中,需要首先系统该插件. Ocelot:网关组件,腾讯和微软都在使用. 可以使用dotnet run命令启动.NET Core项目,启动时可以在命令时传递监听的 ...
- Python开发者必读:Pip使用全攻略与最佳实践
在这篇文章中,我们将深入探讨Python的主要包管理工具--Pip.内容涵盖了Pip的基本概念.安装和配置.中国国内镜像源的使用.包管理.与虚拟环境的关系.高级用法.问题解决. 1. 引言 在现代的软 ...
- Mysql基础8-多表查询
一.多表关系 一对多或者多对一 案例:部门与员工的关系 关系:一个部门对应多个员工,一个员工对应一个部门(不考虑跨部门的特殊情况) 实现:在多的一方建立外键,指向一的一方的主键,这里员工表是多的的一方 ...
- k8s+containerd安装
准备环境 准备两台服务器节点,如果需要安装虚拟机,可以参考<wmware和centos安装过程> 机器名 IP 角色 CPU 内存 centos01 192.168.109.130 mas ...
- Go语言的Printf用法
在 Go 语言中,Printf 是用于格式化输出的函数,用于将数据以指定格式打印到标准输出或其他输出流.其中,%p 是 Printf 函数的一个格式化动词,用于输出指针的值. 以下是 %p 的详细说明 ...
- Node: 使用nvm切换node版本
软件下载 https://github.com/coreybutler/nvm-windows/releases/tag/1.1.7 解压并安装 双击程序一路安装即可.安装完成后,在控制台输入nvm出 ...
- ValueError: Max value is 14 解决方案
方案一(有时会失效): 将EXCEL文件中的格式全部清除即可.最好是复制,然后只粘贴值. 方案二(指定引擎): data = pd.read_excel(path, engine="open ...
- 王道oj/problem20
网址:oj.lgwenda.com/problem/20 思路:层次建树,用递归的方法前序遍历 代码: #define _CRT_SECURE_NO_WARNINGS#include <stdi ...
- 基于AIidlux平台的自动驾驶环境感知与智能预警
自动驾驶汽车又称为无人驾驶车,是一种需要驾驶员辅助或者完全不需操控的车辆. 自动驾驶分级: 自动驾驶系统的组成部分: 环境感知系统: 自动驾驶系统架构: 自动驾驶数据集: Aidlux的作用: YOL ...
- TypeChat源码分析:基于大语言模型的定制化 AI Agent 交互规范
TypeChat源码分析:基于大语言模型的定制化 AI Agent 交互规范 本文深入介绍了微软最近发布的 TypeChat 项目,该项目允许开发者定义大语言模型返回的响应结构.通过分析源代码,探讨了 ...