基础设施即代码 (IaC) 是指使用代码(而不是图形界面或命令行脚本)预配和管理软件应用基础设施的过程。
预配应用基础设施通常涉及设置和管理虚拟机、数据库连接、存储以及其他基础设施元素。手动管理此基础设施非常耗时且容易出错,尤其是在大规模管理应用时。
IaC 可让您使用配置文件定义基础设施,从而以安全且可重复的方式构建、更改和管理基础设施。您可以定义可进行版本控制、重复使用和共享的资源配置。IaC 可让您指定所需的基础设施状态。然后,您可以多次部署相同的配置,以创建可重现的开发、测试和生产环境。
借助 IaC,您可以按照与处理应用代码相同的方式处理基础设施预配和配置。您可以将预配配置逻辑存储在源代码控制中,并可以利用持续集成和持续部署 (CI/CD) 流水线。
IaC 的优势
对于许多常见应用场景,使用 IaC 设置和管理应用基础设施是最佳实践。Google 使用 IaC 管理其系统,并在内部将其确立为标准实践。
IaC 具有以下优势:
- 您可以根据自己的需求定义基础设施,并重复使用同一配置以一致地创建多个环境。
- 您可以自动创建和管理云资源,包括用于部署和测试环境的云资源。
- 您可以像处理应用更改一样处理基础设施更改。例如,您可以确保对配置所做的更改会经过审核和自动验证。最佳实践是使用 IaC 通过更改控制的流程来管理生产环境。
- 您可以保留所有配置更改的历史记录。您可以审核和还原更改。
- 您可以为您的云基础设施提供单一可靠来源。
适用于 Google Cloud 的 IaC 工具
Google Cloud 与许多 IaC 工具紧密集成。根据您的应用场景选择以下工具之一:
Terraform
通常,如需使用代码配置和管理 Google Cloud 基础设施,请使用适用于 Google Cloud 的 Terraform 提供程序。
HashiCorp Terraform 是一种 IaC 工具,可让您通过直观易懂的配置文件定义云端和本地的资源,并且可以对这些资源进行版本控制、重复使用和共享。然后,您可以使用一致的工作流在整个生命周期内预配和管理所有基础设施。如需了解详情,请参阅 Terraform on Google Cloud 概览。
Infrastructure Manager
如果您希望自动部署 Terraform 配置,请使用 Infrastructure Manager (Infra Manager)。
Infra Manager 使用 Terraform 自动部署和管理 Google Cloud 基础设施资源。Infra Manager 可让您以程序化方式部署到 Google Cloud,以便使用此服务,而无需维护其他工具链来使用 Terraform on Google Cloud。如需了解详情,请参阅 Infra Manager 概览。
Terraform Cloud 和 Terraform Enterprise
如果您需要在整个组织中使用 Terraform 进行全面的更改管理,请使用 Terraform Cloud 或 Terraform Enterprise。
Terraform Cloud 是一款软件即服务 (SaaS) 应用,可在稳定的远程环境中运行 Terraform 并安全存储状态和密文。Terraform Cloud 还可与 Terraform CLI 集成,并连接到 GitHub、GitLab 和 Bitbucket 等常见的版本控制系统 (VCS)。将 Terraform Cloud 工作区连接到 VCS 仓库时,新的提交和更改可以自动触发 Terraform 方案。Terraform Cloud 还提供了一个 API,您可以将其集成到现有工作流中。
借助 Terraform Enterprise,您可以设置 Terraform Cloud 的自托管分发版。Terraform Enterprise 提供了可自定义的资源限制,非常适合具有严格的安全性和合规性要求的组织。
如需了解详情,请参阅 Hashicorp 文档中的 Terraform 版本页面。
适用于 Terraform 的 Cloud 开发套件
如果您想使用通用编程语言而不是 Hashicorp 配置语言 (HCL) 生成基础设施,请使用适用于 Terraform 的 Cloud 开发套件 (CDKTF)。
借助 CDKTF,您可以使用编程语言配置 Terraform 来定义和预配 Google Cloud 基础架构,并且可以将现有工具链用于测试和依赖项管理等流程。
Pulumi
Pulumi 是另一种可用于使用编程语言预配基础设施的工具。您可以使用适用于 Pulumi 的 Google Cloud 提供程序,采用 TypeScript、Python、Go、C#、Java 或 YAML 等编程语言编写基础设施代码。
Config Controller 和 Config Connector
如需通过 Kubernetes 管理 Google Cloud 资源,请使用 Config Controller 和 Config Connector。
借助 Config Controller 和 Config Connector,您可以使用 Kubernetes 工具配置 Google Cloud 服务和资源。您可以使用 Config Sync 等 GitOps 工具和 Kubernetes API,还可以配置和使用平台工程原语(例如准入 webhook 和运算符)。
如需了解详情,请参阅 Config Controller 概览和 Config Connector 概览。
Crossplane
通过 Kubernetes 管理 Google Cloud 资源的另一种方法是使用 Crossplane。
Crossplane 会将您的 Kubernetes 集群连接到外部非 Kubernetes 资源,并可让平台团队构建自定义 Kubernetes API 以使用这些资源。Crossplane 充当 Kubernetes 控制器,用于监视外部资源的状态并提供状态强制执行功能。在 Kubernetes 集群中安装 Crossplane 后,用户只会与 Kubernetes 通信。Crossplane 会管理与 Google Cloud 等外部资源的通信。如果某些操作修改或删除了 Kubernetes 外部的资源,Crossplane 会撤消更改或重新创建已删除的资源。
如需了解详情,请参阅 Crossplane 文档。
Ansible
如果您想要自动执行预配、配置管理、应用部署、编排和其他 IT 流程,请使用 Ansible。如需了解详情,请参阅 适用于 Google Cloud 的 Ansible。
后续步骤
- 详细了解 Terraform
- 了解如何使用 Terraform 在 Compute Engine 上创建基本 Web 服务器
- 了解如何将 Terraform 状态存储在 Cloud Storage 存储桶中