devops-rollout-plan 是做什麼的?
生成完整的發布計畫,包含預檢檢查、逐步部署、驗證信號、回滾程序及基礎設施與應用變更的通報計畫。
功能
- 自動產生預檢檢查清單,確保發布環境就緒
- 提供逐步部署步驟,支援金絲雀發布或藍綠部署策略
- 內建驗證信號,可定義監控指標、端點健康檢查或日誌模式
- 包含回滾程序,指定觸發條件、回滾步驟與驗證方法
- 通報計畫範本,涵蓋利害關係人、時程與回滾通知
使用方式
# 範例:為服務升級產生發布計畫
github/devops-rollout-plan --service "api-gateway" --version "v2.1.0" --environment "staging"
輸入參數
| 參數 | 說明 | 範例 |
|---|---|---|
--service | 目標服務名稱 | api-gateway |
--version | 部署版本 | v2.1.0 |
--environment | 部署環境 | staging, production |
--rollback-strategy | 回滾策略 | immediate, gradual |
產出範例
發布計畫摘要
# 發布計畫:api-gateway v2.1.0 部署至 staging
## 預檢檢查
- [ ] 確認服務依賴項(資料庫、快取、佇列)皆為健康狀態
- [ ] 驗證 Docker 映像檔標籤 `api-gateway:v2.1.0` 存在於 Container Registry
- [ ] 確認 Kubernetes 叢集節點資源充足
- [ ] 檢查最後一次成功的 CI/CD 管線執行
## 逐步部署
1. 更新 Kubernetes Deployment 映像檔版本
2. 逐步增加新 Pod 副本數(先啟動 1 個 Pod 作為金絲雀)
3. 監控錯誤率與延遲指標,持續 5 分鐘
4. 若指標正常,逐步取代所有舊 Pod
5. 完成後執行端點冒煙測試
## 驗證信號
- HTTP 200 回應率 >= 99.9%
- P99 延遲 < 200ms
- 錯誤日誌數量未增加
## 回滾程序
- **觸發條件**:驗證信號失敗或異常警報觸發
- **步驟**:
1. 立即將 Deployment 映像檔版本還原為 `api-gateway:v2.0.0`
2. 確認所有 Pod 重新啟動並服務恢復正常
3. 通知團隊與持份者
- **驗證**:執行預檢檢查中的健康檢查腳本
## 通報計畫
- **部署開始前**:通知 Slack 頻道 `#deployments` 與 `#oncall`
- **部署完成後**:若成功,發送摘要至電子郵件群組 `[email protected]`
- **回滾啟動時**:立即呼叫 PagerDuty 並更新 Jira 工單
支援的平台
- AWS(ECS, EKS, Lambda)
- Kubernetes(K8s)
- 自託管 VM 或裸機
相依性
- 需要已安裝並設定
kubectl或aws-cli - 環境變數:
CLUSTER_NAME、CONTAINER_REGISTRY、SLACK_WEBHOOK_URL
貢獻
歡迎提交 Issue 或 Pull Request 以改善本技能。