Hooks 與生命週期
🔥 Vibe Prompt
「新增 Helm hooks:安裝前資料庫遷移、安裝後通知、升級前備份。」
Hook 類型
apiVersion: batch/v1
kind: Job
metadata:
name: db-migrate
annotations:
"helm.sh/hook": pre-install,pre-upgrade
"helm.sh/hook-weight": "-5"
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
spec:
restartPolicy: Never
containers:
- name: migration
image: myapp:latest
command: ["npm", "run", "migrate"]
---
apiVersion: v1
kind: Pod
metadata:
name: notify
annotations:
"helm.sh/hook": post-install,post-upgrade
"helm.sh/hook-weight": "10"
spec:
restartPolicy: Never
containers:
- image: curlimages/curl
command: ["curl", "-X", "POST", "https://hooks.slack.com/..."]
Hook 執行順序(依權重)
-10 pre-install(備份)
-5 pre-install(遷移)
0 install(主要安裝)
5 post-install(驗證)
10 post-install(通知)
生命週期最佳實踐
| Hook | 用途 | |------|------| | pre-install | 資料庫建立、結構初始化 | | post-install | 通知、快取預熱 | | pre-upgrade | 備份、遷移 | | post-upgrade | 煙霧測試、回滾檢查 | | pre-delete | 快照、清理 | | post-delete | 通知 |
回滾安全
annotations:
"helm.sh/hook": pre-upgrade
"helm.sh/hook-delete-policy": before-hook-creation
完整生命週期
helm install → pre-install hooks → install → post-install hooks
helm upgrade → pre-upgrade hooks → upgrade → post-upgrade hooks
helm rollback →(重新執行 upgrade hooks)
helm delete → pre-delete hooks → delete → post-delete hooks
關鍵要點
- ✅ 請根據本章主題補充具體的學習重點
- ✅ 建議加入比較表格、程式碼範例或流程圖
Helm Hooks:在部署的關鍵時刻執行動作
Helm 的安裝、升級、解除安裝是一個生命週期。有時候你需要在特定時間點執行一些任務——這就是 Hooks 的用途。
最常見的 Hook 應用場景
| Hook 類型 | 觸發時機 | 用途 | |:---------|:--------|:----| | pre-install | 安裝前 | 建立資料庫、產生 Secret、驗證環境變數 | | post-install | 安裝後 | 初始化資料、傳送部署通知 | | pre-upgrade | 升級前 | 備份資料庫、檢查相容性 | | post-upgrade | 升級後 | 執行資料遷移(Migration) | | pre-delete | 解除安裝前 | 清理外部資源(例如 S3 Bucket) | | post-delete | 解除安裝後 | 發送刪除通知、清理監控 |
為什麼不用 Init Container?
Kubernetes 已經有 Init Container 了,為什麼還需要 Helm Hooks?
| 功能 | Init Container | Helm Hook | |:----|:-------------:|:---------:| | 在部署前執行 | ❌ | ✅ pre-install | | 在解除安裝時執行 | ❌ | ✅ pre-delete | | 與 Helm Release 狀態整合 | ❌ | ✅ Hook 失敗則安裝失敗 | | 權限管理 | Pod 層級 | 可使用不同的 Service Account |
簡單說:Init Container 管理的是 Pod 的生命週期,Helm Hook 管理的是 Release 的生命週期。
下一章預告:安全性與最佳實踐
這是 Helm 課程的最後一章實戰內容。你會學到如何保護你的 Helm Chart——簽署 Chart 確保完整性、設定 RBAC 讓不同團隊只能操作自己的 Release、以及用 CI/CD 自動化 Chart 的測試與發布。