本頁面說明如何將 Config Connector 資源從一個 Config Controller 叢集遷移至另一個叢集。如果主要 Config Controller 叢集發生故障且需要更換,或是您需要變更不可變更的叢集設定,可能就需要遷移資源。
本頁面使用下列術語:
- 來源叢集:內含需要遷移的 Config Connector 資源的叢集。
- 目的地叢集:要將資源遷移至的叢集。
建議
- 在正式環境中進行變更前,請先在測試環境中完成下列步驟。
- 如要遷移多個 Config Controller 叢集,請分別遷移每個叢集,並從最不重要的叢集開始。
- 如果 Config Sync 叢集從多個可靠來源同步處理,請一次從每個來源遷移所有資源。
各種情境的遷移步驟
遷移所有資源
如要遷移所有資源,請完成下列步驟:
建立目的地叢集。
停止將變更推送至來源叢集設定為同步的真實來源。Config Sync 應繼續從真實資訊來源同步處理資料。您只需要停止來源叢集同步處理的變更。
請確認叢集已同步處理最近對可靠來源所做的任何變更,且來源叢集中的所有資源都是最新版本。
如果部分資源發生錯誤,您可能需要個別分析這些資源。如果資源因發生錯誤而尚未建立,系統稍後會使用在目的地叢集中執行的 Config Connector 建立資源。通常可以忽略這些錯誤。不過,對於大多數錯誤,您應先找出根本原因並加以修正,再嘗試遷移。
在目的地叢集中設定 Config Sync,從來源叢集設定的相同可靠來源讀取資料。如果設定了多個同步作業,要從多個真實來源同步處理資料,請針對每個同步作業執行這項操作。
使用
nomos status
指令,確保目標叢集已從可靠資料來源同步所有資源。資源同步完成後,請從來源叢集移除 RootSync 或 RepoSync。
完成各個事實來源的遷移作業後,請刪除來源 Config Controller 叢集。
遷移部分資源
如要遷移部分資源,請完成下列步驟:
完成前一節「遷移所有資源」中的步驟 1 至 6。
使用
cnrm.cloud.google.com/deletion-policy: abandon
註解,為要遷移至目的地叢集的資源加上註解。當 Config Connector 資源從 Config Controller 叢集刪除時,這項註解可防止 Config Connector 刪除基礎資源。從來源叢集中刪除標示為已捨棄的資源。如要成功刪除,請務必先從真實現源中移除這些資源,再繼續執行 Config Sync。
將這些資源移至其他可靠資料來源,或移至同一可靠資料來源中的其他資料夾。
設定目的地叢集,從您將資源移至的位置進行同步。目標叢集現在可以取得這些資源,並開始管理。
遷移個別資源
如果無法刪除 Config Controller 叢集 (例如只將部分資源遷移至其他叢集時),可以刪除個別資源。如要刪除個別資源,請停用 Config Sync,然後在需要刪除的個別資源上設定 cnrm.cloud.google.com/deletion-policy: abandon
註解。
遷移具有服務產生的 resourceID
的資源
如果資源未明確提供 resourceID
欄位,則其他 Config Connector 執行個體在取得資源時,不需要指定 resourceID
。不過,部分資源的資源 ID 是由服務產生,因此需要額外步驟。即使 resourceID
是服務產生,仍須提供,才能從另一個 Config Connector 執行個體取得這些資源。對於這些資源,應先將 resourceID
新增至真實來源,再嘗試從目的地叢集取得資源。
使用衝突預防政策遷移資源
根據預設,資源的衝突預防政策會關閉。如要在資源上啟用這項功能,請設定下列註解:
cnrm.cloud.google.com/management-conflict-prevention-policy: "resource"
設定完成後,Config Connector 必須先取得基礎資源的租約,才能對其進行任何變更。這表示目的地叢集無法立即取得租約,因為租約是由來源叢集中的 Config Connector 持有。租約效期為 40 分鐘。不過,20 分鐘後,Config Connector 會主動嘗試續租。因此,如果來源叢集中的 Config Connector 運作正常,目的地叢集就無法取得租約。來源叢集必須先釋出租約,目的地叢集才能取得租約。如要達成這個目標,可以刪除來源叢集,或刪除來源叢集中的資源。
來源叢集釋出租約後,目的地叢集就能取得租約。目的地叢集最多會在 40 分鐘後取得租約,並開始管理資源。在目標叢集取得租約前,請勿變更 Config Connector 資源。