Halaman ini memperkenalkan arsitektur Config Sync. Mempelajari komponen yang dibuat oleh Config Sync dapat memberi Anda pemahaman yang lebih mendalam tentang Config Sync dan dapat membantu Anda melakukan debug dan memperbaiki masalah yang dihadapi.
Diagram berikut menunjukkan arsitektur Config Sync dan resource terkaitnya di cluster edisi Google Kubernetes Engine (GKE) Enterprise:
Dalam diagram ini, pengguna membuat sumber tepercaya dan menginstal Config Sync menggunakan Feature Manager.
Ada beberapa langkah untuk menginstal Config Sync, dan setiap langkah berikut ini akan men-deploy komponen tambahan pada cluster Anda:
Mengaktifkan Config Sync pada cluster Anda akan menambahkan komponen berikut:
- Operator ConfigManagement dalam Deployment bernama
config-management-operator
. - Definisi resource kustom (CRD)
ConfigManagement
dan objek bernamaconfig-management
. - Pengelola Rekonsiler di Deployment yang bernama
reconciler-manager
. - Pengontrol ResourceGroup dalam Deployment yang bernama
resource-group-controller-manager
. - OpenTelemetry Collector dalam
Deployment bernama
otel-collector
. - Opsional: Webhook Pendaftaran Config Sync di Deployment yang bernama
admission-webhook
.
Sebagian besar resource dan objek ini dibuat secara otomatis saat menginstal Config Sync dan Anda tidak perlu mengubahnya.
- Operator ConfigManagement dalam Deployment bernama
Membuat objek
RootSync
danRepoSync
akan menambahkan komponen berikut:- Untuk setiap
RootSync
, Deployment rekonsiler yang bernamaroot-reconciler-ROOTSYNC_NAME
. - Untuk setiap
RepoSync
, Deployment rekonsiler yang bernamans-reconciler-REPOSYNC_NAMESPACE-REPOSYNC_NAME-REPOSYNC_NAME_LENGTH
.
- Untuk setiap
Deployment, Pod, dan container Sinkronisasi Konfigurasi
Tabel berikut memberikan informasi lebih lanjut tentang Deployment, Pod, dan container Config Sync:
Nama Deployment | Namespace deployment | Deskripsi deployment | Jumlah replika | Ekspresi reguler nama pod | Jumlah penampung | Nama container |
---|---|---|---|---|---|---|
config-management-operator |
config-management-system |
Operator ConfigManagement berjalan di setiap cluster dengan Config Sync yang terinstal. Objek tersebut mengamati objek ConfigManagement dan mengelola komponen Config Sync, seperti Reconciler Manager dan OpenTelemetry Collector. |
1 | config-management-operator-.* |
1 | manager |
reconciler-manager |
config-management-system |
Reconciler Manager berjalan di setiap cluster dengan Config Sync diaktifkan di objek ConfigManagement . Library ini mengamati objek RootSync dan RepoSync serta mengelola Deployment rekonsiler untuk setiap objek. |
1 | reconciler-manager-.* |
2 | reconciler-manager otel-agent |
root-reconciler |
config-management-system |
Deployment rekonsiler root dibuat untuk setiap objek RootSync . |
1 | root-reconciler-.* |
3 - 51 |
reconciler otel-agent git-sync helm-sync oci-sync gcenode-askpass-sidecar hydration-controller |
ns-reconciler |
config-management-system |
Deployment rekonsiler namespace dibuat untuk setiap objek RepoSync . |
1 | ns-reconciler-.* |
3 - 51 |
reconciler otel-agent git-sync helm-sync oci-sync gcenode-askpass-sidecar hydration-controller |
otel-collector |
config-management-monitoring |
OpenTelemetry Collector berjalan pada setiap cluster dengan Config Sync diaktifkan dalam objek ConfigManagement . Layanan ini mengumpulkan metrik dari komponen Config Sync yang berjalan di namespace config-management-system dan resource-group-system , serta mengekspor metrik ini ke Prometheus dan Cloud Monitoring. |
1 | otel-collector-.* |
1 | otel-collector |
resource-group-controller-manager |
resource-group-system |
Pengontrol ResourceGroup berjalan pada setiap cluster dengan Config Sync diaktifkan dalam objek ConfigManagement . Objek tersebut mengamati
objek ResourceGroup dan memperbaruinya dengan status
rekonsiliasi saat ini dari setiap objek dalam inventarisnya. Objek
ResourceGroup dibuat untuk setiap
objek RootSync dan RepoSync guna menginventarisasi
daftar objek yang diterapkan oleh rekonsiler dari sumber tepercaya. |
1 | resource-group-controller-manager-.* |
2 | reconciler-manager otel-agent |
admission-webhook |
config-management-system |
Webhook Pendaftaran Config Sync berjalan di setiap cluster dengan pencegahan penyimpangan yang diaktifkan dalam objek ConfigManagement . SDK ini memantau permintaan Kubernetes API dan mencegah modifikasi atau penghapusan resource yang dikelola oleh Config Sync. Webhook akses masuk Config Sync dinonaktifkan secara default. |
2 | admission-webhook-.* |
1 | admission-webhook |
1 Untuk mengetahui detail tentang kapan penampung ini dibuat, lihat Penampung rekonsiliasi.
Komponen utama
Bagian berikut membahas komponen Config Sync penting secara lebih mendetail.
Operator dan objek ConfigManagement
Operator ConfigManagement mengamati objek ConfigManagement
serta membuat dan mengelola komponen lain yang diperlukan agar Config Sync dapat berfungsi:
Karena ConfigManagement Operator menginstal beberapa komponen yang memerlukan izin cluster-admin
, ConfigManagement Operator juga memerlukan izin cluster-admin
.
Manajer Rekonsiliasi dan rekonsiliasi
Reconciler Manager bertanggung jawab untuk membuat dan mengelola setiap rekonsiler yang memastikan konfigurasi cluster Anda tetap sinkron.
Reconciler Manager membuat rekonsiler root untuk setiap objek RootSync
dan
rekonsiler namespace untuk setiap objek RepoSync
. Config Sync menggunakan desain ini, bukan membagikan satu rekonsiler monolitik, karena desain ini meningkatkan keandalan dengan mengurangi titik tunggal kegagalan dan memungkinkan setiap rekonsiler untuk diskalakan secara independen.
Rekonsiler root dan namespace secara otomatis mengambil konfigurasi dari sumber kebenaran Anda dan menerapkannya untuk menerapkan status yang Anda inginkan dalam cluster.
Diagram berikut menunjukkan cara Reconciler Manager menangani pengontrolan siklus proses setiap rekonsiler root dan rekonsiler namespace:
Penampung rekonsiliasi
Container khusus yang di-deploy di Pod rekonsiler bergantung pada pilihan konfigurasi yang Anda buat. Tabel berikut menjelaskan lebih lanjut fungsi masing-masing penampung rekonsiler ini dan kondisi yang menyebabkan Sinkronisasi Konfigurasi membuatnya:
Nama penampung | Deskripsi | Kondisi |
---|---|---|
reconciler |
Menangani sinkronisasi dan perbaikan penyimpangan. | Selalu diaktifkan. |
otel-agent |
Menerima metrik dari container rekonsiler lainnya dan mengirimkannya ke OpenTelemetry Collector. | Selalu diaktifkan. |
git-sync |
Menarik konfigurasi dari repositori Git Anda ke direktori lokal yang dapat dibaca container reconciler. | Diaktifkan saat spec.sourceType adalah git . |
helm-sync |
Menarik dan merender diagram Helm dari repositori diagram Anda ke direktori lokal yang dapat dibaca oleh container reconciler. | Diaktifkan saat spec.sourceType adalah helm . |
oci-sync |
Menarik image OCI yang berisi konfigurasi Anda dari container registry ke direktori lokal yang dapat dibaca container rekonsiler. | Diaktifkan saat spec.sourceType adalah oci . |
gcenode-askpass-sidecar |
Meng-cache kredensial Git dari layanan metadata GKE untuk
digunakan oleh container git-sync . |
Diaktifkan jika spec.sourceType adalah git dan spec.git.auth adalah gcenode atau gcpserviceaccount . |
hydration-controller |
Menangani pembuatan konfigurasi Kustomize ke direktori lokal yang dapat dibaca container rekonsiler. | Diaktifkan saat sumber menyertakan file kustomize.yaml . |
Seperti ditunjukkan dalam tabel sebelumnya, biasanya Anda akan menemukan jumlah container
tiga hingga lima dalam setiap Pod rekonsiler. Penampung reconciler
dan otel-agent
selalu ada. Menentukan jenis untuk sumber tepercaya
akan menentukan penampung sinkronisasi yang ditambahkan. Selain itu, penampung hydration-controller
dan gcenode-askpass-sidecar
dibuat jika Anda membuat
perubahan konfigurasi yang disebutkan dalam tabel.
Objek Pengontrol ResourceGroup dan ResourceGroup
Rekonsiler root dan namespace membuat objek inventaris ResourceGroup
untuk
setiap objek RootSync
dan RepoSync
yang Anda siapkan. Setiap objek ResourceGroup
berisi daftar objek yang disinkronkan ke cluster dari sumber tepercaya oleh
rekonsiler untuk objek RootSync
atau RepoSync
tersebut. Pengontrol ResourceGroup
kemudian mengamati semua objek dalam objek ResourceGroup
dan
memperbarui status objek ResourceGroup
dengan status rekonsiliasi
saat ini dari objek yang disinkronkan. Hal ini memungkinkan Anda memeriksa status objek
ResourceGroup
untuk melihat ringkasan status sinkronisasi, daripada harus mengkueri status
setiap objek individual sendiri.
Objek ResourceGroup
memiliki nama dan namespace yang sama dengan objek
RootSync
atau RepoSync
-nya yang sesuai. Misalnya, untuk objek RootSync
dengan
nama root-sync
dalam namespace config-management-system
, objek ResourceGroup
yang sesuai juga diberi nama root-sync
di
namespace config-management-system
.
Jangan membuat atau mengubah objek ResourceGroup
, karena hal ini dapat mengganggu operasi Config Sync.
Webhook Pendaftaran
Webhook Penerimaan Config Sync dibuat saat Anda mengaktifkan pencegahan penyimpangan. Pencegahan drift secara proaktif mencegat permintaan perubahan, memastikannya selaras dengan sumber kebenaran sebelum mengizinkan perubahan.
Jika Anda tidak mengaktifkan pencegahan penyimpangan, Config Sync tetap menggunakan mekanisme pemulihan mandiri untuk mengembalikan penyimpangan konfigurasi. Dengan pemulihan mandiri, Sinkronisasi Konfigurasi terus memantau objek terkelola dan otomatis mengembalikan setiap perubahan yang menyimpang dari status yang diinginkan.
Objek RootSync dan RepoSync
Objek RootSync
mengonfigurasi Config Sync untuk membuat rekonsiler root yang mengawasi sumber tepercaya yang ditentukan dan menerapkan objek dari sumber tersebut ke cluster. Secara default, rekonsiler root untuk setiap objek RootSync
memiliki izin cluster-admin
. Dengan
izin default ini, rekonsiler root dapat menyinkronkan resource cakupan cluster dan
cakupan namespace. Jika perlu, Anda dapat mengubah izin ini dengan
mengonfigurasi
kolom
spec.override.roleRefs
. Objek RootSync
didesain untuk digunakan oleh admin cluster.
Objek RepoSync
mengonfigurasi Config Sync untuk membuat rekonsiler namespace yang mengawasi sumber yang ditentukan dan menerapkan objek dari sumber tersebut ke namespace tertentu dalam cluster. Rekonsiler namespace dapat menyinkronkan
resource apa pun dengan cakupan namespace dalam namespace tersebut dengan izin kustom
yang ditentukan pengguna. Objek RepoSync
dirancang untuk digunakan oleh penyewa namespace.
Cara layanan Fleet mengelola objek RootSync
Saat Anda menginstal Config Sync dengan Google Cloud Console, Google Cloud CLI, Config Connector, atau Terraform, Config Sync dikelola oleh layanan Fleet, berdasarkan input Anda ke Google Cloud API.
Jika penginstalan Config Sync dikelola oleh layanan Fleet, Anda juga dapat memintanya untuk mengelola objek RootSync
awal Anda, yang bernama root-sync
. Dengan demikian, Anda dapat mem-bootstrap GitOps pada cluster tanpa perlu
menerapkan apa pun secara langsung ke cluster secara langsung. Jika Anda memutuskan untuk tidak meminta
layanan Armada mengelola objek RootSync
awal, Anda masih dapat menerapkan
objek RootSync
dan RepoSync
apa pun yang diinginkan langsung ke cluster.
Objek RootSync
yang bernama root-sync
dibuat berdasarkan input Anda ke Google Cloud API, khususnya bagian spec.configSync
dari API penerapan pengelolaan konfigurasi. Karena API ini
hanya menampilkan subset kolom
RootSync
,
kolom tersebut dianggap terkelola di root-sync
, sedangkan kolom lainnya
dianggap tidak dikelola. Kolom terkelola hanya dapat diedit menggunakan Google Cloud API. Kolom yang tidak dikelola dapat diedit menggunakan kubectl
, atau klien Kubernetes lainnya. Untuk contoh yang menunjukkan cara mengekspor YAML root-sync
, mengeditnya secara lokal, dan menerapkannya kembali, lihat membuat dan mengedit file konfigurasi RootSync
.
Untuk penginstalan manual, Anda dapat mengelola Config Sync dengan alat command line kubectl
atau klien Kubernetes lainnya.
Objek RootSync dan RepoSync tambahan
Untuk membuat objek RootSync
atau RepoSync
tambahan, Anda dapat menggunakan alat command line kubectl
atau klien Kubernetes lainnya. Anda juga dapat menggunakan objek root-sync
awal untuk mengelola objek RootSync
atau RepoSync
tambahan dengan GitOps, dengan menambahkan manifes YAMLnya ke sumber tepercaya yang mengonfigurasi root-sync
untuk disinkronkan. Metode ini tidak dapat digunakan untuk mengelola
konfigurasi root-sync
awal, karena beberapa kolomnya dikelola oleh
layanan Armada. Untuk mengelola objek root-sync
dengan GitOps, gunakan Config Connector atau Terraform. Untuk mempelajari lebih lanjut cara membuat objek RootSync
dan RepoSync
tambahan, lihat
Mengonfigurasi sinkronisasi dari lebih dari satu sumber tepercaya.
Langkah selanjutnya
- Anda mungkin ingin memantau komponen Config Sync atau memeriksa log komponen tersebut. Untuk pengantar, lihat Menggunakan pemantauan dan log.
- Pelajari Permintaan resource untuk komponen Config Sync.