构建可重复的系统 - SRE 的 IaC 与 CI/CD 基础
构建可重复的系统 - SRE 的 IaC 与 CI/CD 基础
还记得我们在第一篇提到的 SRE 核心原则之一——减少琐事 (Toil) 吗?想象一下手动配置服务器、部署应用程序、管理网络规则……这些任务不仅耗时、重复,而且极易出错。当系统规模扩大时,手动操作很快就会变得难以为继。SRE 的核心理念就是用工程化的方法来解决这些运维难题,而 IaC 和 CI/CD 正是其中的两大“法宝”。
基础设施即代码 (Infrastructure as Code, IaC)
-
它是什么?
简单来说,IaC 就是用代码(通常是声明式的配置文件)来定义、管理和配置你的基础设施资源(例如虚拟机、存储、网络、负载均衡器、数据库、甚至 Kubernetes 集群本身),而不是通过手动操作界面或执行临时脚本。这些代码文件可以像应用程序代码一样被管理。 -
为什么 SRE 要拥抱 IaC?
- 可重复性与一致性 (Repeatability & Consistency):代码化的定义确保了每次创建或修改基础设施时,结果都是一致的。这大大减少了“我的机器上能跑,到线上就不行”这类环境不一致导致的问题。开发、测试、预发、生产环境可以保持高度一致。
- 版本控制 (Version Control):基础设施定义代码可以(也应该)存储在 Git 等版本控制系统中。这意味着所有的变更都有记录、可追溯、可审计。如果某个变更导致了问题