用途
本技能用于在涉及基础设施与部署的工程任务中提供指导,触发场景包括:Docker、CI/CD 流水线、部署配置、监控、基础设施即代码。若任务仅涉及应用逻辑、不涉及基础设施或部署,则跳过本技能。
主要能力
Docker 最佳实践
- 多阶段构建:提供 Node.js 与 Python 的多阶段 Dockerfile 示例,将构建阶段与运行阶段分离,减小镜像体积并去除开发依赖。
- 层缓存:强调先复制依赖清单(如 package*.json)再安装依赖,最后复制源码,避免代码变更导致依赖层缓存失效。
- .dockerignore:列出应排除的目录与文件,如 node_modules、.git、.env、dist、pycache 等。
- 安全:固定基础镜像版本(如 node:22-alpine 而非 node:latest)、使用非 root 用户、尽可能只读文件系统、使用 docker scout 或 trivy 扫描镜像漏洞。
CI/CD 流水线设计
- GitHub Actions 结构:给出包含 lint、test、build、deploy 四个作业的完整示例,展示作业依赖(needs)、服务容器(如 postgres)、权限设置、镜像构建与推送(docker/build-push-action)、以及基于分支的部署条件。
- 缓存策略:Node 模块缓存、Python uv 缓存、Docker 层缓存(type=gha)。
部署策略
- 蓝绿部署:两个相同环境,切换负载均衡器,支持即时回滚,但部署期间基础设施成本翻倍。
- 金丝雀部署:先向小部分流量(如 5%)发布,逐步扩大至 100%,可限制影响范围,但路由更复杂、发布周期更长。
- 滚动部署:逐台替换实例,每台通过健康检查后再继续,无需额外基础设施,但部署期间存在混合版本、回滚较慢。
- 功能开关:给出简单实现示例,并建议生产环境使用 LaunchDarkly、Unleash、Flagsmith 等服务。
基础设施即代码
- Terraform 基础:提供 main.tf 与 variables.tf 示例,包含远程状态(S3 后端)、资源定义、变量与标签。
- Terraform 规则:始终使用远程状态、锁定状态文件、使用变量与模块、为资源打标签、先 plan 后 apply、禁止手动修改基础设施、按环境使用工作区或独立状态文件。
监控与可观测性
- 三支柱:指标(RED 方法与 USE 方法,工具如 Prometheus、Datadog、CloudWatch)、日志(结构化 JSON、关联 ID、日志级别,工具如 ELK、Loki)、追踪(分布式追踪、延迟分解,工具如 Jaeger、Zipkin、Datadog APM)。
- 健康检查端点:给出 Express 示例,检查数据库与 Redis 连通性,返回 200 或 503。
- 告警规则:好告警应可操作、有意义、预防性;坏告警过于嘈杂、过于敏感或不可操作。强调告警疲劳问题,每条告警都应需要人工处理。
环境管理
- 开发/预发/生产一致性:提供 docker-compose.yml 示例,包含应用、Postgres、Redis 服务及健康检查。
- 环境变量:.env.example 提交到 git 但不含真实值,.env 不提交并列入 .gitignore。
反模式对照表
列出常见错误做法与推荐做法,如使用 node:latest、以 root 运行容器、缺少 .dockerignore、单一 CI 作业包办一切、手动部署、无健康检查、对每个错误告警、所有环境同一配置、无回滚计划、日志为非结构化字符串等。
使用方式
技能以清单形式引导 DevOps 设置流程:容器化应用、设置 CI/CD 流水线、定义部署策略、配置监控告警、设置环境管理、编写运行手册、对照反模式清单验证。用户可复制该清单并跟踪进度。
适用场景
适用于需要编写 Dockerfile、配置 GitHub Actions、设计部署方案、设置监控告警、管理多环境配置或使用 Terraform 定义基础设施的开发与运维任务。
限制
资料未提供该技能的具体安装方式、收费模式、支持平台或版本要求。