用途
本指南覆盖基础设施自动化、CI/CD 流水线开发、部署策略、监控与云运维。适用于配置基础设施、构建流水线、搭建可观测性、管理密钥或规划灾难恢复等场景。
主要能力
基础设施决策规则
- 配置:使用带远程状态(S3 + DynamoDB 锁)的 Terraform,使每个资源受版本控制并避免并发修改;使用 Terraform 工作区或按环境分目录布局配合共享模块,以捕捉预发与生产之间的漂移;生产环境使用相同 Terraform 模块配合变量覆盖,绝不通过云控制台创建基础设施。
- CI/CD 流水线:按离散阶段(lint、test、build、scan、deploy)组织并设置显式依赖,使安全失败阻断部署;部署策略包括蓝绿(零停机 + 即时回滚)、金丝雀(基于指标逐步切流)、滚动(简单优先且可接受短暂混合版本流量);任何手动步骤执行超过两次即自动化。
- 容器化:使用多阶段 Docker 构建,最终镜像采用 distroless 或 Alpine 以最小化攻击面;CI 必须运行 Trivy(或等效工具)并在合并前对 CRITICAL/HIGH 发现失败。
- 监控与可靠性:埋点四大黄金信号(延迟、流量、错误、饱和度),对症状而非原因告警;每个告警必须链接到运行手册;强制结构化 JSON 日志并发送到集中系统(ELK、Loki);配置存活探针 30 秒重启,设置 PodDisruptionBudget。
- 灾难恢复:自动化故障转移,运行手册每季度测试。
- 成本优化:每月审查云利用率,对 14 天内平均 CPU 低于 20% 的实例降配。
- 密钥管理:将密钥存储在 Vault 或 AWS Secrets Manager 中并自动轮换(最长 90 天 TTL),运行时注入;绝不将密钥提交到源码控制或烘焙进镜像。
- 网络与合规:所有安全组和 NACL 默认拒绝全部入站,仅开放必要端口/CIDR,每月修剪;生成自动审计日志记录部署者、提交 SHA 和审批,不可变存储。
事故响应协议
- 严重级别 1(站点宕机、数据丢失风险):5 分钟内组建事故团队,首要动作是缓解(回滚、故障转移、扩容)而非诊断,15 分钟内通知利益相关者,48 小时内完成事后复盘。
- 严重级别 2(性能下降、部分中断):值班工程师 15 分钟内响应,检查最近部署(若小于 1 小时则回滚)、基础设施告警、依赖健康,30 分钟内沟通状态。
- 严重级别 3(次要问题、有变通方案):记录问题、创建工单、下个迭代修复。
- 回滚决策:若问题在最近 4 小时内部署后开始,先回滚再调查;若与部署无关,升级到相关服务团队。
成本估算公式
- 计算(EC2/GCE):monthly_cost = instance_hourly_rate * 730 * instance_count;预留实例对稳态工作负载节省 30-60%。
- 存储(S3/GCS):monthly_cost = storage_GB * $0.023 + requests * $0.0004 (GET) 或 $0.005 (PUT);启用生命周期策略。
- 数据库(RDS/Cloud SQL):monthly_cost = instance_hourly_rate * 730 + storage_GB * $0.115 + IOPS_provisioned * $0.10;多可用区使实例成本翻倍。
- 数据传输:每月前 1GB 免费,出互联网 $0.09/GB,跨可用区 $0.01/GB 每方向,跨区域 $0.02/GB。
- Kubernetes(EKS/GKE):cluster_cost = 控制平面(EKS $73/月)+ 节点实例成本 + 数据传输;Spot/抢占节点对容错工作负载节省 60-90%。
服务选择决策树
- 计算:Lambda/Cloud Functions 适用于 <15 分钟执行、<10GB 内存且请求驱动;ECS/Cloud Run 适用于流量稳定的容器化服务;EKS/GKE 仅在运行 >10 个服务且网络复杂时使用。
- 数据库:RDS PostgreSQL 适用于 <10TB 关系型;DynamoDB 适用于 >100k QPS 键值;ElastiCache Redis 用于缓存和会话;Aurora 用于需要 PostgreSQL 兼容且自动多可用区故障转移。
- 队列/消息:SQS 用于简单异步任务;SNS + SQS 用于扇出;EventBridge 用于带过滤规则的事件路由;Kafka (MSK) 仅用于 >10k msg/sec 且需重放的流处理。
- 存储:S3 用于对象;EFS 用于共享文件系统;EBS 用于块存储。
- CDN:CloudFront 用于 AWS 原生;Cloudflare 用于多云或 DDoS 密集场景。
自验证协议
- Terraform:运行 terraform plan 并阅读每一行差异;若计划显示生产资源销毁或替换,停止并核实意图。
- CI/CD 流水线:在非生产分支触发完整流水线运行,验证每个阶段通过,检查安全扫描门确实阻断发现。
- 监控:设置告警后手动触发每个告警,验证在预期时间窗口内触发并到达正确渠道。
- 灾难恢复:配置备份后执行恢复到测试环境,验证数据完整性。
- 密钥:验证密钥不出现在 CI/CD 日志、Docker 镜像层、Terraform 状态或 git 历史中。
故障恢复
- Terraform 状态漂移:运行 terraform plan 查看漂移;非关键资源可 apply 调和;关键资源需调查手动变更原因后谨慎调和。
- CI/CD 流水线中断:检查上次成功运行,对比配置差异;常见原因包括密钥/令牌过期、依赖版本升级、运行器镜像更新或注册表限流。
- 容器 OOM:检查 kubectl describe pod 的 OOM 事件;若内存线性增长则为内存泄漏,修复应用而非限制。
- 证书过期:使用 cert-manager 或 ACM 自动续期,设置 30、14、7 天前告警。
- 磁盘满:识别填充原因(日志、Docker 镜像、数据库 WAL、临时文件),修复根因。
使用方式
前 10 分钟
- 在提出变更前清点交付面:CI 配置、基础设施目录、运行时清单、Dockerfile 和可观测性配置。
- 编辑前运行现有验证命令;若仓库没有基础设施变更的验证路径,作为任务的一部分添加。
- 在仓库根目录使用 scripts/analyze_deployment_risk.py 汇总 CI、Docker、Terraform 和 Kubernetes 信号。
- 识别当前部署系统的回滚路径;若无法在 5 分钟内说明如何回滚,则发布计划不完整。
拒绝或升级
- 当没有回滚路径、没有健康信号或无法在生产外测试变更时,拒绝“直接推送”请求。
- 若计划包含数据库替换、Terraform 销毁、状态移动、证书轮换或安全组扩大且无补偿控制,在更改生产状态前升级。
- 当仓库混合多个部署系统且所有权边界不清时升级。
- 不要默认推荐 Kubernetes;若工作负载是单一服务且网络简单、规模可预测,保持更简单的运行时。
脚本
- scripts/validate_dockerfile.sh:检查 Dockerfile 是否符合常见最佳实践(多阶段构建、USER 指令、HEALTHCHECK、无 latest 标签、COPY 优于 ADD、存在 .dockerignore)。使用 --help 查看用法。
- scripts/check_services.sh:检查一组 host:port 的 TCP 连通性和 HTTP 响应,报告状态、延迟和 HTTP 状态码。使用 --help 查看用法。
工作流
- 基础设施评估:审计现有基础设施、部署流程和监控缺口;映射应用依赖和扩展需求;识别目标环境的安全与合规要求。
- 流水线设计:设计带安全扫描集成的 CI/CD 流水线;规划部署策略;创建基础设施即代码模板;设计监控和告警策略。
- 实施:设置带自动化测试的 CI/CD 流水线;实现带版本控制的基础设施即代码;配置监控、日志和告警系统;创建灾难恢复和备份自动化。
- 优化与维护:监控系统性能并优化资源;实施成本优化策略;创建自动化安全扫描和合规报告;构建带自动恢复的自愈系统。
交付物
- 部署策略,包含明确的回滚步骤、健康门和所有权。
- 基础设施变更摘要,列出有状态资源、影响范围和审批点。
- CI/CD 计划,覆盖 lint、test、build、scan、deploy 和部署后验证。
- 监控和告警清单,与变更的服务绑定。
适用场景
适用于需要自动化基础设施配置、构建 CI/CD 流水线、实施部署策略、搭建监控与可观测性、管理密钥、规划灾难恢复、优化云成本、处理生产事故的工程与运维场景。
限制
本指南为方法论与决策规则集合,具体云厂商价格、服务可用性和工具版本可能随时间变化,需以官方文档为准。部分脚本和代码示例的具体实现细节在资料中未完整提供,需参考其引用的指南文件。