Penggunaan repositori tidak terstruktur memungkinkan Anda mengatur repositori dengan cara yang paling
nyaman untuk Anda. Dengan fleksibilitas ini, Anda dapat menyinkronkan Kubernetes yang sudah ada
ke repositori Config Sync Anda. Misalnya, jika Anda ingin menyinkronkan
Helm ke cluster Anda, Anda dapat menjalankan
Perintah helm template
dan commit manifes yang dirender ke repositori Anda. Untuk informasi selengkapnya,
baca artikel Menggunakan Config Sync dengan Helm
tutorial.
Repositori tidak terstruktur direkomendasikan untuk sebagian besar pengguna. Namun, Anda juga dapat membuat repositori hierarkis untuk konfigurasi terpisah menjadi kategori yang berbeda. Jika Anda ingin membuat hierarki tanpa mematuhi aturan repositori hierarkis, pertimbangkan untuk Pengontrol Hierarki.
Batasan
Repositori tidak terstruktur memiliki batasan berikut:
Anda tidak dapat menggunakan
Repo
atauHierarchyConfig
Objek Kubernetes dalam repositori yang 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 yang tidak terstruktur. Untuk mendeklarasikan
NamespaceSelector, tambahkan metadata.namespace
atau NamespaceSelector
anotasi. Mendeklarasikan kedua anotasi tidak valid. Jika cakupan namespace
resource tidak mendeklarasikan metadata.namespace
atau NamespaceSelector
, Config Sync akan menggunakan anotasi "default" namespace.
Untuk mempelajari lebih lanjut, lihat Membatasi namespace mana yang terpengaruh oleh konfigurasi.
Objek cakupan cluster
Dalam repositori yang tidak terstruktur, ClusterSelectors
berfungsi secara normal.
Mengonfigurasi repositori yang tidak terstruktur
Untuk mengonfigurasi repositori yang tidak terstruktur, tetapkan nilai spec.sourceFormat
ke
unstructured
di objek RootSync:
# 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
: menambahkan nama RootSync . Nama harus unik di cluster dan memiliki tidak lebih dari 26 karakter.SECRET_NAME
dengan nama Secret tersebut.
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. Di dalam
direktori tersebut, subdirektori dibuat untuk setiap cluster yang terdaftar,
konfigurasi yang sepenuhnya diselesaikan, dan setiap subdirektori dapat digunakan dalam
repositori resource.
Untuk mengetahui detail selengkapnya, lihat perintah nomos
.
Jika Anda lebih suka mengonversi repositori secara manual, selesaikan langkah-langkah berikut petunjuk:
Hapus konfigurasi
Repo
di direktorisystem/
dari repositori Git Anda. ResourceRepo
tidak diperlukan untuk repositori yang tidak terstruktur.Direktori namespace abstrak tidak didukung di repositori yang 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 yang tidak terstruktur. Oleh karena itu, Anda harus mendeklarasikan semua resource yang awalnya diwarisi di namespace turunan, yaitu satu yang berada di bawah direktori
namespaces/
.
Contoh format untuk repositori yang 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
. Anda dapat
menggunakan skrip atau {i>pipelines<i} otomatis untuk
merender konfigurasi mentah dan menyimpan
output di direktori manifests
. Jika Anda
mengonfigurasi Config Sync,
Anda akan mengonfigurasinya untuk
disinkronkan dari direktori manifests
Anda.
Langkah selanjutnya
- Membuat objek cakupan cluster
- Membuat objek cakupan namespace
- Menginstal Config Sync
- Mengonfigurasi sinkronisasi dari beberapa repositori