使用非結構化存放區

使用非結構化存放區,可讓您以最方便的方式整理存放區。您可以運用這項彈性,將現有的 Kubernetes 設定同步至 Config Sync 存放區。舉例來說,如要將 Helm 圖表同步至叢集,可以執行 helm template 指令,並將算繪的資訊清單提交至存放區。詳情請參閱「搭配 Helm 使用 Config Sync」教學課程。

我們建議在多數情況下使用非結構化存放區。不過,您也可以建立階層式存放區,將設定分成不同類別。

限制

非結構化存放區有下列限制:

  • 您無法在非結構化存放區中使用 HierarchyConfig Kubernetes 物件。

  • 非結構化存放區不支援抽象命名空間

  • 如果使用 nomos vet 指令,請加入 --source-format=unstructured 旗標。例如:

    nomos vet --source-format=unstructured
    

命名空間範圍內的物件

您可以在非結構化存放區中宣告 NamespaceSelector。如要宣告 NamespaceSelector,請新增 metadata.namespaceNamespaceSelector 註解。同時宣告這兩個註解無效。如果命名空間範圍的資源未宣告 metadata.namespaceNamespaceSelector 註解,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 指令

如要手動轉換存放區,請按照下列操作說明完成:

  1. 從 Git 存放區中移除 system/ 目錄中的 Repo 設定。 非結構化存放區不需要 Repo 資源。

  2. 非結構化存放區不支援抽象命名空間目錄。因此,您必須宣告 namespaces/ 目錄及其子目錄中所有原始資源的命名空間。

  3. 非結構化存放區不支援命名空間繼承。因此,您必須在後代命名空間中宣告所有原本繼承的資源,也就是原本位於 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 目錄同步。

後續步驟