CloudIaC 漂移检测功能详解

简介: 云霁CloudIaC 是一款开源的基于terraform 的低代码平台管理库,本篇文章主要介绍其中关于配置漂移的处理方式。

前言:

CloudIaC 是基于基础设施即代码构建的云环境自动化管理平台。 CloudIaC 将易于使用的界面与强大的治理工具相结合,让您可以快速轻松的在云中部署和管理环境。其中结合了开源工具Terraform的强大功能,是一个贯彻 IAC(基础设施即代码)的开源项目。 目前正在快速的版本迭代当中,那么随着v0.8版本的更新,CloudIaC 平台也推出了配置漂移检测这样一个非常有特色的功能,那么接下来本篇文章主要是介绍 v0.8 漂移检测功能,关于CloudIaC 项目的其他相关文章,大家感兴趣的也可以移步以下链接:

  1. 使用 CloudIaC 使 terraform 的代码部署更容易
  2. CloudIaC快速入门文档


环境搭建

  1. CloudIaC 官方文档中提供了非常多的部署方式,包括本地部署,容器部署,以及k8s部署等等,具体官方的部署方式我们可以通过上述的 CloudIaC快速入门文档 中找到具体的介绍,这里我们使用对新手比较友好,最简单的使用terraform 一键部署的方式:


1.下载代码
git clone https://github.com/xuxiaoahang2018/cloudiac-docker-deploy.git
2. mac安装terraform(已安装可跳过,如果没有brew可百度安装下brew)(如果不是mac系统请参考官方文档选择特定版本安装 https://www.terraform.io/downloads.html)
brew install terraform
3. 配置阿里云服务ak,region等信息,这里ak请输入自己的阿里云akexport ALICLOUD_ACCESS_KEY=LT*************bexportALICLOUD_SECRET_KEY=sT*****************WwexportALICLOUD_REGION=cn-beijing4. 进入到cloudiac-docker-deploy代码目录下运行命令terraform init
terraform apply -auto-approve
以上就当命令运行结束后就会在阿里云ecs服务器上部署一套CloudIaC出来,我们按照以上命令行输出的公网ip 直接访问80端口即可访问。
5. 部署成功后登陆CloudIac页面,提示输出账号密码,这里我们为了方便初学者使用,在配置里面写入了固定值用户名: admin@example.com
密码: EvanTest#123
以上步骤均可在 使用 CloudIaC 使 terraform 的代码部署更容易 看到,这里我们就不介绍基础的入门步骤了,当环境创建好以后,我们来看一下CloudIaC 提供的配置漂移检测功能。


配置漂移概念

   

  在服务开发的过程中,我们经常可能会听到或者遇到如下的一种情况: "我在测试环境做了一个修改,但是忘记在生产服务器上也做这样的改动"。在排查bug,或者处理线上问题时经常会出现这样的场景如上,当机器配置环境发生改变,导致程序和预期结果不符,我们可以简称为配置漂移。在工作当中,这种情景应该非常常见,现在大多数的程序员在工作开发流程可能如下图:

如图上,目前很多程序采用的是容器化部署到服务器中,保证开发/测试环境的一致性,但是在实际开发过程中,对测试环境可能会进行一些列的修改和调试,最后导致服务器配置出现漂移。那么为了保持多台服务器的配置一致性,一般有以下几种方法,一种是不允许非系统管理员对服务器进行操作,二是"凤凰服务器",定期按照基础配置去重启机器或服务。

CloudIaC 提供了第三种方式 : 基础设施即代码(IAC) 通过把基础设置和服务通过低代码(terraform hcl)配置的方式去管控,定时检测服务端配置和配置文件(terraform tf.file)异同,对发生偏移的服务进行通知或直接进行纠偏。

实现原理

  CloudIaC 偏移检测功能本质使用的是terraform 工具的terraform plan 功能,通过用户配置的定时任务表达式,去定时执行 terraform plan 命令检测服务端和配置模版是否出现了偏差,当发现出现了配置漂移的情景时候,会根据用户的配置执行自动纠偏 terraform apply 重新订正偏移的环境配置,或者保持漂移信息,等待用户进行处理。

实现原理如下图:

如图上所示,每次根据定时配置去执行偏移检测任务时候,会把任务的信息保存到环境历史记录里面,我们可以通过历史记录查看部署的应用出现了多少次偏移,以及是否进行了自动纠偏。


案例实战


 下面我们实际操作来给大家演示一下如何在CloudIaC(version >= 0.8)中去配置使用漂移检测功能。首先我们需要创建一个可用的环境,这里我们通过云模版(也可以使用自己封装的terraform module)创建了一台阿里云的Ecs服务器。


如图所示,在创建的时候,我们在 环境 >> 高级设置 >> 合规 里面通过勾选 漂移检测,并且填入定时任务表达式,这时候,我们通过CloudIaC 部署的环境就会开始漂移检测任务。

此时我们先看一下我们环境部署成功后,我们环境的详情,可以在资源里面看到具体资源创建:

同时此刻我们登陆阿里云的控制台,可以看到创建出来的ecs云服务器详情,

此刻,我们将这台ecs 的描述信息直接在控制台上进行修改:



如上,我们手动使我们的环境进行了改动,这样原服务器模版里面的配置和我们实际配置的参数已经出现了偏差,那么这种情况就属于配置漂移因为我们在CloudIaC上配置了漂移检测发现服务,定时2分钟去巡检一下服务端和本次配置文件的差异,现在我们可以在CloudIaC上看到已经检测到了漂移信息:


这时候我们点进资源详情里面,看到资源图标变黄的,就是该资源发生了漂移配置,点击图标,我们可以在右侧弹出框里面看到详细的漂移详情:

instance_name              = "yunji_iac_upadte" -> "tf_ecs_test"

通过详情可以了解到是ecs 资源名称进行了改变。如此我们便可以监控资源是否发生漂移。还可以通过配置通知邮箱来将具体的漂移信息发送到配置的邮箱里面。

漂移自动恢复


以上介绍了CloudIaC如何去检测到配置漂移,以及查看方式。那么假如我们希望服务端和配置端永远保持一下,那么我们可以勾选 自动纠正漂移 ,该模式会在CloudIaC 服务发现其部署的环境出现漂移的情况下,对出现漂移的资源进行纠正,使服务端永远和本地配置保持一致。

该模式请慎重使用,因为该模式使用需要预先勾选自动审批按钮,请合理使用该功能,避免出现预期外的情况。

此时,我们在资源部署历史里面可以看到, 当我们扫描到漂移检测时候,因为勾选了自动纠正漂移模式,CloudIaC 自动去发起了一个apply 部署任务,将漂移信息进行了纠正,此时我们在看阿里云控制台:

实例ecs的名称已经被自动变更回来。如上我们本期的关于CloudIaC 漂移检测的功能已经简单介绍完成,我们的开源项目地址: https://github.com/idcos/cloudiac 欢迎大家一起参与共建。

联系我们:
钉钉群: 34576517                      

         

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
机器学习/深度学习 安全 算法
技术焦点篇|Cheetah猎豹及其在隐语中的实现
技术焦点篇|Cheetah猎豹及其在隐语中的实现
1734 1
|
Ubuntu Windows
Ubuntu截图快捷键
Ubuntu截图快捷键
4568 0
|
缓存 API 区块链
ccxt中文教程
CCXT官方教程中文版由汇智网翻译整理,访问地址:http://cw.hubwiz.com/card/c/ccxt-dev-manual/。 CCXT是一个JavaScript / Python / PHP 开发库,用于数字货币的交易与电子商务,支持众多的比特币/以太币/山寨币交易市场和商户API。
10463 2
|
6月前
|
弹性计算 Kubernetes 安全
已上线!云监控 2.0 面向实体的全链路日志审计与风险溯源
在云端,一次 API 调用背后可能隐藏着一场数据泄露;一个异常进程背后,或许是 AK 泄露引发的链式攻击。传统日志“看得见却看不懂”,而云监控 2.0 日志审计通过 UModel 实体建模,将分散在 ACS、K8s、主机各层的日志自动串联。
432 79
|
NoSQL MongoDB 数据库
MongoDB 删除集合
10月更文挑战第14天
527 1
|
存储 缓存 NoSQL
Redis八股文(大厂面试真题)
Redis八股文(大厂面试真题)
772 1
Redis八股文(大厂面试真题)
一键自动化博客发布工具,用过的人都说好(csdn篇)
使用一键自动化博客发布工具blog-auto-publishing-tools把博客发布到csdn上。
一键自动化博客发布工具,用过的人都说好(csdn篇)
|
SQL Java 关系型数据库
MyBatis-Plus 分页魅力绽放!紧跟技术热点,带你领略数据分页的高效与便捷
【8月更文挑战第29天】在 Java 开发中,数据处理至关重要,尤其在大量数据查询与展示时,分页功能尤为重要。MyBatis-Plus 作为一款强大的持久层框架,提供了便捷高效的分页解决方案。通过封装数据库分页查询语句,开发者能轻松实现分页功能。在实际应用中,只需创建 `Page` 对象并设置页码和每页条数,再通过 `QueryWrapper` 构建查询条件,调用 `selectPage` 方法即可完成分页查询。MyBatis-Plus 不仅生成分页 SQL 语句,还自动处理参数合法性检查,并支持条件查询和排序等功能,极大地提升了系统性能和稳定性。
661 0
|
JSON JavaScript UED
画出你的想法,体验Excalidraw的魅力,完全免费的绘图工具!
画出你的想法,体验Excalidraw的魅力,完全免费的绘图工具!
1686 1
|
弹性计算 运维 Ubuntu
CloudIaC正式开源!推动环境即服务在企业落地
对于运维来说,管理IT基础设施是一项艰巨的体力劳动,从最原始的用Excel记录维护配置信息,到开发CMDB系统来进行资源的配置管理,从传统上,运维的任务就是管理和配置所有的软件和硬件,这些配置信息对于保证基础架构中的应用程序平稳运行至关重要,但这始终是一个漫长的过程。
1873 1

热门文章

最新文章