使用非結構化存放區,可讓您以最方便的方式整理存放區。您可以運用這項彈性,將現有的 Kubernetes 設定同步至 Config Sync 存放區。舉例來說,如要將 Helm 圖表同步至叢集,可以執行 helm template
指令,並將算繪的資訊清單提交至存放區。詳情請參閱「搭配 Helm 使用 Config Sync」教學課程。
我們建議在多數情況下使用非結構化存放區。不過,您也可以建立階層式存放區,將設定分成不同類別。
限制
非結構化存放區有下列限制:
您無法在非結構化存放區中使用
HierarchyConfig
Kubernetes 物件。非結構化存放區不支援抽象命名空間。
如果使用
nomos vet
指令,請加入--source-format=unstructured
旗標。例如:nomos vet --source-format=unstructured
命名空間範圍內的物件
您可以在非結構化存放區中宣告 NamespaceSelector。如要宣告 NamespaceSelector,請新增 metadata.namespace
或 NamespaceSelector
註解。同時宣告這兩個註解無效。如果命名空間範圍的資源未宣告 metadata.namespace
或 NamespaceSelector
註解,Config Sync 會使用叢集的「預設」命名空間。詳情請參閱「限制會受到設定影響的命名空間」。
叢集範圍內的物件
在非結構化存放區中,ClusterSelectors
函式通常會正常運作。
設定非結構化存放區
如要設定非結構化存放區,請在 RootSync 物件中將 spec.sourceFormat
的值設為 unstructured
:
# root-sync.yaml
apiVersion: configsync.gke.io/v1beta1
kind: RootSync
metadata:
name: ROOT_SYNC_NAME
namespace: config-management-system
spec:
sourceFormat: unstructured
git:
repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
branch: main
dir: config-sync-quickstart/multirepo/root
auth: ssh
secretRef:
name: SECRET_NAME
更改下列內容:
ROOT_SYNC_NAME
:新增 RootSync 物件的名稱。名稱在叢集中不得重複,且不得超過 26 個字元。- 將
SECRET_NAME
替換為 Secret 的名稱。
將階層式存放區轉換為非結構化存放區
如果您使用階層式存放區,並想將其轉換為非結構化存放區,請在存放區中執行下列指令:
nomos hydrate PATH
將 PATH
替換為目錄路徑。
這個指令會在目前的工作目錄中建立 compiled/
目錄。在該目錄中,系統會為每個已註冊的叢集建立子目錄,並完全解析設定,每個子目錄都可用於非結構化存放區。
詳情請參閱 nomos
指令。
如要手動轉換存放區,請按照下列操作說明完成:
從 Git 存放區中移除
system/
目錄中的Repo
設定。 非結構化存放區不需要Repo
資源。非結構化存放區不支援抽象命名空間目錄。因此,您必須宣告
namespaces/
目錄及其子目錄中所有原始資源的命名空間。非結構化存放區不支援命名空間繼承。因此,您必須在後代命名空間中宣告所有原本繼承的資源,也就是原本位於
namespaces/
目錄下的資源。
非結構化存放區的格式範例
以下範例說明如何在非結構化存放區中整理設定 (包括 Google Cloud 資源):
├── manifests
│ ├── access-control
│ │ ├── ...
│ ├── change-control
│ │ ├── ...
│ ├── git-ops
│ │ └── ...
│ ├── logging-monitoring
│ │ └── ...
│ ├── networking
│ │ └── ...
│ ├── project-factory
│ │ └── ...
│ └── resource-hierarchy
│ │ └── ...
├── raw-configs
│ ├── access-control
│ │ └── ...
│ ├── change-control
│ │ └── ...
│ ├── git-ops
│ │ └── ...
│ ├── logging-monitoring
│ │ └── ...
│ ├── networking
│ │ └── ...
│ ├── project-factory
│ │ └── ...
│ └── resource-hierarchy
│ │ └── ...
└── scripts
└── render.sh
在本範例中,原始設定位於 raw-configs
目錄。然後,您可以使用指令碼或自動化管道轉譯原始設定,並將輸出內容儲存在 manifests
目錄中。設定 Config Sync 時,您會將其設定為從 manifests
目錄同步。