3. 基础设施即代码(IaC)概述

基础设施即代码(Infrastructure as Code, IaC)是云原生时代运维与交付的核心实践。它将传统手工配置服务器、网络、存储等基础设施的操作,转变为通过代码定义、版本管理和自动化执行的过程。在《服务画像建模驱动基础设施即代码SLI口径映射方法》课程中,IaC 是连接服务画像与 SLI 口径的桥梁——只有通过 IaC 精确描述基础设施状态,才能确保 SLI 采集口径与实际运行环境一致。

3.1 IaC 的核心原则

IaC 的实践建立在三个核心原则之上,这些原则直接决定了 SLI 口径映射的可靠性与可重复性。

原则 定义 对 SLI 口径映射的意义
声明式(Declarative) 用户描述期望的最终状态,工具自动计算并执行达到该状态所需的操作。 SLI 口径对应的基础设施状态(如实例规格、网络拓扑)由代码明确声明,避免因执行顺序差异导致口径漂移。
幂等性(Idempotent) 无论执行一次还是多次,最终状态始终与代码定义一致。 SLI 采集依赖的基础设施配置不会因重复部署或故障恢复而改变,确保口径长期稳定。
版本控制(Version Control) 所有基础设施代码纳入 Git 等版本控制系统,记录每一次变更。 SLI 口径的变更历史可追溯,支持回滚到已知正确的口径版本,便于审计与复盘。
关键提示: 声明式是 IaC 区别于脚本式运维的核心。在 SLI 口径映射场景中,声明式 IaC 保证“基础设施状态 = 代码定义 = SLI 采集基准”,三者严格一致。

3.2 主流 IaC 工具对比

当前业界主流的 IaC 工具包括 Terraform、Pulumi 和 Ansible。它们在设计哲学、语言支持和适用场景上存在显著差异,选择合适的工具直接影响 SLI 口径映射的工程效率。

维度 Terraform Pulumi Ansible
设计范式 声明式 + 状态文件(.tfstate) 声明式 + 通用编程语言 声明式(Playbook)+ 过程式(Task)
配置语言 HCL(HashiCorp Configuration Language) TypeScript、Python、Go、C#、Java 等 YAML(Playbook)+ Jinja2 模板
状态管理 远程状态后端(S3、Consul、Terraform Cloud) 自动化状态管理(Pulumi Cloud / 自托管) 无中心状态(每次从目标节点收集事实)
执行模型 客户端执行(CLI / 自动化流水线) 客户端执行(CLI / SDK / 自动化流水线) 推模式(Push)或拉模式(Pull)
资源覆盖 多云 + 云原生(Provider 生态) 多云 + 云原生(Provider 生态) 配置管理为主 + 部分云资源编排
适用场景 基础设施全生命周期管理(网络、计算、存储) 需要编程语言表达复杂逻辑的基础设施 配置管理、应用部署、合规检查
选型建议: 如果 SLI 口径映射需要频繁处理条件逻辑、循环或外部 API 调用,Pulumi 的通用编程语言优势明显;如果团队以运维为主且基础设施状态一致性要求极高,Terraform 的成熟状态管理机制更可靠;如果 SLI 口径涉及大量操作系统级配置(如内核参数、日志采集 Agent),Ansible 的配置管理能力不可或缺。

3.3 IaC 在云原生时代的演进

云原生架构的普及推动了 IaC 从“资源编排”向“应用与基础设施统一管理”演进。下图展示了 IaC 在云原生时代的关键能力层次。

云原生时代 IaC 能力演进层次 L1:基础设施资源编排 计算实例 · 网络 · 存储 · 负载均衡 · 数据库 L2:容器与编排层 Kubernetes 集群 · 容器镜像 · Helm Chart · 服务网格 L3:应用与配置管理 应用部署 · 配置注入 · 密钥管理 · 服务发现 L4:可观测性与策略即代码 SLI/SLO 口径 · 告警规则 · 策略引擎 · 合规检查 演进方向:从资源到应用,从部署到可观测

上图展示了 IaC 在云原生时代的四个关键演进层次。其中 L4(可观测性与策略即代码)与本课程直接相关——SLI 口径映射正是将服务画像中的可观测性需求,通过 IaC 代码化地定义到基础设施中。

3.4 IaC 与 SLI 口径映射的关联

在《服务画像建模驱动基础设施即代码SLI口径映射方法》课程中,IaC 承担以下关键角色:

  • 口径载体: SLI 采集所需的基础设施资源(如 Prometheus 实例、日志采集器、网络探针)全部通过 IaC 代码定义,确保口径可重复、可审计。
  • 状态锚点: IaC 的幂等性保证每次部署后基础设施状态一致,SLI 口径不会因环境差异而失效。
  • 变更追溯: 版本控制下的 IaC 代码记录了每一次口径调整,支持快速回滚到已知正确的口径版本。
常见误区: 不要将 IaC 仅视为“自动化部署工具”。在 SLI 口径映射场景中,IaC 的核心价值是建立“服务画像 → 基础设施状态 → SLI 采集口径”之间的确定性映射关系。缺少 IaC 的口径管理,本质上仍是手工运维,无法满足云原生环境下的可观测性一致性要求。