k8s-rollouts

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Progressive 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

优先级规则

PriorityRuleImpactTools
1Detect Argo Rollouts installation firstCRITICAL
rollouts_detect_tool
2Check rollout status before promotingHIGH
rollout_status_tool
3Monitor analysis runs for failuresHIGH
analysis_runs_list_tool
4Abort immediately on critical failuresCRITICAL
rollout_abort_tool
优先级规则影响级别工具
1先检测Argo Rollouts的安装情况关键
rollouts_detect_tool
2升级前检查发布状态
rollout_status_tool
3监控分析运行是否出现故障
analysis_runs_list_tool
4出现严重故障时立即终止关键
rollout_abort_tool

Quick Reference

快速参考

TaskToolExample
Detect Argo Rollouts
rollouts_detect_tool
rollouts_detect_tool()
List rollouts
rollouts_list_tool
rollouts_list_tool(namespace)
Get rollout status
rollout_status_tool
rollout_status_tool(name, namespace)
Promote rollout
rollout_promote_tool
rollout_promote_tool(name, namespace)
任务工具示例
检测Argo Rollouts
rollouts_detect_tool
rollouts_detect_tool()
列出所有发布
rollouts_list_tool
rollouts_list_tool(namespace)
获取发布状态
rollout_status_tool
rollout_status_tool(name, namespace)
升级发布
rollout_promote_tool
rollout_promote_tool(name, namespace)

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

- 期望/就绪副本数

undefined
undefined

Get 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

- 当前步骤

undefined
undefined

Check 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

undefined
undefined

Promote Rollout

升级发布

python
undefined
python
undefined

Promote 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)
undefined
rollout_promote_tool(name="my-rollout", namespace="default", full=True)
undefined

Abort Rollout

终止发布

python
rollout_abort_tool(name="my-rollout", namespace="default")
python
rollout_abort_tool(name="my-rollout", namespace="default")

Reverts to stable version

回滚到稳定版本

undefined
undefined

Retry Rollout

重试发布

python
rollout_retry_tool(name="my-rollout", namespace="default")
python
rollout_retry_tool(name="my-rollout", namespace="default")

Retry failed rollout

重试失败的发布

undefined
undefined

Restart 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

使用相同规格触发新的发布

undefined
undefined

Analysis Runs

分析运行

python
undefined
python
undefined

List 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

- 自定义任务

undefined
undefined

Create 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

- 流量权重

undefined
undefined

Get 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 issues
python
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 traffic
python
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 transient
python
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的流量管理