Release 在 Cloud Deploy 中是一個非常核心的概念,它代表了應用程式的一個特定版本及其部署相關設定檔的快照。
我以前也不懂為什麼會有 Cloud Deploy 這個東西,因為原本 DevOps 相關的工具已經夠多了,後來看到這個 Release 才懂,它的確有其必要性。
具體來說:
Release 的組成部分包含如下:
- 容器映像檔(Container image)
- 部署設定檔(如 Kubernetes 清單)
- 部署相關的中介資料(metadata)
- 環境特定的設定
Release 的特點:
- 不可變性(Immutable):一旦創建就不能修改
- 可追蹤性:每個 release 都有唯一的標識符
- 可重複使用:同一個 release 可以部署到不同環境
創建 Release 的方式:
gcloud deploy releases create release-001 \ --delivery-pipeline=my-pipeline \ --region=asia-east1 \ --source=/path/to/source
Release 的生命週期:
- 創建(Create):打包應用程式和配置
- 部署(Deploy):部署到目標環境
- 推進(Promote):將相同的 release 推進到下一個環境
Release 的優點:
- 確保一致性:相同的 release 在所有環境中保持一致
- 版本控制:每個 release 都有版本記錄
- 回滾能力:可以輕易回滾到之前的 release
- 稽核追蹤:可以追蹤每個 release 的部署歷史
Cloud Deploy Release 實際應用例子:
Release-001
├── 容器映像: gcr.io/my-project/my-app:v1.0.0
├── 部署配置:
│ ├── deployment.yaml
│ ├── service.yaml
│ └── configmap.yaml
└── 中繼數據:
├── 創建時間
├── 創建者
└── 描述信息
Cloud Deploy Release 與環境的關係:
- 開發(Dev)環境:初始部署和測試
- 暫存(Staging)環境:整合測試
- 生產(Production)環境:最終部署
每個環境可能需要不同的配置,但基礎映像和應用邏輯保持一致。
使用 Release 的好處
通過使用 release,團隊可以:
- 確保部署過程的可重複性
- 維護清晰的部署歷史
- 在問題發生時快速回滾 (Rollback)
- 實現更安全和可控的部署流程
這種方式最能保證部署的一致性和可靠性。