Halaman ini menunjukkan cara memecah satu repositori root menjadi dua repositori root atau lebih dengan aman repositori root. Langkah-langkah tersebut juga dapat diterapkan ke repositori namespace.
Repositori yang disinkronkan oleh Config Sync mengacu pada kombinasi repositori Git, cabang, revisi, dan direktori.
Ketika ada sejumlah besar resource, misalnya lebih dari 5.000, di repositori root Anda, Config Sync mungkin berperilaku tidak baik karena dua alasan berikut:
- Objek ResourceGroup mungkin melebihi batas ukuran objek etcd. Objek ResourceGroup mencatat Group, Kind, Namespace, dan Name dari semua resource di repositori Git. Memiliki banyak resource akan menghasilkan objek ResourceGroup yang besar.
- Membutuhkan waktu yang lebih lama untuk menyinkronkan semua resource daripada repositori dengan jumlah resource yang lebih sedikit. Config Sync menerapkan resource ke cluster secara berurutan. Terkadang, resource tidak berhasil diterapkan pertama kali, dan Config Sync harus mencoba lagi menerapkannya.
Saat mengalami masalah ini, Anda dapat memecah repositori root dari satu menjadi beberapa sehingga setiap repositori root memiliki lebih sedikit sumber daya.
Memecah repositori root yang tidak terstruktur
Objek RootSync digunakan untuk menjelaskan langkah-langkahnya. Langkah-langkah tersebut juga bisa yang diterapkan ke objek RepoSync.
Asumsikan bahwa repositori root Anda disinkronkan oleh objek RootSync root-sync
.
Setelah dipecah, Anda memiliki dua repositori root. Yang pertama disinkronkan oleh
Objek RootSync root-sync
saat yang lain disinkronkan oleh
Objek RootSync root-split
.
Untuk memisahkan repositori, ikuti langkah-langkah berikut:
Di repositori root yang sudah ada, pilih resource bahwa Anda berencana untuk pindah ke repositori atau direktori lain dan menambahkan anotasi
configmanagement.gke.io/managed: disabled
kepadanya. Anotasi ini memastikan bahwa objek yang ada di cluster tidak terpengaruh saat Anda memindahkan konfigurasi mereka dari satu repositori ke repositori lain. Jika menggunakan format Kustomize atau diagram helm, Anda dapat memilih basis 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 yang ada
root-sync
disinkronkan dengan 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 Anda yang terdaftar.Siapkan repositori kedua Anda dengan mengikuti langkah-langkah berikut:
- Buat repositori baru atau direktori baru di repositori Git yang sudah ada.
- Menyalin resource dengan anotasi
configmanagement.gke.io/managed: disabled
ke dalam repositori baru atau direktori baru. - Hapus anotasi
configmanagement.gke.io/managed: disabled
di repositori atau direktori baru. - Jika Anda membagi repositori {i>root<i} Anda menjadi lebih dari 2 repositori, ulangi langkah-langkah ini jika diperlukan.
Commit dan kirim perubahan:
git commit -am 'add configuration for the new root repository'
Menerapkan objek RootSync
root-split
untuk menyinkronkan repositori atau direktori baru sehingga objek yang sudah ada di cluster akan dikelola oleh Objek RootSyncroot-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 untuk gunakan sebagai repositori {i>root<i} baru. Anda dapat memasukkan URL menggunakan HTTPS atau protokol SSH. Misalnya,https://github.com/GoogleCloudPlatform/anthos-config-management-samples
penggunaan di protokol HTTPS. Jika Anda tidak memasukkan protokol, URL akan diperlakukan sebagai URL HTTPS.NEW_ROOT_REVISION
: (Opsional) tambahkan revisi Git (tag atau hash) repositori {i>root<i} baru yang harus diperiksa.NEW_ROOT_BRANCH
: (Opsional) tambahkan cabang root baru repositori yang akan disinkronkan.NEW_ROOT_DIRECTORY
: (Opsional) tambahkan jalur di repositori Git ke direktori {i>root <i}baru yang berisi konfigurasi yang ingin Anda sinkronkan tempat mesin terhubung.ROOT_AUTH_TYPE
: ID ini harus sama dengan objek RootSync/root-sync yang ada.ROOT_EMAIL
: ID ini harus sama dengan yang sudah ada Objek RootSync/root-sync.
Tunggu hingga objek RootSync baru
root-split
disinkronkan. Hal ini dapat dilakukan menggunakangcloud alpha anthos config sync repo describe
berikut:$ 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 Anda yang terdaftar. repositori root telah 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 yang ada
root-sync
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 Anda yang terdaftar.
Memecah repositori root hierarkis
Langkah-langkah untuk memecah repositori hierarkis serupa dengan langkah-langkah langkah-langkah untuk memecah repositori yang tidak terstruktur.
Ada tiga perbedaan utama:
Repositori root baru (atau direktori baru) juga harus berbentuk hierarki. Anda harus menyalin direktori yang ada
system/
danclusterregistry/
direktori ke repositori root baru (atau direktori baru).Resource dalam namespace tidak dapat tersebar di beberapa repositori. Jika tidak, rekonsiliasi yang berbeda akan bertarung untuk mengelola namespace.
Objek RootSync
root-split
harus menggunakanspec.sourceFormat: hierarchical
.
Karena kami merekomendasikan repositori yang tidak terstruktur, Anda juga perlu mempertimbangkan mengonversi repositori hierarkis menjadi repositori tidak terstruktur sebelum Anda memecahnya.