用途
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 命令示例,以及导入现有资源和状态管理命令。
- 故障排除:列出常见症状、原因和修复方法。
使用方式
- 前置条件:安装 Terraform >= 1.5,安装 Google Cloud SDK 或准备服务账号密钥,拥有已启用计费的 GCP 项目。
- 认证:本地开发运行
gcloud auth application-default login;CI/CD 设置export GOOGLE_APPLICATION_CREDENTIALS="sa.json"。 - 初始化:运行
terraform init。 - 计划:运行
terraform plan -var="project_id=my-project" -var="environment=production" -out=tfplan。 - 应用:运行
terraform apply tfplan。 - 环境配置:使用
-var-file=environments/production.tfvars指定环境变量文件。 - CI/CD:按示例命令执行 init、validate、fmt、plan、apply。
- 导入资源:使用
terraform import导入已存在资源。 - 状态管理:使用
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 部署无服务器函数。