k8s-rollouts
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseProgressive Delivery with Argo Rollouts & Flagger
借助Argo Rollouts与Flagger实现渐进式交付
Manage progressive deployments using kubectl-mcp-server's rollout tools (11 tools).
使用kubectl-mcp-server的发布工具(共11个)管理渐进式部署。
When to Apply
适用场景
Use this skill when:
- User mentions: "canary", "blue-green", "progressive delivery", "Argo Rollouts", "Flagger"
- Operations: rolling out new versions, traffic splitting, automated rollbacks
- Keywords: "gradual rollout", "traffic shift", "analysis run", "promote", "abort"
在以下场景中使用本技能:
- 用户提及:"canary"(金丝雀)、"blue-green"(蓝绿)、"progressive delivery"(渐进式交付)、"Argo Rollouts"、"Flagger"
- 操作场景:新版本发布、流量拆分、自动回滚
- 关键词:"gradual rollout"(逐步发布)、"traffic shift"(流量切换)、"analysis run"(分析运行)、"promote"(升级)、"abort"(终止)
Priority Rules
优先级规则
| Priority | Rule | Impact | Tools |
|---|---|---|---|
| 1 | Detect Argo Rollouts installation first | CRITICAL | |
| 2 | Check rollout status before promoting | HIGH | |
| 3 | Monitor analysis runs for failures | HIGH | |
| 4 | Abort immediately on critical failures | CRITICAL | |
| 优先级 | 规则 | 影响级别 | 工具 |
|---|---|---|---|
| 1 | 先检测Argo Rollouts的安装情况 | 关键 | |
| 2 | 升级前检查发布状态 | 高 | |
| 3 | 监控分析运行是否出现故障 | 高 | |
| 4 | 出现严重故障时立即终止 | 关键 | |
Quick Reference
快速参考
| Task | Tool | Example |
|---|---|---|
| Detect Argo Rollouts | | |
| List rollouts | | |
| Get rollout status | | |
| Promote rollout | | |
| 任务 | 工具 | 示例 |
|---|---|---|
| 检测Argo Rollouts | | |
| 列出所有发布 | | |
| 获取发布状态 | | |
| 升级发布 | | |
Check Installation
检查安装
python
rollouts_detect_tool()python
rollouts_detect_tool()Argo Rollouts
Argo Rollouts相关操作
List Rollouts
列出所有发布
python
rollouts_list_tool(namespace="default")python
rollouts_list_tool(namespace="default")Shows:
显示内容:
- Rollout name
- 发布名称
- Strategy (canary/blueGreen)
- 策略(金丝雀/蓝绿)
- Status
- 状态
- Desired/Ready replicas
- 期望/就绪副本数
undefinedundefinedGet Rollout Details
获取发布详情
python
rollout_get_tool(name="my-rollout", namespace="default")python
rollout_get_tool(name="my-rollout", namespace="default")Shows:
显示内容:
- Spec (strategy, steps)
- 规格(策略、步骤)
- Status (phase, conditions)
- 状态(阶段、条件)
- Current step
- 当前步骤
undefinedundefinedCheck Rollout Status
检查发布状态
python
rollout_status_tool(name="my-rollout", namespace="default")python
rollout_status_tool(name="my-rollout", namespace="default")Returns detailed status with:
返回详细状态,包括:
- Current step index
- 当前步骤索引
- Canary weight
- 金丝雀流量权重
- Stable/canary replicasets
- 稳定版/金丝雀版ReplicaSet
undefinedundefinedPromote Rollout
升级发布
python
undefinedpython
undefinedPromote to next step
升级到下一步
rollout_promote_tool(name="my-rollout", namespace="default")
rollout_promote_tool(name="my-rollout", namespace="default")
Full promote (skip remaining steps)
完全升级(跳过剩余步骤)
rollout_promote_tool(name="my-rollout", namespace="default", full=True)
undefinedrollout_promote_tool(name="my-rollout", namespace="default", full=True)
undefinedAbort Rollout
终止发布
python
rollout_abort_tool(name="my-rollout", namespace="default")python
rollout_abort_tool(name="my-rollout", namespace="default")Reverts to stable version
回滚到稳定版本
undefinedundefinedRetry Rollout
重试发布
python
rollout_retry_tool(name="my-rollout", namespace="default")python
rollout_retry_tool(name="my-rollout", namespace="default")Retry failed rollout
重试失败的发布
undefinedundefinedRestart Rollout
重启发布
python
rollout_restart_tool(name="my-rollout", namespace="default")python
rollout_restart_tool(name="my-rollout", namespace="default")Triggers new rollout with same spec
使用相同规格触发新的发布
undefinedundefinedAnalysis Runs
分析运行
python
undefinedpython
undefinedList analysis runs
列出分析运行记录
analysis_runs_list_tool(namespace="default")
analysis_runs_list_tool(namespace="default")
Analysis runs verify rollout health:
分析运行用于验证发布健康状态:
- Prometheus metrics
- Prometheus指标
- Web hooks
- Web钩子
- Custom jobs
- 自定义任务
undefinedundefinedCreate Canary Rollout
创建金丝雀发布
python
kubectl_apply(manifest="""
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: my-rollout
namespace: default
spec:
replicas: 5
strategy:
canary:
steps:
- setWeight: 20
- pause: {duration: 1m}
- setWeight: 40
- pause: {duration: 1m}
- setWeight: 60
- pause: {duration: 1m}
- setWeight: 80
- pause: {duration: 1m}
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: app
image: my-app:v2
ports:
- containerPort: 8080
""")python
kubectl_apply(manifest="""
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: my-rollout
namespace: default
spec:
replicas: 5
strategy:
canary:
steps:
- setWeight: 20
- pause: {duration: 1m}
- setWeight: 40
- pause: {duration: 1m}
- setWeight: 60
- pause: {duration: 1m}
- setWeight: 80
- pause: {duration: 1m}
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: app
image: my-app:v2
ports:
- containerPort: 8080
""")Create Blue-Green Rollout
创建蓝绿发布
python
kubectl_apply(manifest="""
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: my-rollout
namespace: default
spec:
replicas: 3
strategy:
blueGreen:
activeService: my-app-active
previewService: my-app-preview
autoPromotionEnabled: false
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: app
image: my-app:v2
""")python
kubectl_apply(manifest="""
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: my-rollout
namespace: default
spec:
replicas: 3
strategy:
blueGreen:
activeService: my-app-active
previewService: my-app-preview
autoPromotionEnabled: false
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: app
image: my-app:v2
""")Flagger
Flagger相关操作
List Canaries
列出所有金丝雀实例
python
flagger_canaries_list_tool(namespace="default")python
flagger_canaries_list_tool(namespace="default")Shows:
显示内容:
- Canary name
- 金丝雀实例名称
- Status (Initialized, Progressing, Succeeded, Failed)
- 状态(已初始化、进行中、成功、失败)
- Weight
- 流量权重
undefinedundefinedGet Canary Details
获取金丝雀实例详情
python
flagger_canary_get_tool(name="my-canary", namespace="default")python
flagger_canary_get_tool(name="my-canary", namespace="default")Create Flagger Canary
创建Flagger金丝雀实例
python
kubectl_apply(manifest="""
apiVersion: flagger.app/v1beta1
kind: Canary
metadata:
name: my-canary
namespace: default
spec:
targetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
service:
port: 80
analysis:
interval: 30s
threshold: 5
maxWeight: 50
stepWeight: 10
metrics:
- name: request-success-rate
threshold: 99
interval: 1m
- name: request-duration
threshold: 500
interval: 1m
""")python
kubectl_apply(manifest="""
apiVersion: flagger.app/v1beta1
kind: Canary
metadata:
name: my-canary
namespace: default
spec:
targetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
service:
port: 80
analysis:
interval: 30s
threshold: 5
maxWeight: 50
stepWeight: 10
metrics:
- name: request-success-rate
threshold: 99
interval: 1m
- name: request-duration
threshold: 500
interval: 1m
""")Progressive Delivery Workflows
渐进式交付工作流
Canary Deployment
金丝雀部署
python
1. rollouts_list_tool(namespace)
2. # Update image in rollout
3. rollout_status_tool(name, namespace) # Monitor progress
4. rollout_promote_tool(name, namespace) # Promote when ready
5. # Or: rollout_abort_tool(name, namespace) if issuespython
1. rollouts_list_tool(namespace)
2. # 在发布配置中更新镜像
3. rollout_status_tool(name, namespace) # 监控进度
4. rollout_promote_tool(name, namespace) # 就绪后进行升级
5. # 或者:若出现问题,执行rollout_abort_tool(name, namespace)Blue-Green Deployment
蓝绿部署
python
1. rollout_get_tool(name, namespace) # Check current state
2. # Update image
3. rollout_status_tool(name, namespace) # Wait for preview ready
4. # Test preview service
5. rollout_promote_tool(name, namespace) # Switch trafficpython
1. rollout_get_tool(name, namespace) # 检查当前状态
2. # 更新镜像
3. rollout_status_tool(name, namespace) # 等待预览环境就绪
4. # 测试预览服务
5. rollout_promote_tool(name, namespace) # 切换流量Troubleshooting
故障排查
Rollout Stuck
发布停滞
python
1. rollout_status_tool(name, namespace) # Check current step
2. analysis_runs_list_tool(namespace) # Check analysis
3. get_events(namespace) # Check events
4. # If analysis failing:
rollout_abort_tool(name, namespace)python
1. rollout_status_tool(name, namespace) # 检查当前步骤
2. analysis_runs_list_tool(namespace) # 检查分析运行记录
3. get_events(namespace) # 检查事件
4. # 若分析运行失败:
rollout_abort_tool(name, namespace)Canary Failing Analysis
金丝雀分析运行失败
python
1. analysis_runs_list_tool(namespace)
2. # Check metrics source (Prometheus, etc.)
3. # Verify threshold configuration
4. rollout_retry_tool(name, namespace) # Retry if transientpython
1. analysis_runs_list_tool(namespace)
2. # 检查指标来源(如Prometheus等)
3. # 验证阈值配置
4. rollout_retry_tool(name, namespace) # 若为临时故障则重试Related Skills
相关技能
- k8s-deploy - Standard deployments
- k8s-service-mesh - Traffic management with Istio
- k8s-deploy - 标准部署
- k8s-service-mesh - 基于Istio的流量管理