本頁說明如何新增及整理儲存在單一事實來源中的設定。
關於設定
Config Sync 專為管理多個叢集的叢集操作人員而設計。只要您允許 Config Sync 管理您所有叢集上的命名空間、角色、RoleBinding、ResourceQuota,以及其他重要的 Kubernetes 物件,就能確保這些叢集符合商業和法規遵循的標準。
Config Sync 管理這些資源時,會利用「設定」讓註冊完成的叢集保持同步。設定是指儲存在可靠來源中的 YAML 或 JSON 檔案。Config Sync 支援 Git 存放區、OCI 映像檔和 Helm 資訊套件做為可靠來源。設定包含的設定詳細資料類型,與您可利用 kubectl apply
指令手動套用到叢集的設定詳細資料類型相同。您可以為叢集中的任何 Kubernetes 物件建立設定。不過,部分 Kubernetes 物件 (例如 Secret) 包含可能不適合儲存在真實資訊來源中的機密資訊。當您考慮是否要使用 Config Sync 管理這類物件時,請將這一點列入考量。
您也可以搭配使用 Config Sync 和 Config Connector,同步處理 Google Cloud 資源的設定。如要進一步瞭解如何使用 Config Connector,請參閱使用 Config Connector 管理 Google Cloud 資源。您也可以設定 Config Controller,簡化 Config Sync 和 Config Connector 的安裝程序。
限制
部分 Kubernetes 資源包含不可變更的欄位,例如 Deployment 物件中的 Pod 選取器。您無法透過變更資料來源中的值,變更設定中的任何不可變更欄位。嘗試進行這類變更會導致
KNV2009
錯誤。如要變更不可變更的欄位,請從真實來源刪除物件,等待 Config Sync 從叢集刪除物件,然後在真實來源中重新建立物件並更新。如果您使用 Git 子模組,則必須授予 Config Sync 存取權給所有存放區,包括任何子模組。
您無法使用 Config Sync 直接管理內建的 Kubernetes ClusterRole。GKE 內建一些使用者角色,例如
cluster-admin
、admin
、edit
和view
。您無法直接使用 Config Sync 管理這些 ClusterRole,否則 Config Sync 會與 GKE 發生衝突。如要將權限新增至內建的 ClusterRole,請使用角色彙整間接修改。如要修改角色,請在可靠來源中建立具有適當註解的 ClusterRole,並為其命名。
選取設定的整理方式
Config Sync 會使用可靠來源來儲存設定和進行版本控管。 您可以選擇兩種不同格式做為單一事實來源:非結構化和階層式。
非結構化來源格式可讓您以最方便的方式整理設定。如果您使用 Kustomize、kpt 或 Helm 等工具整理或產生設定,這個格式就特別實用。如需設定的整理方式範例,請參閱「非結構化存放區的格式範例」。
階層式或結構化來源格式會將設定分成不同類別,方便您整理設定。這些類別包括系統設定、叢集中繼資料、叢集層級設定和命名空間設定。如要進一步瞭解階層式來源格式,請參閱「階層式存放區結構」。
建議大多數使用者採用非結構化格式。此外,設定 RepoSync 物件時,必須使用非結構化來源格式。
支援非結構化和階層式格式的功能
下表重點列出非結構化和階層式格式之間的差異:
功能 | 非結構化格式 (建議) | 階層式格式 |
---|---|---|
做為 RootSync 物件的格式或中央可靠資料來源 | 支援 | 支援 |
做為 RepoSync 物件的格式 | 支援 | 不支援 |
ClusterSelector |
支援 | 支援 |
NamespaceSelector |
支援 | 支援 |
nomos hydrate 指令 |
支援 --source-format=unstructured 標記 |
支援 |
nomos init 指令 |
不支援 | 支援 |
nomos vet 指令 |
支援 --source-format=unstructured 標記 |
支援 |
所有其他 nomos 指令 |
支援 | 支援 |
抽象命名空間 | 不支援 | 支援 |
Repo 個物件 |
不支援 | 支援 |
HierarchyConfig 個物件 |
不支援 | 支援 |
何時將設定新增至來源
如果您要建立非結構化格式,建立完成後即可開始新增設定。如要建立階層式格式,請使用 nomos init
指令初始化單一事實來源,或手動建立目錄結構。
空目錄無法提交至 Git 存放區,因此您必須先建立設定並新增至存放區,才能設定 Config Sync。
建立單一事實來源並在其中新增設定後,請使用 nomos vet
指令驗證單一事實來源的結構,並檢查設定的語法和有效性。
設定 Config Sync 從可靠來源讀取資料
建立可靠資料來源並將設定放入其中後,即可設定 Config Sync 從該來源讀取資料。完成這個步驟後,Config Sync 會將設定從可靠來源同步至叢集。
您必須在安裝 Config Sync 時設定可靠來源的位置,但可稍後再編輯 Config Sync 的設定。除了可靠來源的位置,如果來源含有設定以外的內容,您也可以指定要監看的 branch 或子目錄。
如果您使用階層式格式,並透過 kubectl
手動安裝 Config Sync,請勿將 Operator 的設定放在 system/
目錄,或任何其他保留目錄 (例如 cluster/
或 namespaces/
)。將設定放在保留目錄中會導致 nomos vet
失敗,並記錄錯誤,例如 KNV1033: IllegalSystemResourcePlacementError、KNV1038: IllegalKindInNamespacesError 或 KNV1039: IllegalKindInClusterError。
您可以授權使用者存取特定產品團隊的部署資訊來源。不過,當您授予使用者部署作業的可靠資料來源存取權時,系統也會授予該使用者與為該可靠資料來源執行的協調器相同的 RBAC。
如要設定 Config Sync 與可靠來源之間的驗證和授權,請參閱安裝步驟中設定 git-creds
Secret 的部分。
忽略物件突變
如果您不希望 Config Sync 在物件存在於叢集後維護物件的狀態,可以將 client.lifecycle.config.k8s.io/mutation: ignore
註解新增至要讓 Config Sync 忽略變動的物件。
如要使用註解,必須啟用 RootSync 和 RepoSync API。
以下範例說明如何將註解新增至物件:
metadata:
annotations:
client.lifecycle.config.k8s.io/mutation: ignore
您無法手動修改叢集中代管物件的註解。
後續步驟
- 瞭解如何管理命名空間和命名空間範圍內的物件。
- 如要瞭解如何發布 OCI 映像檔,請參閱「從 Artifact Registry 同步處理 OCI 構件」。
- 如要瞭解如何從 Helm 資訊套件同步,請參閱「從 Artifact Registry 同步處理 Helm 資訊套件」。