SuperAPI AI 工具集

terraform-gcp

部署与运维

查看项目

更新于 10-15 11:53

技能介绍

用途

terraform-gcp 用于通过 Terraform 和 hashicorp/google 提供程序来配置和管理 Google Cloud Platform(GCP)基础设施。它适合以下场景:

  • 以代码方式定义 GCP 基础设施,实现可重复、可审计的部署。
  • 从单一代码库管理多环境(开发、预发布、生产)配置。
  • 在一个计划中配置复杂资源图(VPC + GKE + Cloud SQL + IAM)。
  • 将基础设施变更集成到 CI/CD 流水线,包含 plan/apply 阶段。

主要能力

该技能涵盖以下模块和配置:

  • 提供程序配置:定义 Terraform 版本要求、google 和 google-beta 提供程序、GCS 后端、变量(项目 ID、区域、环境)及验证。
  • 项目设置与状态存储桶:创建 GCS 存储桶用于状态存储,启用版本控制,并通过 google_project_service 资源启用所需 API。
  • 网络模块:创建 VPC、子网(含 GKE 子网及次要 IP 范围)、防火墙规则(允许 IAP)、云路由器和 NAT。
  • GKE 集群模块:创建 GKE 集群(含发布通道、工作负载身份、私有集群配置、网络策略、日志和监控)及节点池(含自动扩缩、自动修复、自动升级、屏蔽实例配置)。
  • Cloud SQL 模块:创建 Cloud SQL 实例(含备份配置、时间点恢复、私有 IP、SSL 要求、数据库标志)、数据库、用户及随机密码。
  • IAM 与服务账号:创建服务账号、项目 IAM 成员绑定、工作负载身份绑定。
  • 根模块组合:组合网络、GKE、数据库模块,并处理依赖关系。
  • 环境配置:使用 tfvars 文件区分环境,通过 -var-file 指定。
  • CI/CD 集成:提供 init、validate、fmt、plan、apply 命令示例,以及导入现有资源和状态管理命令。
  • 故障排除:列出常见症状、原因和修复方法。

使用方式

  1. 前置条件:安装 Terraform >= 1.5,安装 Google Cloud SDK 或准备服务账号密钥,拥有已启用计费的 GCP 项目。
  2. 认证:本地开发运行 gcloud auth application-default login;CI/CD 设置 export GOOGLE_APPLICATION_CREDENTIALS="sa.json"。
  3. 初始化:运行 terraform init。
  4. 计划:运行 terraform plan -var="project_id=my-project" -var="environment=production" -out=tfplan。
  5. 应用:运行 terraform apply tfplan。
  6. 环境配置:使用 -var-file=environments/production.tfvars 指定环境变量文件。
  7. CI/CD:按示例命令执行 init、validate、fmt、plan、apply。
  8. 导入资源:使用 terraform import 导入已存在资源。
  9. 状态管理:使用 terraform state list、terraform state mv 等命令。

适用场景

  • 需要以代码方式管理 GCP 基础设施的团队。
  • 需要多环境一致部署的 DevOps 流程。
  • 需要将基础设施变更纳入 CI/CD 的项目。
  • 需要配置 VPC、GKE、Cloud SQL、IAM 等组合资源的场景。

限制

  • 需要 Terraform >= 1.5。
  • 需要 GCP 项目并启用计费。
  • 需要适当的认证凭据。
  • 具体资源配额受 GCP 项目限制。
  • 状态锁可能导致并发运行问题,需手动解锁。
  • 资源在 Terraform 外部创建时需导入。
  • 更改强制新建属性可能导致资源销毁重建。
  • 后端配置变更需迁移状态。
  • 循环引用需重构或拆分应用。

相关技能

  • gcp-networking:通过 Terraform 管理 VPC 和防火墙资源。
  • gcp-gke:使用 Terraform 模块配置 GKE 集群。
  • gcp-cloud-sql:通过 Terraform 管理 Cloud SQL 实例。
  • gcp-compute:在 Terraform 中定义 Compute Engine 资源。
  • gcp-cloud-functions:使用 Terraform 部署无服务器函数。