Helm 操作與 Argo CD 遷移

最後更新: 2021-11-05 13:57:33 +0800 +0800
原文以英文撰寫。您正在閱讀AI翻譯版本。

將靜態 Kubernetes 清單移至 Helm,再移至 Argo CD,不只是範本化,也會改變所有權。請盤點執行中的資源、保留不可變更的名稱與儲存體,並在啟用自動修剪前,讓期望狀態可重現。

了解 Helm 的發布模型 #

對直接 Helm 發布而言,升級會比較先前的發布清單、新產生的清單與執行中的物件。兩份清單都存在的資源會在其欄位允許時更新;只存在於新清單的資源會建立;從 chart 移除的資源通常會刪除。不可變更的欄位可能需要明確的取代策略。

sh
helm upgrade --install web ./chart \
  --namespace web --create-namespace \
  --values environments/production.yaml \
  --dry-run --debug

工具鏈已有 helm diff 時請使用它,並在升級後檢查 helm get manifest 與 helm history。helm.sh/resource-policy: keep 註解可以在解除安裝期間保留資源,但它應是刻意的生命週期決策,而不是一般性的安全措施。

漸進式遷移靜態清單 #

首先,從原始碼控制擷取實際的期望規格,並與執行中的物件比較。將真正的環境差異參數化,例如映像版本、主機名稱、資源限制與儲存類別,而不是將每個欄位都參數化。產生 chart,並與現有資源比較。

首次遷移期間,請維持穩定的 metadata.name、命名空間、選取器與持久性磁碟區宣告名稱。變更選取器可能使 Pod 失去管理;變更 PVC 名稱會建立新的宣告,且不會搬移資料。對具狀態工作負載而言,在非正式環境叢集進行任何所有權轉移前,先演練備份、還原與復原程序。

安全地交接至 Argo CD #

當 Argo CD 產生 Helm chart 時,避免對相同資源執行個別的 helm upgrade。設定 Application、驗證產生的清單與差異、先在不修剪的情況下同步,只有在應用程式健康且範圍內沒有不相關資源後,才啟用修剪。

若要重新命名資源,或相依性圖具有刪除防護,請使用分階段遷移:

  1. 新增新資源,同時保留舊資源;
  2. 更新取用者並等待健康檢查;
  3. 移除舊的相依資源;
  4. 在後續同步中移除舊的父資源。

Argo CD 同步波次可以排列一般套用與修剪的順序,但當涉及資料遷移、准入 Webhook 或外部用戶端時,分階段變更更清楚。

評論

在 GitHub 上閱讀或評論(發表評論需要登入)