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                      

         

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
传感器 数据处理
正确的校准振弦采集模块确保获得准确数据的关键
振弦采集模块是一种常用于测量机械振动的设备,它通常由振弦传感器、采样电路和数据处理单元组成。在使用振弦采集模块的过程中,正确的校准是确保获得准确数据的关键。
正确的校准振弦采集模块确保获得准确数据的关键
|
机器学习/深度学习 监控
数据漂移、概念漂移以及如何监控它们(mona)
在机器学习模型监控的上下文中经常提到数据和概念漂移,但它们到底是什么以及如何检测到它们?此外,考虑到围绕它们的常见误解,是不惜一切代价避免数据和概念漂移的事情,还是在生产中训练模型的自然和可接受的后果?请仔细阅读,找出答案。在本文中,我们将提供模型漂移的细粒度细分,以及检测它们的方法以及处理它们时的最佳实践。
|
6月前
|
机器学习/深度学习 存储 编解码
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计(2)
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计
|
6月前
|
机器学习/深度学习 算法 计算机视觉
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计(3)
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计
|
6月前
|
机器学习/深度学习 监控 算法
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计(1)
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计
|
传感器 机器学习/深度学习 数据采集
电潜泵的预测性维护——检测电潜泵的故障
电潜泵的预测性维护——检测电潜泵的故障
176 0
|
7月前
|
机器学习/深度学习 传感器 算法
目标检测+车道线识别+追踪+测距(代码+部署运行)
目标检测+车道线识别+追踪+测距(代码+部署运行)
|
7月前
|
编解码 监控 计算机视觉
YOLOv8改进 | 检测头篇 | 利用DynamicHead增加辅助检测头针对性检测(四头版本)
YOLOv8改进 | 检测头篇 | 利用DynamicHead增加辅助检测头针对性检测(四头版本)
1072 0
|
7月前
|
传感器 自动驾驶 算法
Apollo感知模块 :传感器| 目标监测| 障碍物识别 | 模型管理
Apollo感知模块 :传感器| 目标监测| 障碍物识别 | 模型管理
100 0
地质灾害监测方法
地质灾害的监测方法可用简易监测和仪器监测。 简易监测方法:变形位移监测法、裂缝相对位移监测法、目视检查监测法等。
地质灾害监测方法