Halaman ini menunjukkan cara membagi satu repositori root menjadi dua atau lebih repositori root dengan aman. Langkah-langkah ini juga dapat diterapkan ke repositori namespace.
Repositori yang disinkronkan oleh Config Sync mengacu pada kombinasi repositori Git, cabang, revisi, dan direktori.
Jika ada banyak resource, misalnya lebih dari 5.000, di repositori root Anda, Config Sync mungkin tidak berperilaku baik karena dua alasan berikut:
- Objek ResourceGroup mungkin melebihi batas ukuran objek etcd. Objek ResourceGroup mencatat Grup, Jenis, Namespace, dan Nama semua resource di repositori Git. Memiliki banyak resource akan menghasilkan objek ResourceGroup yang besar.
- Perlu waktu lebih lama untuk menyinkronkan semua resource daripada repositori dengan jumlah resource yang lebih sedikit. Config Sync menerapkan resource secara berurutan ke cluster. Terkadang resource tidak dapat berhasil diterapkan untuk pertama kalinya, dan Config Sync harus mencoba menerapkannya lagi.
Jika mengalami masalah ini, Anda dapat memecah repositori root dari satu menjadi beberapa sehingga setiap repositori root memiliki lebih sedikit resource.
Membagi repositori root yang tidak terstruktur
Objek RootSync digunakan untuk menjelaskan langkah-langkahnya. Langkah-langkah ini juga dapat diterapkan ke objek RepoSync.
Asumsikan bahwa repositori root Anda disinkronkan oleh objek RootSync root-sync
.
Setelah memisahkannya, Anda memiliki dua repositori root. Satu disinkronkan oleh
objek RootSync root-sync
, sedangkan yang lainnya disinkronkan oleh
objek RootSync root-split
.
Untuk membagi repositori, ikuti langkah-langkah berikut:
Di repositori root yang ada, pilih resource yang ingin Anda pindahkan ke repositori atau direktori lain, lalu tambahkan anotasi
configmanagement.gke.io/managed: disabled
ke resource tersebut. Anotasi ini memastikan bahwa objek yang ada di cluster tidak terpengaruh saat Anda memindahkan konfigurasinya dari satu repositori ke repositori lain. Jika menggunakan format Kustomize atau diagram helm, Anda dapat memilih sekitar setengah dari dasar dan menambahkan anotasi umum ke filekustomization.yaml
, seperti dalam contoh ini:# kustomization.yaml commonAnnotations: configmanagement.gke.io/managed: disabled
Commit dan kirim perubahan:
git commit -am 'disable Config Sync management on subset of the configuration'
Tunggu hingga objek RootSync
root-sync
yang ada disinkronkan menggunakan perintahgcloud alpha anthos config sync repo describe
:# gcloud command gcloud alpha anthos config sync repo describe --cluster MEMBERSHIP_NAME \ --sync-namespace config-management-system --sync-name root-sync
Ganti
MEMBERSHIP_NAME
dengan nama keanggotaan cluster terdaftar Anda.Siapkan repositori kedua dengan mengikuti langkah-langkah berikut:
- Buat repositori baru atau direktori baru di repositori Git yang ada.
- Salin resource dengan anotasi
configmanagement.gke.io/managed: disabled
ke repositori baru atau direktori baru. - Hapus anotasi
configmanagement.gke.io/managed: disabled
di repositori atau direktori baru. - Jika Anda membagi repositori root menjadi lebih dari 2 repositori, ulangi langkah-langkah ini sesuai kebutuhan.
Commit dan kirim perubahan:
git commit -am 'add configuration for the new root repository'
Terapkan objek RootSync
root-split
untuk menyinkronkan repositori atau direktori baru sehingga objek yang ada di cluster akan dikelola oleh objek RootSync baruroot-split
.apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: root-split namespace: config-management-system spec: sourceFormat: unstructured git: repo: NEW_ROOT_REPOSITORY revision: NEW_ROOT_REVISION branch: NEW_ROOT_BRANCH dir: "NEW_ROOT_DIRECTORY" auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL # secretRef should be omitted if the auth type is none, gcenode, or gcpserviceaccount. secretRef: name: git-creds
Ganti kode berikut:
NEW_ROOT_REPOSITORY
: URL repositori Git yang akan digunakan sebagai repositori root baru. Anda dapat memasukkan URL menggunakan protokol HTTPS atau SSH. Misalnya,https://github.com/GoogleCloudPlatform/anthos-config-management-samples
menggunakan protokol HTTPS. Jika Anda tidak memasukkan protokol, URL akan diperlakukan sebagai URL HTTPS.NEW_ROOT_REVISION
: (Opsional) tambahkan revisi Git (tag atau hash) repositori root baru yang akan diperiksa.NEW_ROOT_BRANCH
: (Opsional) tambahkan cabang repositori root baru yang akan disinkronkan.NEW_ROOT_DIRECTORY
: (Opsional) tambahkan jalur di repositori Git ke direktori root baru yang berisi konfigurasi yang ingin Anda sinkronkan.ROOT_AUTH_TYPE
: Ini harus sama dengan objek RootSync/root-sync yang ada.ROOT_EMAIL
: Ini harus sama dengan objek RootSync/root-sync yang ada.
Tunggu hingga objek RootSync baru
root-split
disinkronkan. Hal ini dapat dilakukan menggunakan perintahgcloud alpha anthos config sync repo describe
:$ gcloud alpha anthos config sync repo describe --cluster MEMBERSHIP_NAME \ --sync-namespace config-management-system --sync-name root-split
Ganti
MEMBERSHIP_NAME
dengan nama keanggotaan cluster terdaftar Anda. root repositori disinkronkan.Hapus resource dengan anotasi
configmanagement.gke.io/managed: disabled
dari repositori asli. Commit dan kirim perubahan:git commit -am 'remove configuration managed by the new root repository'
Tunggu hingga objek RootSync
root-sync
yang ada disinkronkan menggunakan perintahgcloud
:$ gcloud alpha anthos config sync repo describe --cluster MEMBERSHIP_NAME \ --sync-namespace config-management-system --sync-name root-sync
Ganti
MEMBERSHIP_NAME
dengan nama keanggotaan cluster terdaftar Anda.
Memisahkan repositori root hierarkis
Langkah-langkah untuk membagi repositori hierarkis mirip dengan langkah-langkah untuk membagi repositori yang tidak terstruktur.
Ada tiga perbedaan utama:
Repositori root baru (atau direktori baru) juga harus hierarkis. Anda perlu menyalin direktori
system/
danclusterregistry/
yang ada ke repositori root baru (atau direktori baru).Resource dalam namespace tidak dapat tersebar di beberapa repositori. Jika tidak, berbagai rekonsiliator akan bersaing untuk mengelola namespace.
Objek RootSync
root-split
harus menggunakanspec.sourceFormat: hierarchical
.
Karena kami merekomendasikan repositori tidak terstruktur, Anda juga dapat mempertimbangkan untuk mengonversi repositori hierarkis menjadi repositori tidak terstruktur sebelum membaginya.