本頁面說明如何將 Git 設定從 ConfigManagement 物件遷移至 RootSync 物件。遷移作業會啟用 RootSync 和 RepoSync API,讓您使用其他功能:
- 從多個可靠資料來源同步處理
- 使用 Config Sync 資訊主頁
- 使用 Cloud Monitoring、Prometheus 或自訂監控系統監控 Config Sync
- 轉譯 Kustomize 設定和 Helm 圖表
- 從 Artifact Registry 同步處理 OCI 構件
- 從 Artifact Registry 同步處理 Helm 資訊套件
- 覆寫系統值,例如變更資源限制和更新要擷取的 Git 提交次數
即使您只想使用根存放區,不想使用任何命名空間存放區,也可以啟用這些 API。
遷移 ConfigManagement 設定
如果搭配使用 RootSync 和 spec.enableLegacyFields,請按照操作說明停止使用舊版欄位。
如果您的 ConfigManagement 物件使用 spec.git,但 spec.enableMultiRepo
設為 false,請按照操作說明遷移至 RootSync。
停止使用舊版欄位
Config Sync 不支援「spec.enableLegacyFields」欄位。如果出現這個欄位,就會導致錯誤。
如果您使用較舊版本的 Config Sync,且指定了這個欄位,請完成下列步驟來移除舊版欄位:
在 ConfigManagement 物件中,移除
spec.enableLegacyFields和spec.git欄位。ConfigManagement 物件應如下所示:# config-management.yaml apiVersion: configmanagement.gke.io/v1 kind: ConfigManagement metadata: name: config-management spec: enableMultiRepo: true套用變更:
kubectl apply -f config-management.yaml
舊版欄位現已停用,但不會影響從 ConfigManagement 物件的 spec.git 欄位產生的 RootSync 物件。遷移作業已完成,您現在可以直接使用 RootSync 物件中的 Git 欄位。
遷移至 RootSync
如果 ConfigManagement 物件使用 spec.git,但 spec.enableMultiRepo 設為 false,請按照本指南啟用 RootSync 和 RepoSync API。
使用 nomos migrate
從 1.10.0 版開始,nomos 提供 nomos migrate 指令,可啟用 RootSync 和 RepoSync API。您需要更新
nomos至 1.10.0 以上版本。
如要進一步瞭解如何執行指令,請參閱「從 ConfigManagement 物件遷移至 RootSync 物件」。請確認 ConfigManagement 物件未簽入真實來源,且由 Config Sync 管理。如果是,請按照「手動遷移」一文的步驟,在可靠來源中修改 ConfigManagement 物件。
手動遷移
如果 nomos 版本低於 1.10.0,可以手動遷移設定。您需要在 ConfigManagement 物件中將 spec.enableMultiRepo 設為 true,並建立 RootSync 物件,將根存放區同步至叢集。
如要透過遷移設定來設定根存放區,請完成下列工作:
- 開啟 ConfigManagement 物件。
- 複製
spec.git欄位中的值。建立 RootSync 物件時,您會使用這些值。 - 從 ConfigManagement 物件中移除所有
spec.git欄位 (包括git:)。 在 ConfigManagement 物件中,將
spec.enableMultiRepo欄位設為true:# config-management.yaml apiVersion: configmanagement.gke.io/v1 kind: ConfigManagement metadata: name: config-management spec: enableMultiRepo: true套用變更:
kubectl apply -f config-management.yaml等待 RootSync CRD 建立完成。
kubectl wait --for=condition=established crd rootsyncs.configsync.gke.io使用從 ConfigManagement 物件複製的值,建立 RootSync 物件。例如:
# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: root-sync namespace: config-management-system spec: sourceFormat: unstructured git: repo: ROOT_REPOSITORY revision: ROOT_REVISION branch: ROOT_BRANCH dir: "ROOT_DIRECTORY" auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL # secretRef should be omitted if the auth type is none, gcenode, or gcpserviceaccount. secretRef: name: git-creds更改下列內容:
ROOT_REPOSITORY:新增要做為根存放區的 Git 存放區網址。您可以輸入使用 HTTPS 或 SSH 通訊協定的網址。舉例來說,https://github.com/GoogleCloudPlatform/anthos-config-management-samples使用 HTTPS 通訊協定。如果未輸入通訊協定,系統會將網址視為 HTTPS 網址。這是必填欄位。ROOT_REVISION:新增要取出的 Git 修訂版本 (標記或雜湊)。這個欄位為選填,預設值為HEAD。ROOT_BRANCH:新增要用來當做同步處理來源的存放區分支版本。這個欄位為選填,預設值為master。ROOT_DIRECTORY:將 Git 存放區中的路徑新增至包含要同步處理設定的根目錄。這個欄位為選填,預設值為存放區的根目錄 (/)。ROOT_AUTH_TYPE:新增下列其中一種驗證類型:none:不使用驗證ssh:使用安全殼層金鑰組cookiefile:使用cookiefiletoken:使用權杖gcpserviceaccount:使用 Google 服務帳戶存取 Cloud Source Repositories 中的存放區。gcenode:使用 Google 服務帳戶存取 Cloud Source Repositories 中的存放區。只有在叢集未啟用 GKE 的工作負載身分聯盟時,才選取這個選項。如要進一步瞭解這些驗證類型,請參閱授予 Config Sync 對 Git 的唯讀存取權。
這是必填欄位。
ROOT_EMAIL:如果您已將gcpserviceaccount新增為ROOT_AUTH_TYPE,請新增 Google 服務帳戶電子郵件地址。例如:acm@PROJECT_ID.iam.gserviceaccount.com。
套用變更:
kubectl apply -f root-sync.yaml
ConfigManagement 和 RootSync 比較表
下表概述 ConfigMangent 物件中的欄位如何對應至 RootSync 物件中的欄位。
| ConfigManagement 欄位 | RootSync 欄位 |
|---|---|
spec.git.gcpServiceAccountEmail |
spec.git.gcpServiceAccountEmail |
spec.git.syncRepo |
spec.git.repo |
spec.git.syncBranch |
spec.git.branch |
spec.git.policyDir |
spec.git.dir |
spec.git.syncWait |
spec.git.period |
spec.git.syncRev |
spec.git.revision |
spec.git.secretType |
spec.git.auth |
git-creds (這是 ConfigManagement 物件中的固定值) |
spec.git.secretRef.name |
spec.sourceFormat |
spec.sourceFormat |
spec.git.proxy.httpProxy 或 spec.git.proxy.httpsProxy
|
spec.git.proxy |