Penggunaan repositori tidak terstruktur memungkinkan Anda mengatur repositori dengan cara yang paling
aman bagi Anda. Fleksibilitas ini memungkinkan Anda menyinkronkan konfigurasi Kubernetes yang ada ke repositori Config Sync Anda. Misalnya, jika ingin menyinkronkan diagram Helm ke cluster, Anda dapat menjalankan perintah helm template
dan meng-commit manifes yang dirender ke repositori Anda. Untuk mengetahui informasi selengkapnya,
lihat tutorial Menggunakan Config Sync dengan Helm.
Repositori tidak terstruktur direkomendasikan untuk sebagian besar pengguna. Namun, Anda juga dapat membuat repositori hierarkis untuk memisahkan konfigurasi ke dalam kategori yang berbeda. Jika Anda ingin membuat kebijakan hierarkis tanpa mematuhi aturan repositori hierarkis, sebaiknya gunakan Pengontrol Hierarki.
Batasan
Repositori yang tidak terstruktur memiliki batasan berikut:
Anda tidak dapat menggunakan objek Kubernetes
Repo
atauHierarchyConfig
di repositori tidak terstruktur.Namespace abstrak tidak didukung di repositori yang 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 dalam 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 oleh konfigurasi.
Objek cakupan cluster
Di repositori tidak terstruktur, ClusterSelectors
berfungsi secara normal.
Mengonfigurasi repositori tidak terstruktur
Untuk mengonfigurasi repositori tidak terstruktur, tetapkan nilai spec.sourceFormat
ke
unstructured
dalam 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. Nama dalam cluster harus unik dan tidak 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 Anda, jalankan:
nomos hydrate PATH
Ganti PATH
dengan jalur ke direktori Anda.
Perintah ini akan membuat direktori compiled/
di direktori kerja saat ini. Dalam
direktori tersebut, subdirektori akan dibuat untuk setiap cluster yang terdaftar, dengan
konfigurasi yang telah diselesaikan 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:
Hapus konfigurasi
Repo
di direktorisystem/
dari repositori Git Anda. ResourceRepo
tidak diperlukan untuk repositori yang tidak terstruktur.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.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 dalam direktori
namespaces/
.
Contoh format untuk repositori tidak terstruktur
Contoh berikut menunjukkan cara mengatur konfigurasi (termasuk resource Google Cloud) di repositori yang 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
. Selanjutnya, Anda dapat menggunakan skrip atau pipeline otomatis untuk merender konfigurasi mentah dan menyimpan output di direktori manifests
. Saat mengonfigurasi Config Sync, Anda harus mengonfigurasinya agar disinkronkan dari direktori manifests
.
Langkah selanjutnya
- Membuat objek cakupan cluster
- Membuat objek cakupan namespace
- Menginstal Config Sync
- Mengonfigurasi sinkronisasi dari beberapa repositori