更新时间:2024-07-24 GMT+08:00
分享

IaC概述

IaC简介

基础设施即代码(Infrastructure as Code,简称IaC)是一种以YAML作为输入,经由云原生环境管理服务、IaC执行引擎、Operator平台解析和执行,实现环境自动部署以及管理动态基础设施的方法。它强调一致,可重复的供给和变更系统及其配置。当代码发生变更后,可以进行自动化测试,测试完成后可自动化的应用变更到运行系统中。使用基础设施即代码的方法,可以使用敏捷工程的优秀实践(如测试驱动开发,持续集成,持续发布)来更加快速安全的变更基础设施。

IaC3.0支持的部署模式

IaC3.0支持如下两种场景的部署模式。

  • IaC Spec包

    同一个服务下所有微服务的IaC代码在一个仓中管理,打包生成IaC Spec的包,可以实现服务下所有的微服务在同一个服务环境下一键部署。

  • IaC Patch包

    微服务的IaC代码单独管理,通过IaC Spec包创建了服务环境之后,可以通过微服务级别的IaC Patch包进行微服务的独立部署。

IaC代码结构介绍

IaC代码支持单文件描述结构、多文件描述结构以及带global的多文件描述结构,具体介绍请参见IaC代码结构介绍

  • 单文件描述结构:在IaC主体描述文件meta.yaml中进行变更流程编排同时定义所有资源。
  • 多文件描述结构:通过引入resources.yaml和文件引用语法,将单文件结构改造为多文件描述目录结构,避免诸多资源的描述都集中于meta.yaml,而造成文件内容过长难以管理。
  • 带global的多文件描述结构:为解决不同规格目录间配置复用问题,IaC3.0支持带global的多文件描述结构。

带global的多文件描述结构为IaC3.0的典型目录结构,IaC Spec目录结构请参见IaC Spec包典型目录结构

IaC代码开发介绍

在一次完整的业务变更中,往往会涵盖多种类型、多个模块的变更,如集群扩容、申请ELB、创建数据库、软件升级等等。在IaC的语境下,每一个变更本质上都是IaC资源的变更。在一次完整的业务变更中,部分资源的变更依赖于其他资源的变更,如为一个微服务创建NUWA实例之前往往需要先创建该微服务的数据库。

通过IaC代码对各资源在具体变更过程中的依赖关系、先后顺序进行代码化描述。本质上就是描述各模块、各资源之间的依赖关系。在变更过程中,IaC将根据由依赖关系生成的有向无环图顺序执行各资源的变更过程。

IaC代码开发主要围绕声明资源和变更流程编排两个方面展开。

  • 在IaC代码中声明资源
    • 定义component:定义component是IaC将一个环境的资源组织起来的方式,将同一类资源组织起来成为一个component。
    • 定义资源:一个component下可以定义多个资源,所有的资源描述都存放于resources.yaml中。
  • 在IaC代码中定义流水线

    component间的编排在spec包中的meta.yaml文件中描述,用户可以根据自己的需求定义整个环境在变更时的执行过程。

相关文档