使用 Terraform 预配 GKE 资源

HashiCorp Terraform 是一种基础设施即代码 (IaC) 工具,可让您预配和管理云基础设施。Terraform 提供了称为提供程序的插件,可让您与云服务提供商和其他 API 进行交互。您可以使用适用于 Google Cloud 的 Terraform 提供程序来预配和管理 Google Cloud 资源,包括 GKE。

Terraform 的工作原理

Terraform 具有面向配置的声明性语法,您可以使用它来描述要在 Google Cloud 项目中预配的基础设施。在一个或多个 Terraform 配置文件中编写此配置后,您可以使用 Terraform CLI 将此配置应用于您的 GKE 资源。

以下步骤介绍了 Terraform 的工作原理:

  1. Terraform 配置文件中描述您要预配的基础设施。您无需编写代码来描述如何预配基础设施。Terraform 会为您预配基础设施。
  2. 运行 terraform plan 命令,以评估配置并生成执行计划。您可以查看计划并根据需要进行更改。
  3. 运行 terraform apply 命令以执行以下操作:

    1. 在后台调用相应的 GKE API,以根据您的执行计划预配基础设施。
    2. 创建一个 Terraform 状态文件,该状态文件是一个 JSON 文件,用于将配置文件中的资源映射到实际基础设施中的资源。Terraform 使用此文件来记录基础设施的最新状态,并确定何时创建、更新和销毁资源。
    3. 当您运行 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 Kubernetes Engine (GKE) Standard 版本 google_container_cluster
google_container_node_pool
Google Kubernetes Engine (GKE) Enterprise 版本 google_gke_hub_feature
google_gke_hub_feature_iam
google_gke_hub_feature_membership
google_gke_hub_fleet
google_gke_hub_membership
google_gke_hub_membership_binding
google_gke_hub_membership_iam
google_gke_hub_membership_rbac_role_binding
google_gke_hub_namespace
google_gke_hub_namespace
google_gke_hub_scope
google_gke_hub_scope_iam
google_gke_hub_scope_rbac_role_binding
Backup for GKE google_gke_backup_backup_plan
google_gke_backup_backup_plan_iam
google_gke_backup_restore_plan
google_gke_backup_restore_plan_iam

后续步骤