运维部署
当需要搭建 CI/CD、容器化、K8s/IaC 部署…
适用于设置 CI/CD 流水线、容器化应用、Kubernetes 部署和配置、基础设施即代码、云平台配置、部署策略、内部开发者平台/自助工具、事故响应/on-call/生产排障、发布自动化和制品管理等场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
当需要搭建 CI/CD、容器化、K8s/特定
解决思路
- 以 Build Hat 自动化构建、测试和打包。
- 以 Deploy Hat 编排跨环境部署。
- 以 Ops Hat 保障可靠性、监控和事故响应。
- 评估:理解应用、环境和需求。
- 设计:确定流水线结构和部署策略。
- 实现:编写 IaC、Dockerfile、CI/CD 配置。
- 验证:运行 `terraform plan`,lint 配置,执行单元/集成测试;继续前确认没有破坏性变更。
- 规划发布:确定目标环境;准备部署摘要、回滚命令和验证计划。
- 审批和部署:若目标是生产或面向客户,展示部署摘要和回滚计划并请求用户明确批准;仅在确认后运行部署命令;若未获批准则停止并给出 blocked 结论。
- 发布时带验证,部署后运行冒烟测试。
- 监控:设置可观测性和告警;上线前确认回滚流程已就绪。
- 设置 GitHub Actions/CI/CD pipelines 或 GitHub workflows 时,加载 `references/github-actions.md`。
- 设置 GitLab pipelines、`.gitlab-ci.yml`、DAG/`needs`、environments、runners 时,加载 `references/gitlab-ci.md`。
- 容器化应用或编写 Dockerfile 时,加载 `references/docker-patterns.md`。
- 处理 K8s deployments、services、ingress、pods 时,加载 `references/kubernetes.md`。
- 处理基础设施即代码、AWS/GCP provisioning 时,加载 `references/terraform-iac.md`。
- 处理 blue-green、canary、rolling updates、rollback 时,加载 `references/deployment-strategies.md`。
- 处理 self-service infra、developer portals、golden paths、Backstage 时,加载 `references/platform-engineering.md`。
- 处理 artifact management、feature flags、multi-platform CI/CD 时,加载 `references/release-automation.md`。
- 处理 production outages、on-call、MTTR、postmortems、runbooks 时,加载 `references/incident-response.md`。
- 使用 infrastructure as code,绝不手动变更。
- 实现 health checks 和 readiness probes。
- 将密钥存入 secret managers,而不是 env 文件。
- 在 CI/CD 中启用容器扫描。
- 记录回滚流程。
- 对 Kubernetes 使用 GitOps(ArgoCD、Flux)。
- 不要未经明确批准部署到生产。
- 不要把密钥存入代码或 CI/CD 变量。
- 不要跳过 staging 环境测试。
- 不要忽略容器资源限制。
- 不要在生产使用 `latest` 标签。
- 不要在无监控时于周五部署。
- 输出:提供 CI/CD 流水线配置、Dockerfile、K8s/Terraform 文件、部署验证、回滚流程。
- GitHub Actions 最小 CI 配置:`name: CI`,`on: push: branches: [main]`,job `build-test-push` 运行在 `ubuntu-latest`。
- GitHub Actions 步骤:使用 `actions/checkout@v4`。
- GitHub Actions 步骤:构建镜像 `docker build -t myapp:${{ github.sha }} .`。
- GitHub Actions 步骤:运行测试 `docker run --rm myapp:${{ github.sha }} pytest`。
- GitHub Actions 步骤:使用 `aquasecurity/trivy-action@master` 扫描镜像,`image-ref: myapp:${{ github.sha }}`。
- GitHub Actions 步骤:推送镜像:`docker tag myapp:${{ github.sha }} ghcr.io/org/myapp:${{ github.sha }}` 并 `docker push ghcr.io/org/myapp:${{ github.sha }}`。
- Dockerfile 多阶段构建 builder 阶段:`FROM python:3.12-slim AS builder`,`WORKDIR /app`,`COPY requirements.txt .`,`RUN pip install --no-cache-dir -r requirements.txt`。
- Dockerfile 最终阶段:`FROM python:3.12-slim`,`WORKDIR /app`,`COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages`,`COPY . .`。
- Dockerfile 安全与健康:`USER nonroot`,`HEALTHCHECK --interval=30s --timeout=5s CMD curl -f http://localhost:8080/health || exit 1`,`CMD ["python", "main.py"]`。
- Kubernetes 回滚流程:`kubectl rollout undo deployment/myapp -n production`,然后 `kubectl rollout status deployment/myapp -n production`。
- 验证回滚成功:`kubectl get pods -n production -l app=myapp`,`curl -f https://myapp.example.com/health`。
- 部署前始终在 PR 或变更单中记录回滚命令和验证步骤。
- 参考技术栈:GitHub Actions、GitLab CI、Jenkins、CircleCI、Docker、Kubernetes、Helm、ArgoCD、Flux、Terraform、Pulumi、Crossplane、AWS/GCP/Azure、Prometheus、Grafana、PagerDuty、Backstage、LaunchDarkly、Flagger。
适用边界 · 注意事项
- 未获得生产或客户环境的明确审批时,不适用;应停止并给出 blocked 结论。
- 没有 staging 测试、监控或回滚预案时,不适用生产发布,尤其避免在无监控时于周五部署。
- 无法使用 IaC、secret manager、GitOps 等受控流程,必须手工直改、把密钥放代码/CI/CD 变量或无视容器资源限制时,不适用。