HashiCorp Terraform 是一种基础设施即代码 (IaC) 工具,可让您预配和管理云基础设施。Terraform 提供了称为提供程序的插件,可让您与云服务提供商和其他 API 进行交互。对于 Google Distributed Cloud (GDC) 空气隔离环境,您必须使用 Kubernetes 提供程序来预配资源,因为没有适用于 Terraform 的特定 GDC 空气隔离环境提供程序。
GDC 资源可由 Kubernetes 提供程序管理,并实现 Kubernetes 资源的完整生命周期管理。
操作 | Terraform 提供程序 |
---|---|
创建 | Kubernetes 提供商 |
读取 | |
更新 | |
删除 | 不适用,请使用 terraform destroy |
Terraform 的工作原理
Terraform 具有面向配置的声明性语法,您可以使用它来描述要在 GDC 项目中预配的基础架构。在一个或多个 Terraform 配置文件中编写此配置后,您可以使用 Terraform CLI 将此配置应用于您的 GDC 资源。
以下步骤介绍了 Terraform 的工作原理:
在 Terraform 配置文件中描述您要预配的基础设施。您无需编写代码来描述如何预配基础设施。Terraform 会为您预配基础设施。
运行
terraform plan
命令,以评估配置并生成执行计划。您可以查看计划并根据需要进行更改。运行
terraform apply
命令以执行以下操作:在后台调用相应的 GDC 空气隔离 API,以根据您的执行计划预配基础设施。
创建一个 Terraform 状态文件,该状态文件是一个 JSON 文件,用于将配置文件中的资源映射到实际基础设施中的资源。Terraform 使用此文件来记录基础设施的最新状态,并确定何时创建、更新和销毁资源。
当您运行
terraform apply
时,Terraform 会使用状态文件中的映射将现有基础设施与代码进行比较,并根据需要进行更新:如果配置文件中定义了资源对象,但状态文件中不存在,则 Terraform 会创建该资源对象。
如果状态文件中存在资源对象,但其配置与配置文件不同,则 Terraform 会更新该资源以与配置文件匹配。
如果状态文件中的资源对象与配置文件匹配,则 Terraform 会使该资源保持不变。
适用于 GDC 网闸隔离配置的 Terraform 资源
资源是 Terraform 语言中的基本元素。每个资源块描述一个或多个基础设施对象。
GDC air-gapped 基于 Kubernetes 构建。除了 Node
、PersistentVolume
和 Service
等核心 Kubernetes API 之外,它还支持 CustomResourceDefinition
API。通过使用自定义资源定义,可以构建特定于 GDC 的 API 来表示 GDC 气隙基础设施。
下表列出了适用于 GDC 气隙环境的 Terraform 资源:
Terraform 资源 | 数据源 |
---|---|
kubernetes_manifest
|