自動部署與 Rollback

Vibe Prompt

「幫我設計 Kubernetes 的零停機部署策略,包含 Rolling Update、Readiness Probe、Rollback。」

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    spec:
      containers:
      - name: app
        image: my-app:latest
        readinessProbe:
          httpGet:
            path: /api/health
            port: 3000
          initialDelaySeconds: 5
          periodSeconds: 10
        livenessProbe:
          httpGet:
            path: /api/health
            port: 3000
          initialDelaySeconds: 15
          periodSeconds: 20

Rollback 指令

# 查看部署歷史
kubectl rollout history deployment/my-app

# 回滾到上一個版本
kubectl rollout undo deployment/my-app

# 回滾到指定版本
kubectl rollout undo deployment/my-app --to-revision=2

# 查看滾動狀態
kubectl rollout status deployment/my-app

Vibe Prompt

「當部署失敗時,自動 Rollback 並發送 Slack 通知。幫我寫這個 GitHub Actions Workflow。」


關鍵要點

  • ✅ CI (持續整合) = 頻繁合併程式碼 + 自動建置 + 自動測試
  • ✅ CD (持續部署) = 通過測試的自動部署到生產環境
  • ✅ CI/CD Pipeline 的核心:Build → Test → Deploy
  • ✅ GitHub Actions + Docker = 最受歡迎的 CI/CD 組合
  • ✅ 好 CI/CD 的標準:快、可靠、可重現

關鍵指標

| 指標 | 目標 | 意義 | |------|:----:|------| | Pipeline 時間 | < 10 分鐘 | 開發者等待時間越短越好 | | 部署頻率 | 每天多次 | 越小批次的部署風險越低 | | 失敗恢復時間 | < 1 小時 | 出錯後能快速回退 | | 變更失敗率 | < 15% | 部署到生產後的故障率 |



部署與回滾策略

不同的部署策略

| 策略 | 說明 | 零停機 | 回滾速度 | |:----|:----|:------|:--------| | Rolling Update | 逐一更新實例 | ✅ 無停機 | 慢(逐一恢復) | | Blue/Green | 開新環境,切流量過去 | ✅ 無停機 | 瞬間(切回去) | | Canary | 少量使用者先測試新版本 | ✅ 無停機 | 瞬間 | | Recreate | 刪掉舊的,建新的 | ❌ 有停機 | 慢 |

Blue/Green 部署

# 部署步驟
1. 建立 Green 環境(新版本)
2. 對 Green 執行 Health Check
3. 切換 Load Balancer 指向 Green
4. 保留 Blue(舊版本)作為回滾備用
5. 確認沒問題後移除 Blue

回滾流程

# 快速回滾(Blue/Green 時)
kubectl rollout undo deployment/myapp
# 或切 Load Balancer 回到 Blue

# 重建回滾(無 Blue/Green)
git revert HEAD
git push origin main
# CI/CD 自動部署舊版本

下一章預告:完整 Pipeline

學會部署和回滾後,下一章整合所有步驟——建立一個從 commit 到 production 的完整 CI/CD Pipeline。

解鎖完整教學內容

本章為付費內容。加入專案即可解鎖超過 5000 字的深度解析,包含 10 個以上神級 Prompt 與真實 Source Code 範例!