Menggunakan repositori tak terstruktur

Dengan menggunakan repositori tidak terstruktur, Anda dapat mengatur repositori dengan cara yang paling sesuai untuk Anda. Fleksibilitas ini memungkinkan Anda menyinkronkan konfigurasi Kubernetes yang ada ke repositori Config Sync. Misalnya, jika ingin menyinkronkan diagram Helm ke cluster, Anda dapat menjalankan perintah helm template dan melakukan commit manifes yang dirender ke repositori. Untuk informasi selengkapnya, lihat tutorial Menggunakan Config Sync dengan Helm.

Sebaiknya gunakan repositori tidak terstruktur untuk sebagian besar kasus penggunaan. Namun, Anda juga dapat membuat repositori hierarkis untuk memisahkan konfigurasi ke dalam kategori yang berbeda.

Batasan

Repositori tidak terstruktur memiliki batasan berikut:

  • Anda tidak dapat menggunakan objek Kubernetes HierarchyConfig di repositori tidak terstruktur.

  • Namespace abstrak tidak didukung di repositori tidak terstruktur.

  • Jika Anda menggunakan perintah nomos vet, tambahkan flag --source-format=unstructured. Contoh:

    nomos vet --source-format=unstructured
    

Objek cakupan namespace

Anda dapat mendeklarasikan NamespaceSelectors di repositori tidak terstruktur. Untuk mendeklarasikan NamespaceSelector, tambahkan anotasi metadata.namespace atau NamespaceSelector. Mendeklarasikan kedua anotasi tidak valid. Jika resource cakupan namespace tidak mendeklarasikan anotasi metadata.namespace atau NamespaceSelector, Config Sync akan menggunakan namespace "default" cluster. Untuk mempelajari lebih lanjut, lihat Membatasi namespace yang terpengaruh konfigurasi.

Objek cakupan cluster

Dalam repositori tidak terstruktur, ClusterSelectors berfungsi secara normal.

Mengonfigurasi repositori tak terstruktur

Untuk mengonfigurasi repositori tidak terstruktur, tetapkan nilai spec.sourceFormat ke unstructured di objek RootSync Anda:

  # 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

Ganti kode berikut:

  • ROOT_SYNC_NAME: tambahkan nama objek RootSync Anda. Nama harus unik di cluster dan tidak boleh lebih dari 26 karakter.
  • SECRET_NAME dengan nama Secret.

Mengonversi repositori hierarkis menjadi repositori tidak terstruktur

Jika Anda menggunakan repositori hierarkis dan ingin mengonversinya menjadi repositori tidak terstruktur, di repositori, jalankan:

nomos hydrate PATH

Ganti PATH dengan jalur ke direktori Anda.

Perintah ini membuat direktori compiled/ di direktori kerja saat ini. Dalam direktori tersebut, subdirektori dibuat untuk setiap cluster yang terdaftar, dengan konfigurasi yang di-resolve sepenuhnya, dan setiap subdirektori dapat digunakan dalam repositori yang tidak terstruktur.

Untuk mengetahui detail selengkapnya, lihat perintah nomos.

Jika Anda lebih suka mengonversi repositori secara manual, selesaikan petunjuk berikut:

  1. Hapus konfigurasi Repo di direktori system/ dari repositori Git Anda. Resource Repo tidak diperlukan untuk repositori yang tidak terstruktur.

  2. Direktori namespace abstrak tidak didukung di repositori tidak terstruktur. Oleh karena itu, Anda harus mendeklarasikan namespace semua resource yang awalnya disertakan dalam direktori namespaces/ dan subdirektorinya.

  3. Pewarisan namespace tidak didukung di repositori tidak terstruktur. Oleh karena itu, Anda harus mendeklarasikan semua resource yang awalnya diwarisi di namespace turunan, yaitu resource yang awalnya berada di direktori namespaces/.

Contoh format untuk repositori tidak terstruktur

Contoh berikut menunjukkan cara mengatur konfigurasi (termasuk resource Google Cloud) di repositori tidak terstruktur:

├── 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

Dalam contoh ini, konfigurasi mentah berada di direktori raw-configs. Kemudian, Anda dapat menggunakan skrip atau pipeline otomatis untuk merender konfigurasi mentah dan menyimpan output di direktori manifests. Saat mengonfigurasi Config Sync, Anda akan mengonfigurasinya untuk menyinkronkan dari direktori manifests.

Langkah selanjutnya