当一个公司使用了多家云供应商的云平台后... 点点点!
随着云计算的发展,越来越多的企业都开始了迁移上云。从传统的物理服务器或机房迁移到云端虚机或云数据中心。将通过云供应商提供的控制台管理计算、网络、存储等资源。
▲ 2021年第四季度公有云营收数据
基础设施即代码
为啥要用代码的方式来管理基础设施呢? 可以想象几个经典的场景:
- 环境出现故障,不知道谁做了变更;
- 准备多套环境所消耗时间太漫长(手动控制台点点点);
- 存在多套环境时,无法保证环境的一致性(硬件资源和上层应用);
IaC基础设施即代码,是将IT基础架构以编码的方式进行管理。因此,开发人员和运营团队可以通过以软件代码的方式自动管理、监控和配置IT 资源,而不是通过手动重复的配置一台又一台设备。
根据 Gartner的一份报告,"到2023年,60% 的组织将使用基础设施自动化工具作为其DevOps工具链的一部分,从而将应用程序部署效率提高25%。"
IaC可以通过多次执行代码来无限复制相同的部署,从而使团队受益。节省的工作量和时间取决于需要复制基础设施的次数。IaC的另一个优势是减少人为错误。
GitOps
GitOps是一个实践框架,它使用开源版本控制系统Git来管理基础设施和应用程序配置。因此,Git 成为动态创建、更新和删除系统架构的单一事实来源和控制机制。因为GitOps支持自动化,它推进了基础设施即代码的原则。
GitOps 使用拉取请求来验证和修改系统基础架构并自动部署。随着越来越多的组织转向持续集成和持续交付(CI/CD),有更多机会实施 GitOps。这种方法使团队能够将自动化应用于他们的测试、交付、部署和治理。GitOps 还简化了基础设施任务和工作流程。
DevOps&GitOps?
`DevOps` 和 `GitOps` 都是简化开发和部署过程的实践。然而,与`DevOps`相比,`GitOps`拥有的主要特征是,虽然`DevOps` 旨在适应各种文化,但 `GitOps`专注于在Git上运行的操作。`DevOps`为公司带来了根本性的文化变革,而 `GitOps` 为基础设施管理带来了所需的工具和实践。这些工具促进协作,实现更好的开发和部署,并支持 `CI/CD` 管道。
要实现IaC和GitOps其实也有很多工具可以选择:使用Terraform可以对多云、混合云场景下的资源以编码的方式进行管理。 Terraform Ansible组合前者负责基础设施的变更后者实现系统之上应用的配置部署。