掌控基础设施,加速 DevOps 之旅:IaC 深度解析

在当今的 DevOps 世界中,基础设施即代码(IaC)是一个非常重要的概念。它在整个行业几乎无处不在,是现代工程角色的绝对关键。

 

本文将主要包含 IaC 的定义和它的好处,同时将 Walrus 作为最佳实践来进行详细讲解。

 

什么是基础设施即代码(IaC)

用最简单的话来说,就是使用代码定义需要在描述性模型中部署的基础设施。与应用程序的代码类似,基础设施的代码会成为项目的一部分,并存储在版本控制系统(或 VCS)中

 

例如,您开发了一个网络应用程序。该网络应用程序需要托管在某个基础设施上才能被使用。使用 IaC,您可以定义基础设施的部署地点,如 Microsoft Azure、Amazon AWS 或 Google Cloud 等公有云提供商,以及网络应用程序运行的服务类型,如 Azure 网络应用程序或 AWS S3 存储账户。除此以外,您还可以定义网络应用程序所需的设置,其中可能包括需要多少服务器计算能力(CPU 和内存)、如何确保网络安全以及如何公开应用程序的域名等。

 

基础设施即代码的优势

IaC 解决了基础设施配置中的许多常见问题。其中包括:

 

  • 可通过 IaC 配置代码轻松配置新环境或基础设施。使用 IaC 部署基础设施具有可重复性
  • 手动配置的环境难以衡量。使用 IaC 配置的环境可以快速部署和衡量
  • 如果要对使用 IaC 部署的现有基础设施进行更改,可以在代码中完成,而且更改将被跟踪。
  • 当 IaC 与声明式工具(它描述了您希望环境呈现的状态)一起使用时,您可以检测并纠正环境漂移。如果在代码之外手动修改了基础设施的某个部分,下一次运行时就能使其恢复到所需的状态。
  • 更改可以多次应用,而不会改变初始应用之外的结果。这就是所谓的幂等性
  • 避免手动配置环境,因为人为失误通常会导致错误。有了 IaC,这些错误都可以避免。
  • IaC 是实现跨环境和基础设施一致性的一种手段。代码可以重复使用。
  • 由于部署时间以及管理、管理和维护环境的工作量减少,基础设施成本也随之降低。
  • IaC 可用于持续集成/持续部署(CI/CD)流水线。这样做的主要好处是实现基础设施部署自动化
  • DevOps 团队可以在开发周期的早期在类似生产环境中测试应用程序。
  • 基础设施配置代码与应用源代码一起保存在版本控制系统中,通常在同一个版本库中。现在,一切都可以放在一起。
  • 由于综合了使用 IaC 的所有优点,生产率将会提高
  • 由于代码保存在版本控制系统中,因此可以获得 VCS 的所有优点。

 

IaC 的挑战和局限性

采用 IaC 有许多优势,但同样要考虑其挑战和局限性。通常情况下,企业内的传统基础设施或运维团队可能不熟悉版本控制系统和 Git 的使用,也不擅长使用 Visual Studio code 等代码编辑工具。

 

此外,在企业内部采用新技术肯定会存在学习曲线。这需要培训,也需要时间来培养相应的技能。IaC 和 DevOps 方面的技能目前在业内非常抢手,因此可能很难招聘到具备这些技能的员工。

 

在使用 IaC 管理环境的过程中,通常会先在所选的云平台上部署少量新资源,然后随着企业内部采用 IaC 的情况增多,更多的基础设施就可以开始用代码进行部署和管理。最终,当您的组织成熟并熟悉所选 IaC 系统和工具的原理和操作时,就可以将现有资源置于 IaC 控制之下

 

为什么要将 IaC 存储在版本控制系统(VCS)中?

将基础设施即代码存储在 VCS 中会自动为您带来一系列额外的好处。

 

因为 VCS 使开发人员和组织能够更高效地提高产品质量,同时记录和评估其改进的详细历史记录,从而获得成功的最终产品。简而言之,使用 VCS 可以实现治理、版本管理并加强协作

 

  • 效率:由于配置文件是随变化逐步修改的,因此测试变得更加容易,因为可以回滚到以前的版本。新功能可随着时间的推移而不断增加。
  • 跟踪和版本控制:跟踪谁做了修改,以及在哪个版本的文件中做了修改。可在每次代码修改(或提交)时添加注释。
  • 合作:使用分支功能,多人可同时处理配置文件。可使用 PR 将更改合并在一起。
  • 治理与合规:自动跟踪更改可为您提供强大的审计线索,从而实现风险管理。
  • 管理:通过了解配置的作者、更改所需的时间、时间轴及其影响,可以对管理进行全面了解。
  • 减少重复:减少重复和过时的配置文件。
  • 备份:用户通常会克隆其配置代码所在的资源库,并在本地对其进行处理。这样,代码就同时存在于本地和 VCS 中。VCS 本身也会被备份。

 

声明式方法与命令式方法

编写 IaC 配置文件时使用的模板有两种,不同的工具使用不同的方法。

 

声明式:您定义最终解决方案的理想状态

工具或自动化平台决定如何实现目标,一步步执行由工具处理,不对用户公开。声明式工具是 IaC 领域最流行、最主要的工具。当需要对解决方案进行更改或更新时,它们最为有用

 

声明性工具是幂等的,因为您正在定义解决方案所需的状态。 幂等性让一个进程可以执行多次且结果相同

 

命令式:您定义为达到所需的解决方案而必执行的步骤

命令式方法允许你建立多层命令来达到最终目标。命令式工具可以让你对如何实现目标有更多的控制。这些工具在您需要部署而将来不需要更新或更改解决方案时最为有用。

 

强制方法可能不会导致惰性,最终目标可能因起点不同而产生差异,因为一系列步骤构成了流程。例如,考虑一个有 10 个步骤的流程,从第 1 步开始和从第 6 步开始会导致不同的结果。

 

基础设施即代码工具

相对全面地了解完 IaC 的优势和命令方式,接下来需要决定使用哪个 IaC 工具,这将取决于许多因素,包括您的工程能力和当前对云平台的使用。

 

Walrus 是一款基于 IaC 的开源应用平台,支持 Terraform、OpenTofu 等 IaC 工具。Walrus 采用独特的双层抽象架构,包括 IaC 模板(例如 Terraform 模块)和资源定义(Resource Definition)。IaC 模板允许运维人员创建可复用的基础设施配置,避免重复工作。开发人员则可以通过自助服务的方式进行资源配置和部署,无需深入了解底层技术细节,专注于应用程序开发。资源定义功能赋予运维人员制定和执行企业策略的能力。

 

他们可以定义云资源的使用规则、配置标准和访问权限,确保云资源的使用符合安全合规要求。同时,Walrus 遵循 DRY (Don’t Repeat Yourself) 原则,保证跨平台和云环境的一致性,避免代码冗余。

 

此外,Walrus 可以编排整套应用系统,并提供统一的视图简化资源和环境管理。具体而言:

 

  • 应用统一编排:以应用为中心,对应用服务集周边资源依赖(数据库、中间件、负载均衡、网络等)进行统一编排部署。并自动生成依赖图,直观展示底层模块、运行状态及依赖关系等。
  • 动态环境管理:支持灵活的环境配置及管理,支持一键创建、克隆、停止整个应用环境或单个服务,满足各类环境管理需求。
  • 统一视图:Walrus 在单一资源视图中提供针对资源详情各类操作的支持,如查看资源列表、管理资源及其底层组件,查看日志、进行终端调试故障、获取服务的URL等。用户无需切换界面即可完成资源管理。

 

总结

使用 IaC 实现基础设施自动化可以带来红利,使您的团队能够交付更多产品,更加灵活,从而节省时间和金钱。

 

为您的团队选择正确的 IaC 工具可能是一项艰巨的任务,因为有很多选择。比较每种工具的优缺点,同时评估您的需求和团队中可用的技能组合,应该能为您提供一个良好的起点。

 

如果您刚刚开始使用 IaC,建议您优先考虑 Walrus,因为它是当今业界非常抢手的技能,也是最普遍的 IaC 工具。网上有很多学习资料,社区支持也非常好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

山与路远程控制 一个基于electron和golang实现的远控软件

山与路远程控制 🎥项目演示地址 还在制作… ♻️项目基本介绍 山与路远程控制是基于electron(vue3)和golang实现的远程控制软件(项目界面主要模仿向日葵远程软件,如有侵权请告知),代码可能有点臃肿毕竟只花了一周左右写的无聊项目,如果对其感兴趣的大佬可以fork自…

【JavaScriptThreejs】判断路径在二维平面上投影的方向顺逆时针

原理分析 可以将路径每个连续的两点向量叉乘相加,根据正负性判断路径顺逆时针性 当我们计算两个向量的叉积时,结果是一个新的向量,其方向垂直于这两个向量所在的平面,并且其大小与这两个向量构成的平行四边形的面积成正比。这个新…

爱普生RX-8130CE内置电池控制 RTC

特点:(1)封装极小,集成度高RX-8130CE是一个带|2C接口的实时时钟模块,内部集成32.768KHz晶体振荡器。实时时钟功能不仅集成了年、月、日、星期、小时、分、秒的日历和时钟计数器,同时也有时间闹钟、间隔定时器、时间更新中断等功能…

算法练习|Leetcode49字母异位词分词 ,Leetcode128最长连续序列,Leetcode3无重复字符的最长子串,sql总结

目录 一、Leetcode49字母异位词分词题目描述解题思路方法:哈希总结 二、Leetcode128最长连续序列题目描述解题思路方法:总结 三、Leetcode3无重复字符的最长子串题目描述解题思路方法:双指针法总结sql总结 一、Leetcode49字母异位词分词 题目描述 给你一个字符串数组&#xf…

编译支持播放H265的cef控件

接着在上次编译的基础上增加h265支持编译支持视频播放的cef控件(h264) 测试页面,直接使用cef_enhancement,里边带着的那个html即可,h265视频去这个网站下载elecard,我修改的这个版本参考了里边的修改方式,不过我的这个…

大语言模型(LLM)漏洞爆发,AI模型无一幸免

本文概述了人工智能初创公司Anthropic于2024年04月03日发表的一篇针对人工智能安全的论文,该公司在本论文中宣布的一种新的“越狱”技术,名为Many-shot Jailbreaking(多轮越狱)。文章详细描述了目前大语言模型(LLM&…

CMake 编译项目

一、概述 cmake 是C一个很重要的编译和项目管理工具,我们在git 上以及常见的项目现在多数都是用cmake 管理的,那么我们今天就做一个同时有Opencv和CGAL 以及PCL 的项目。 二、项目管理 重点是CMakeList.txt 1、CMakeList.txt cmake_minimum_requir…

Springboot3集成Web、RedisTemplate、Test和knife4j

本例将展示&#xff0c;如何在Springboot3中完成&#xff1a; Redis功能的Web接口实现构建Redis功能的单元测试knife4j自动化生成文档 Redis功能 Pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

windows SDK编程 --- 消息(3)

前置知识 一、消息的分类 1. 鼠标消息 处理与鼠标交互相关的事件&#xff0c;比如移动、点击和滚动等。例如&#xff1a; WM_MOUSEMOVE: 当鼠标在窗口客户区内移动时发送。WM_LBUTTONDOWN: 当用户按下鼠标左键时发送。WM_LBUTTONUP: 当用户释放鼠标左键时发送。WM_RBUTTOND…

区块链交易所技术开发架构解析 交易所开发团队

区块链交易所是加密货币市场中的关键基础设施之一&#xff0c;它提供了一个平台&#xff0c;让用户可以买卖各种数字资产。而搭建一个功能完善、安全可靠的交易所需要一个复杂的技术开发架构&#xff0c;以及一个协调配合的交易所开发团队。下面我们将分析交易所的技术架构以及…

Elasticsearch:崭新的打分机制 - Learning To Rank (LTR)

警告&#xff1a;“学习排名 (Learning To Rank)” 功能处于技术预览版&#xff0c;可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题&#xff0c;但此功能不受官方 GA 功能的支持 SLA 的约束。 注意&#xff1a;此功能是在版本 8.12.0 中引入的&#xff0c;并且仅适…

Ghost Buster Pro for Mac:强大的系统优化工具

Ghost Buster Pro for Mac是一款功能强大的系统优化工具&#xff0c;专为Mac用户设计&#xff0c;旨在提供全方位的系统清理、优化和维护服务。 Ghost Buster Pro for Mac v3.2.5激活版下载 这款软件拥有出色的垃圾清理能力&#xff0c;能够深度扫描并清除Mac上的无效目录、文件…

个人网站的SEO优化系列——如何实现搜索引擎的收录

如果你自己做了一个网站&#xff0c;并且想让更多的人知道你的网站&#xff0c;那么无非就是两种途径 一、自己进行宣传&#xff0c;或者花钱宣传 二、使用搜索引擎的自然流量 而如果搜索引擎都没有收录你的站点&#xff0c;别说是自然流量&#xff0c;就算是使用特定语句【sit…

文件上传服务器、文件展示等异步问题

问题&#xff1a; 文件上传模块&#xff1a;当文件已经上传完成&#xff0c;文件进度已经走完了&#xff0c;但是服务器响应还没有返回结果&#xff0c;出现了&#xff0c;获取不到上传后的文件路径&#xff0c;需要等待服务器返回结果后&#xff0c;才能获取文件路径并点击跳…

excel中怎么用乘法、加法来替代AND和OR函数

你可以使用乘法和加法来替代Excel中的AND和OR函数&#xff0c;虽然这样做可能会增加公式的复杂度&#xff0c;但在某些情况下是可行的。 1. 使用乘法替代AND函数&#xff1a;AND函数用于判断一系列条件是否同时成立&#xff0c;如果所有条件都为TRUE&#xff0c;则返回TRUE&…

IOMMU和SMMU详解

前言&#xff1a; IOMMU&#xff08;输入输出内存管理单元&#xff09;的原理与CPU中的MMU&#xff08;内存管理单元&#xff09;相似。它的作用是管理设备的内存访问请求&#xff0c;允许安全、高效地在设备和内存之间直接传输数据。IOMMU通常用于支持高速数据传输的设备&…

java生成数据库数据到excel当做下拉选择,copy就完事~

背景&#xff1a;由于需要下载模板&#xff0c;模板包含下拉选择框&#xff0c;但是下拉选择框不想手写&#xff0c;并且需要从数据库读取&#xff0c;由于直接设置excel会有单元格最大255个字符长度限制&#xff0c;所以用到以下部分代码。 思路&#xff1a;由于数据模板在sh…

怎么通过Javascript脚本实现远程控制一路开关

怎么通过Javascript脚本实现远程控制一路开关呢&#xff1f; 本文描述了使用Javascript脚本调用HTTP接口&#xff0c;实现控制一路开关。一路开关可控制一路照明、排风扇等电器。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备名称1智能WiFi…

JSON Web Token 入门

JSON Web Token&#xff08;缩写 JWT&#xff09;是目前最流行的跨域认证解决方案&#xff0c;本文介绍它的原理和用法。 一、跨域认证的问题 互联网服务离不开用户认证。一般流程是下面这样。 1、用户向服务器发送用户名和密码。 2、服务器验证通过后&#xff0c;在当前对话&…

基于微信小程序的宠物寄养小程序,附源码

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…