关于 ArgoRollouts
ArgoRollouts 是关于 Kubernetes 渐进式交付控制器的技能指南,适合 Kubernetes 运维人员使用。它涵盖蓝绿与金丝雀部署、流量路由及基于指标的分析配置和故障排查。
主要功能
- 01蓝绿与金丝雀策略
- 02逐步切换流量
- 03基于指标的晋级与回滚
- 04AnalysisTemplate 和 AnalysisRun 指南
- 05流量管理提供方集成
- 06kubectl-argo-rollouts 命令参考
适用场景
- 01配置带分析门控的金丝雀发布
- 02在蓝绿晋级前验证预览版本
- 03排查暂停的发布或失败的分析
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ julianobarbosa/ claude-code-skills --skill argorollouts安装后在 Claude Code 中输入/argorollouts确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/analysis-metrics.mdcli-commands.mddeployment-strategies.mdexamples.mdsummary.md详细介绍
Argo Rollouts 技能
Argo Rollouts 综合指南——这是一款 Kubernetes 控制器,可为 Kubernetes 提供高级部署能力,包括蓝绿部署、金丝雀发布和实验。
快速参考
| 资源 | 描述 |
|---|---|
| Rollout | 替代 Deployment,并添加渐进式交付策略 |
| AnalysisTemplate | 定义用于自动分析的指标查询 |
| AnalysisRun | 从模板实例化的分析 |
| Experiment | 运行 ReplicaSet 以进行 A/B 测试 |
| ClusterAnalysisTemplate | 集群范围的 AnalysisTemplate |
核心概念
Rollout CRD
Rollout 资源替代标准 Kubernetes Deployment,并提供:
- 蓝绿策略:在不同版本之间即时切换流量
- 金丝雀策略:通过分析关卡逐步切换流量
- 流量管理:与服务网格和 Ingress 控制器集成
- 自动分析:基于指标做出升级或回滚决策
部署策略
蓝绿部署:
strategy:
blueGreen:
activeService: my-app-active
previewService: my-app-preview
autoPromotionEnabled: false
金丝雀发布:
strategy:
canary:
steps:
- setWeight: 20
- pause: {duration: 5m}
- setWeight: 50
- analysis:
templates:
- templateName: success-rate
流量管理集成
| 提供方 | 配置键 |
|---|---|
| Istio | trafficRouting.istio |
| NGINX Ingress | trafficRouting.nginx |
| AWS ALB | trafficRouting.alb |
| Linkerd | trafficRouting.linkerd |
| SMI | trafficRouting.smi |
| Traefik | trafficRouting.traefik |
| Ambassador | trafficRouting.ambassador |
CLI 命令(kubectl-argo-rollouts)
# Installation
kubectl argo rollouts version
# Rollout Management
kubectl argo rollouts get rollout <name>
kubectl argo rollouts status <name>
kubectl argo rollouts promote <name>
kubectl argo rollouts abort <name>
kubectl argo rollouts retry <name>
kubectl argo rollouts undo <name>
kubectl argo rollouts pause <name>
kubectl argo rollouts restart <name>
# Dashboard
kubectl argo rollouts dashboard
# Validation
kubectl argo rollouts lint <file>
分析提供方
| 提供方 | 用例 |
|---|---|
| Prometheus | 使用 PromQL 查询指标 |
| Datadog | Datadog 指标 API |
| New Relic | NRQL 查询 |
| Wavefront | Wavefront 查询 |
| Kayenta | 金丝雀分析平台 |
| CloudWatch | AWS CloudWatch 指标 |
| Web | HTTP 端点检查 |
| Job | 基于 Kubernetes Job 的分析 |
参考文档
常见模式
使用自动分析的金丝雀发布
steps:
- setWeight: 10
- pause: {duration: 1m}
- analysis:
templates:
- templateName: success-rate
args:
- name: service-name
value: my-service
- setWeight: 50
- pause: {duration: 2m}
使用升级前分析的蓝绿部署
strategy:
blueGreen:
activeService: active-svc
previewService: preview-svc
prePromotionAnalysis:
templates:
- templateName: smoke-tests
autoPromotionEnabled: false
故障排除
| 问题 | 解决方案 |
|---|---|
| Rollout 卡在 Paused 状态 | 运行 kubectl argo rollouts promote <name> |
| 分析失败 | 检查 AnalysisRun 状态和指标查询 |
| 流量未切换 | 验证流量管理提供方配置 |
| Pod 未扩缩容 | 检查 HPA 和资源限制 |
最佳实践
- 生产环境的金丝雀发布始终使用分析关卡
- 在提高权重之间设置合适的暂停时长
- 在 AnalysisTemplate 中配置回滚阈值
- 使用预览服务进行蓝绿部署验证
- 在部署期间监控 AnalysisRun
- 为 AnalysisTemplate 做版本管理,并与应用代码保持同步
评论
支持 Markdown