58 lines
5.0 KiB
Markdown
58 lines
5.0 KiB
Markdown
---
|
||
title: "Learning Sessions Cloud Transformation Programme-Deploying RDS via Terraform"
|
||
type: source
|
||
tags: [Terraform, RDS, IaC, CTP, DevOps, DBRE, AWS]
|
||
date: 2026-04-14
|
||
---
|
||
|
||
## Source File
|
||
- [[Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]]
|
||
|
||
## Summary(用中文描述)
|
||
- 核心主题:**通过 Terraform 在 AWS 上部署 RDS 数据库**,涵盖 IaC 最佳实践和 Gruntwork RDS 模块的选型对比
|
||
- 问题域:RDS 部署方式的选择(控制台 vs 代码)、模块选型(grunt work 模块 vs SRE 核心模块)、Day 2 运维(扩缩容/补丁/升级)
|
||
- 方法/机制:使用 Terragrunt(Terraform 封装器)管理 RDS 部署,通过 GitHub PR + Atlantis 实现变更自动化;CloudWatch 负责监控告警
|
||
- 结论/价值:IaC 部署任何规模的 RDS 到 AWS 均优于控制台;grunt work RDS Service 相比裸模块提供更完整的企业级功能(KMS 加密、CloudWatch 告警等);代码即文档
|
||
|
||
## Key Claims(用中文描述)
|
||
- **IaC 六大大好处**:速度、灵活性、一致性、灾难恢复、文档、自动化。代码即文档
|
||
- **两种 RDS 部署选项**:裸模块 RDS module(基础功能)vs 更完整的 grunt work RDS Service(推荐,预建 KMS 加密和 CloudWatch 告警)
|
||
- **SRE 核心模块功能弱于 grunt work 服务**:建议生产环境使用 grunt work RDS Service
|
||
- **Terragrunt 优于裸 Terraform**:避免变量重复声明,保持代码整洁,贯彻 DRY 原则
|
||
- **Day 2 运维通过 GitHub PR + Atlantis 实现**:扩缩容、补丁、大版本升级均在 Terragrunt 文件中修改,通过 PR 触发 Atlantis 自动应用
|
||
- **监控方案**:CloudWatch Dashboard + Alarms,注意突发性能实例(burstable instance)的 CPU credits 消耗
|
||
|
||
## Key Quotes
|
||
> "We use Terragrunt, which is basically it's a wrapper around Terraform, and it allows you to keep your code clean and you're not repeating your variables all the time." — Greg, DBRE Team
|
||
> "The code is the documentation." — Greg, 强调 IaC 的文档价值
|
||
|
||
## Key Concepts
|
||
- [[Infrastructure-as-Code]]:通过代码定义和版本控制基础设施资源,核心优势包括速度、一致性、灾难恢复和自动化
|
||
- [[DRY Principle]]:Terragrunt 通过管理 provider 和 remote_state 块减少跨环境重复声明
|
||
- [[GitOps]]:通过 GitHub PR + Atlantis 实现基础设施变更的自动化审核和应用
|
||
- [[CloudWatch-Alarms]]:RDS 监控与告警机制,包含突发性能实例的 CPU credits 考虑
|
||
- [[KMS-Encryption]]:grunt work RDS Service 内置的 KMS 密钥加密功能
|
||
|
||
## Key Entities
|
||
- [[Gruntwork]]:提供预建 Terraform 模块(RDS Service 等),建议生产环境使用其 grunt work RDS Service 而非裸模块
|
||
- [[Atlantis]]:Git 驱动的 Terraform 自动化工具,配合 GitHub PR 实现 IaC 变更
|
||
- [[Terraform]]:云厂商无关的 IaC 核心工具
|
||
- [[Terragrunt]]:Terraform 的 DRY 封装层,用于管理 RDS 部署配置
|
||
- [[DBRE]]:Database Reliability Engineering 团队,Greg 来自该团队
|
||
- [[CloudWatch]]:AWS 监控服务,用于 RDS Dashboard 和 Alarms
|
||
|
||
## Connections
|
||
- [[learning-sessions-cloud-transformation-programme-20230808-183322-meeting-recordi]] ← related ← [[learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]](同一 CTP 系列,ECS 部署 + RDS 部署)
|
||
- [[ctp-topic-48-terraform-vs-terragrunt]] ← related ← [[learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]](Terragrunt 在两个主题中均有讨论)
|
||
- [[ctp-topic-16-cross-account-terraform-modules]] ← related ← [[learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]](IaC 模块化 + Cross-account Terraform)
|
||
- [[ctp-topic-9-ci-cd-with-gruntwork]] ← foundation ← [[learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]](Gruntwork CI/CD 基础)
|
||
- [[Terraform]] ← wraps ← [[Terragrunt]]
|
||
- [[Gruntwork]] ← provides ← [[RDS-Module]](grunt work RDS Service)
|
||
- [[Atlantis]] ← automates ← [[Terraform]]
|
||
- [[CloudWatch]] ← monitors ← [[RDS-Module]]
|
||
|
||
## Contradictions
|
||
- 与 [[ctp-topic-9-ci-cd-with-gruntwork]](Gruntwork CI/CD):两者均依赖 Gruntwork 模块体系;本主题聚焦 RDS 部署,CI/CD 主题聚焦 ECS 应用部署;RDS 部署同样适用 Gruntwork 流水线规范,两者互补而非冲突
|
||
- 与 [[ctp-topic-48-terraform-vs-terragrunt]](Terraform vs Terragrunt):本主题的实际案例印证了该主题的观点——Terragrunt 保持代码整洁、避免变量重复;两主题一致,共同推荐 Terragrunt 作为 Terraform 的封装层
|
||
- 与 [[ctp-topic-16-cross-account-terraform-modules]](跨账号 Terraform 模块):两者均讨论 Terraform 模块的运维方式;跨账号模块方案(Jenkins + ECS Deploy Runner)与本主题(RDS 通过 Atlantis)的 CI/CD 载体不同,适用于不同规模和架构场景,无直接冲突
|