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
目录
相关文章
|
存储 缓存 内存技术
USB容量大小对传输速度影响有多大
USB容量大小对传输速度影响有多大
USB容量大小对传输速度影响有多大
|
2月前
|
人工智能 IDE API
阿里云百炼 Coding Plan AI 编码订阅计划体验如何?值得买吗?
阿里云百炼Coding Plan是国内性价比最高、模型生态最丰富的AI编程订阅服务之一:支持Qwen3.5/Max/Coder、Kimi、GLM等多模型自由切换,Lite版首月仅7.9元,Pro版39.9元,额度包干、响应极速、中文优化强,无缝接入VS Code/Cursor等主流工具,是开发者首选AI编程方案。(239字)
阿里云百炼 Coding Plan  AI 编码订阅计划体验如何?值得买吗?
|
5月前
|
弹性计算 Kubernetes 安全
已上线!云监控 2.0 面向实体的全链路日志审计与风险溯源
在云端,一次 API 调用背后可能隐藏着一场数据泄露;一个异常进程背后,或许是 AK 泄露引发的链式攻击。传统日志“看得见却看不懂”,而云监控 2.0 日志审计通过 UModel 实体建模,将分散在 ACS、K8s、主机各层的日志自动串联。
393 78
|
运维 Cloud Native 测试技术
极氪汽车云原生架构落地实践
随着极氪数字业务的飞速发展,背后的 IT 技术也在不断更新迭代。极氪极为重视客户对服务的体验,并将系统稳定性、业务功能的迭代效率、问题的快速定位和解决视为构建核心竞争力的基石。
|
消息中间件 监控 数据可视化
ROS Terraform 托管服务与原生 Terraform 对比:选择最适合你的 IaC 工具
本文详细介绍了阿里云资源编排服务(ROS)提供的Terraform托管服务,对比了ROS与Terraform的原生能力,帮助用户根据需求选择合适的IaC工具。
1103 54
|
存储 缓存 NoSQL
Redis八股文(大厂面试真题)
Redis八股文(大厂面试真题)
715 1
Redis八股文(大厂面试真题)
一键自动化博客发布工具,用过的人都说好(csdn篇)
使用一键自动化博客发布工具blog-auto-publishing-tools把博客发布到csdn上。
一键自动化博客发布工具,用过的人都说好(csdn篇)
|
Web App开发 测试技术 数据中心
Terraform Module 编写指南
Module 是一个Terraform 模板,是对多个子节点,子资源,子架构模板的组合和抽象。利用Module 在降低模板编写和维护复杂度的同时,使得模板结构更加简洁清楚。为什么要使用 Module,详见文章[ Module 让 Terraform 使用更简单](https://www.atatech.org/articles/119465)。
8438 0
|
存储 弹性计算 API
使用 CloudIaC 使 terraform 的代码部署更容易
CloudIaC 是一个开源基础架构自动化平台,它可以将Terraform及其他框架下的 deployment 集中到一个协作区,以方便你的整个团队使用。同时CloudIaC支持动态环境,策略合规检测,用户自助式UI 界面等功能。当您考虑使用Terraform 等低代码开发工具去实现多云资源的管控的时候,那么CloudIaC 不失为一个最佳解决方案。
1822 1
使用 CloudIaC 使 terraform 的代码部署更容易
|
数据采集 运维 监控
服务水平协议(SLA)监控究竟是个啥??
服务水平协议(SLA)监控究竟是个啥??
3239 1