SuperAPI AI 工具集

devops-infrastructure

部署与运维

查看项目

更新于 10-15 12:06

技能介绍

用途

本技能用于在涉及基础设施与部署的工程任务中提供指导,触发场景包括: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 定义基础设施的开发与运维任务。

限制

资料未提供该技能的具体安装方式、收费模式、支持平台或版本要求。