HashiCorp Terraform 是一种基础设施即代码 (IaC) 工具,可让您预配和管理云基础设施。Terraform 提供了称为提供程序的插件,可让您与云服务提供商和其他 API 进行交互。您可以使用适用于 Google Cloud 的 Terraform 提供程序来预配和管理 Google Cloud 资源,包括 GKE。
Terraform 的工作原理
Terraform 具有面向配置的声明性语法,您可以使用它来描述要在 Google Cloud 项目中预配的基础设施。在一个或多个 Terraform 配置文件中编写此配置后,您可以使用 Terraform CLI 将此配置应用于您的 GKE 资源。
以下步骤介绍了 Terraform 的工作原理:
- 在 Terraform 配置文件中描述您要预配的基础设施。您无需编写代码来描述如何预配基础设施。Terraform 会为您预配基础设施。
- 运行
terraform plan
命令,以评估配置并生成执行计划。您可以查看计划并根据需要进行更改。 -
运行
terraform apply
命令以执行以下操作:- 在后台调用相应的 GKE API,以根据您的执行计划预配基础设施。
- 创建一个 Terraform 状态文件,该状态文件是一个 JSON 文件,用于将配置文件中的资源映射到实际基础设施中的资源。Terraform 使用此文件来记录基础设施的最新状态,并确定何时创建、更新和销毁资源。
-
当您运行
terraform apply
时,Terraform 会使用状态文件中的映射将现有基础设施与代码进行比较,并根据需要进行更新:- 如果配置文件中定义了资源对象,但状态文件中不存在,则 Terraform 会创建该资源对象。
- 如果状态文件中存在资源对象,但其配置与配置文件不同,则 Terraform 会更新该资源以与配置文件匹配。
- 如果状态文件中的资源对象与配置文件匹配,则 Terraform 会使该资源保持不变。
适用于 GKE 的基于 Terraform 的指南
下表列出了适用于 GKE 的所有基于 Terraform 的操作指南和教程:
指南 | 详细信息 |
---|---|
创建 GKE 集群并使用 Terraform 部署工作负载 | 介绍如何创建 Google Kubernetes Engine (GKE) Autopilot 集群并使用 Terraform 部署工作负载。 |
在 GKE Autopilot 集群上预配 Cloud Service Mesh | 介绍如何在 GKE Autopilot 集群上设置托管式 Cloud Service Mesh。 |
创建和管理集群和节点池标签 | 介绍如何创建带有标签的集群。 |
使用标签管理 GKE 资源 | 介绍如何使用标签来管理 GKE 集群。 |
创建 Autopilot 集群 | 介绍如何在 Autopilot 中创建 GKE 集群。 |
在 GKE Standard 节点池中运行 GPU | 介绍了如何通过在 GKE Standard 集群的节点中挂接和使用 NVIDIA® 图形处理单元 (GPU) 硬件加速器来运行和优化计算密集型工作负载(例如人工智能 [AI] 和图形处理)。 |
使用辅助启动磁盘预加载数据或容器映像 | 介绍如何通过使用辅助启动磁盘来缩短工作负载启动延迟时间。 |
创建 VPC 原生集群 | 介绍了如何在 GKE 中配置 VPC 原生集群。 |
在 GKE Standard 中部署 TPU 工作负载 | 介绍了如何在 GKE Standard 集群中使用 Cloud TPU 加速器 (TPU) 请求和部署大规模人工智能 (AI) 和机器学习 (ML) 模型训练、调优和推理工作负载。 |
创建内部负载均衡器 | 介绍如何在 GKE 上创建内部直通式网络负载均衡器或内部负载均衡器。 |
添加和管理节点池 | 介绍如何添加运行 GKE Standard 集群的节点池以及对这类节点池执行操作。 |
创建具有 Arm 节点的集群和节点池 | 介绍如何创建具有 Arm 节点的 GKE Standard 集群或节点池,以便在 GKE 上运行 Arm 工作负载。 |
使用预留可用区级资源 | 介绍如何在 GKE 中使用预留的 Compute Engine 资源。 |
在 GKE 上部署高可用性 PostgreSQL 数据库 | 介绍如何在 GKE 上部署高可用性 PostgreSQL 拓扑。PostgreSQL 是一种开源对象关系型数据库,具有可靠性和数据完整性。 |
指定节点映像 | 介绍如何为 GKE Standard 集群中的节点指定节点映像。 |
使用 Windows Server 节点池创建集群 | 介绍如何创建具有节点池的 GKE 集群(它们运行 Microsoft Windows Server)。 |
运行多实例 GPU | 介绍了如何通过运行多实例 GPU 来提高利用率并降低费用。 |
对集群升级的发布进行排序 | 介绍如何使用发布序列来管理 GKE 集群升级。 |
创建可用区级集群 | 介绍了如何在 GKE 中创建启用默认功能的标准可用区级集群。 |
为基本生产集群配置网络 | 介绍如何将 Web 应用部署到 GKE 集群,并使用 HTTPS 负载均衡器将其公开。 |
收集和查看控制平面指标 | 介绍了如何配置 GKE 集群,以使用 Google Cloud Managed Service for Prometheus 将 Kubernetes API 服务器、调度器和控制器管理器发出的指标发送到 Cloud Monitoring。 |
收集并查看 cAdvisor/Kubelet 指标 | 介绍了如何配置 Google Kubernetes Engine (GKE) 集群,以使用 Google Cloud Managed Service for Prometheus 将一组精选的 cAdvisor/Kubelet 指标发送到 Cloud Monitoring。 |
调整日志吞吐量 | 介绍了默认日志记录吞吐量以及如何提高吞吐量。 |
为集群启用 Backup for GKE | 介绍如何为集群启用 Backup for GKE。 |
在恢复期间修改资源 | 介绍了如何在恢复过程中使用转换规则修改 Kubernetes 资源。 |
对备份方案启用宽容模式 | 介绍如何对备份方案启用宽容模式。 |
启用 Backup for GKE API | 介绍了如何启用 Backup for GKE。 |
规划一组备份 | 介绍了如何创建 Backup for GKE 备份方案,该方案用于备份 GKE 中的工作负载。 |
适用于 GKE 的 Terraform 模块和蓝图
模块和蓝图可帮助您自动化大规模预配和管理 Google Cloud 资源。模块是一组可重复使用的 Terraform 配置文件,用于创建 Terraform 资源的逻辑抽象。蓝图是一个可部署且可重复使用的模块和政策的软件包,用于实现和记录特定解决方案。
下表列出了与 GKE 相关的所有模块和蓝图:
模块或蓝图 | 详细信息 |
---|---|
terraform-google-container-vm | 配置专业的 GKE 集群。 |
terraform-google-gke-gitlab | 在 GKE 上安装 GitLab。 |
适用于 GKE 的 Terraform 资源
资源是 Terraform 语言中的基本元素。每个资源块描述一个或多个基础设施对象,例如虚拟网络或计算实例。
下表列出了适用于 GKE 的 Terraform 资源:
后续步骤
- 适用于 GKE 的 Terraform 代码示例
- Google Cloud 上的 Terraform 文档
- HashiCorp 中的 Google Cloud 提供商文档
- 适用于 Google Cloud 的基础架构即代码