name: devops-iac-engineer description: 使用Terraform、Kubernetes和云平台实现基础设施即代码。设计可扩展架构、CI/CD管道和可观察性解决方案。提供安全优先的DevOps实践和站点可靠性工程指导。
DevOps IaC 工程师
此技能帮助DevOps团队使用基础设施即代码原则设计、实施和维护云基础设施。适用于构建云架构、部署容器化应用、设置CI/CD管道或实施可观察性和安全实践。
快速导航
- Terraform & IaC: 查看 terraform.md 以获取Terraform最佳实践和模式
- Kubernetes & 容器: 查看 kubernetes.md 以了解容器编排
- 云平台: 查看 cloud_platforms.md 以获取AWS、Azure、GCP指导
- CI/CD管道: 查看 cicd.md 以了解管道设计和GitOps
- 可观察性: 查看 observability.md 以设置监控和日志
- 安全: 查看 security.md 以了解DevSecOps实践
- 模板与工具: 查看 templates.md 以获取现成模板
核心原则
关键DevOps术语(保持一致)
- 基础设施即代码(IaC): 通过声明性代码文件管理基础设施
- GitOps: 使用Git作为基础设施和应用程序的单一真实来源
- 不可变基础设施: 基础设施组件被替换而非修改
- 服务网格: 用于服务间通信的基础设施层
- 可观察性: 从外部输出(日志、指标、追踪)理解系统状态的能力
- SLI/SLO/SLA: 服务级别指标/目标/协议,用于可靠性
- RTO/RPO: 恢复时间目标/恢复点目标,用于灾难恢复
工作流:基础设施实施
当实施基础设施时,遵循这个结构化方法:
-
理解需求
- 业务需求是什么?(新应用、迁移、扩展、合规)
- 规模需求是什么?(流量、数据、地理分布)
- 约束是什么?(预算、时间线、法规)
- 依赖是什么?(现有系统、数据源)
-
设计架构
- 选择适当的云平台和服务
- 设计高可用性和容错性
- 规划网络拓扑和安全边界
- 识别数据流和存储需求
- 用图表记录架构
-
选择IaC工具
- Terraform用于多云基础设施配置
- Kubernetes清单/Helm用于容器编排
- 基于团队和需求选择CI/CD工具
- 配置管理工具(如果需要)
-
实施基础设施
- 创建模块化、可重用的IaC代码
- 遵循安全最佳实践(见 security.md)
- 实施适当的状态管理和版本控制
- 使用一致的命名和标记约定
- 记录代码并创建README文件
-
设置可观察性
- 为关键服务定义SLI和SLO
- 实施日志、指标和追踪
- 创建仪表板和警报
- 设置日志聚合和分析
- 计划值班轮换和运行手册
-
实施CI/CD
- 设计部署管道阶段
- 实施自动化测试(单元、集成、端到端)
- 设置GitOps工作流
- 配置部署策略(蓝绿、金丝雀)
- 实施回滚程序
-
测试与验证
- 运行基础设施测试(安全、合规、成本)
- 执行灾难恢复演练
- 负载测试和性能验证
- 安全扫描和渗透测试
- 记录测试结果和改进
-
部署与监控
- 执行分阶段发布
- 密切监控指标和日志
- 根据SLO验证
- 记录运行手册和故障排除指南
- 进行部署后审查
决策框架:工具选择
多云需求 → Terraform或Pulumi 仅AWS → Terraform、AWS CDK或CloudFormation 容器编排 → Kubernetes(EKS、GKE、AKS) 简单容器部署 → ECS、Cloud Run或App Service 配置管理 → Ansible或云原生解决方案 GitOps工作流 → ArgoCD或Flux CI/CD管道 → GitHub Actions、GitLab CI或Jenkins
常见挑战与解决方案
问题: 代码与现实之间的基础设施漂移 解决方案: 实施自动化漂移检测,在CI/CD中使用terraform plan,启用只读生产访问,维护状态文件完整性
问题: 秘密管理和凭据暴露 解决方案: 使用云原生秘密管理器(AWS Secrets Manager、HashiCorp Vault),在Git中实施SOPS用于加密秘密,使用IRSA/工作负载身份
问题: 高云成本和意外账单 解决方案: 实施标记策略,使用成本分配标签,设置预算警报,合理调整资源大小,使用Spot实例,实施自动扩展
问题: 复杂Kubernetes配置 解决方案: 使用Helm图表进行模板化,实施Kustomize用于环境特定配置,遵循GitOps模式,使用操作器处理复杂工作负载
协作技巧
- 与开发团队: 提供自助服务平台,记录API,将基础设施作为可重用模块共享
- 与安全团队: 实施策略即代码,自动化合规检查,提供审计跟踪
- 与SRE团队: 共同定义SLI/SLO,分担值班职责,协作事件响应
- 与财务团队: 提供成本可见性,预测费用,实施收费模型
下一步
- 如果您正在实施基础设施即代码,请从 terraform.md 开始
- 使用 kubernetes.md 进行容器编排
- 参考 templates.md 获取现成配置
- 检查 observability.md 以设置监控
注意: 在实施更改之前,始终验证当前基础设施状态、安全要求和合规需求。此技能提供框架和最佳实践,但应根据组织的特定要求进行调整。