name: devops-deployment description: CI/CD流水线、容器化、Kubernetes和基础设施即代码模式 version: 1.0.0 category: 基础设施与部署 agents: [后端系统架构师, 代码质量评审员, 工作室教练] keywords: [CI/CD, 部署, Docker, Kubernetes, 流水线, 基础设施, GitOps, 容器, 自动化, 发布]
DevOps与部署技能
涵盖CI/CD流水线、容器化、部署策略和基础设施自动化的综合框架。
使用场景
- 搭建CI/CD流水线
- 容器化应用程序
- 部署到Kubernetes或云平台
- 实施GitOps工作流
- 管理基础设施即代码
- 规划发布策略
流水线架构
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 代码 │──▶│ 构建 │──▶│ 测试 │──▶│ 部署 │
│ 提交 │ │ 与检查 │ │ 与扫描 │ │ 与发布 │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│ │ │ │
▼ ▼ ▼ ▼
触发器 制品 报告 监控
核心概念
CI/CD流水线阶段
- 代码检查与类型检查 - 代码质量门禁
- 单元测试 - 带报告的测试覆盖率
- 安全扫描 - npm审计 + Trivy漏洞扫描器
- 构建与推送 - Docker镜像到容器仓库
- 部署到预发布环境 - 环境门控部署
- 部署到生产环境 - 手动批准或自动部署
完整GitHub Actions工作流请见
templates/github-actions-pipeline.yml
容器最佳实践
多阶段构建 最小化镜像大小:
- 阶段1:仅安装生产依赖
- 阶段2:使用开发依赖构建应用
- 阶段3:最小化占用空间的运行时环境
安全加固:
- 非root用户(uid 1001)
- 尽可能使用只读文件系统
- 编排器集成的健康检查
请见
templates/Dockerfile和templates/docker-compose.yml
Kubernetes部署
核心清单文件:
- 带滚动更新策略的Deployment
- 内部路由的Service
- 带TLS的外部访问Ingress
- 自动扩缩容的HorizontalPodAutoscaler
安全上下文:
runAsNonRoot: trueallowPrivilegeEscalation: falsereadOnlyRootFilesystem: true- 删除所有权限
资源管理:
- 始终设置请求和限制
- 使用
requests进行调度,limits进行限制
请见
templates/k8s-manifests.yaml和templates/helm-values.yaml
部署策略
| 策略 | 使用场景 | 风险 |
|---|---|---|
| 滚动更新 | 默认,逐步替换 | 低 - 自动回滚 |
| 蓝绿部署 | 即时切换,易于回滚 | 中 - 双倍资源 |
| 金丝雀发布 | 渐进式流量切换 | 低 - 逐步暴露 |
滚动更新(Kubernetes默认):
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 0 # 零停机时间
蓝绿部署:部署到备用环境,切换服务选择器 金丝雀发布:使用Istio VirtualService进行流量分割(10% → 50% → 100%)
基础设施即代码
Terraform模式:
- S3中的远程状态,带DynamoDB锁
- 基于模块的架构(VPC、EKS、RDS)
- 环境特定的tfvars文件
AWS VPC + EKS + RDS示例请见
templates/terraform-aws.tf
使用ArgoCD的GitOps
ArgoCD监视Git仓库并同步集群状态:
- 带清理的自动同步
- 自愈(漂移检测)
- 瞬态故障的重试策略
请见
templates/argocd-application.yaml
密钥管理
使用外部密钥操作符从云提供商同步:
- AWS密钥管理器
- HashiCorp Vault
- Azure密钥保管库
- GCP密钥管理器
请见
templates/external-secrets.yaml
部署检查清单
部署前
- [ ] CI中所有测试通过
- [ ] 安全扫描干净
- [ ] 数据库迁移准备就绪
- [ ] 回滚计划已记录
部署中
- [ ] 监控部署进度
- [ ] 观察错误率
- [ ] 验证健康检查通过
部署后
- [ ] 验证指标正常
- [ ] 检查日志中的错误
- [ ] 更新状态页面
Helm Chart结构
charts/app/
├── Chart.yaml
├── values.yaml
├── templates/
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── ingress.yaml
│ ├── configmap.yaml
│ ├── secret.yaml
│ ├── hpa.yaml
│ └── _helpers.tpl
└── values/
├── staging.yaml
└── production.yaml
扩展思考触发器
使用Opus 4.5扩展思考用于:
- 架构决策 - Kubernetes与无服务器、多区域设置
- 迁移规划 - 在云提供商之间迁移
- 事件响应 - 复杂的部署故障
- 安全设计 - 零信任架构
模板参考
| 模板 | 用途 |
|---|---|
github-actions-pipeline.yml |
6个阶段的完整CI/CD工作流 |
Dockerfile |
多阶段Node.js构建 |
docker-compose.yml |
开发环境 |
k8s-manifests.yaml |
Deployment、Service、Ingress |
helm-values.yaml |
Helm chart值 |
terraform-aws.tf |
VPC、EKS、RDS基础设施 |
argocd-application.yaml |
GitOps应用 |
external-secrets.yaml |
密钥管理器集成 |