Halaman ini menjelaskan cara menambahkan dan mengatur konfigurasi yang disimpan di sumber tepercaya.
Tentang konfigurasi
Config Sync dirancang untuk operator cluster yang mengelola banyak cluster. Anda dapat memastikan bahwa cluster Anda memenuhi standar bisnis dan kepatuhan dengan mengizinkan Config Sync mengelola namespace, Role, RoleBinding, ResourceQuota, dan objek Kubernetes penting lainnya di seluruh fleet Anda.
Saat mengelola resource ini, Config Sync akan menjaga cluster terdaftar Anda tetap
sinkron menggunakan konfigurasi. Konfigurasi adalah file YAML atau JSON yang disimpan di sumber
kebenaran. Config Sync mendukung repositori Git, image OCI, dan diagram Helm
sebagai sumber tepercaya. Konfigurasi
berisi jenis detail konfigurasi yang sama yang dapat Anda
terapkan secara manual ke cluster menggunakan perintah kubectl apply
. Anda dapat membuat
konfigurasi untuk objek Kubernetes apa pun yang dapat ada di cluster. Namun, beberapa objek Kubernetes, seperti Secret, berisi informasi sensitif yang mungkin tidak sesuai untuk disimpan dalam sumber tepercaya. Gunakan penilaian Anda saat mempertimbangkan
apakah akan mengelola jenis objek ini menggunakan Config Sync.
Anda juga dapat menggunakan Config Sync dengan Config Connector untuk menyinkronkan konfigurasi bagi Google Cloud resource. Untuk mempelajari lebih lanjut cara menggunakan Config Connector, lihat artikel mengelola Google Cloud resource menggunakan Config Connector. Anda juga dapat menyederhanakan penginstalan Config Sync dan Config Connector dengan menyiapkan Pengontrol Konfigurasi.
Batasan
Beberapa resource Kubernetes berisi kolom yang tidak dapat diubah, seperti pemilih Pod dalam objek Deployment. Anda tidak dapat mengubah kolom yang tidak dapat diubah dalam konfigurasi dengan mengubah nilai dalam sumber tepercaya. Mencoba melakukan perubahan tersebut akan menyebabkan error
KNV2009
. Jika Anda perlu mengubah kolom yang tidak dapat diubah, hapus objek dari sumber tepercaya Anda, tunggu hingga Config Sync menghapus objek dari cluster, lalu buat ulang objek di sumber tepercaya Anda dengan pembaruan Anda.Jika Anda menggunakan submodul Git, Anda harus memberi akses Config Sync ke semua repositori, termasuk submodul apa pun.
Anda tidak dapat menggunakan Config Sync untuk mengelola ClusterRole Kubernetes bawaan secara langsung. GKE dilengkapi dengan beberapa peran yang dapat diakses pengguna bawaan, seperti
cluster-admin
,admin
,edit
, danview
. Anda tidak dapat mengelola ClusterRole ini secara langsung dengan Config Sync, karena Config Sync akan berkonflik dengan GKE. Untuk menambahkan izin ke ClusterRole bawaan, gunakan penggabungan peran untuk mengubahnya secara tidak langsung. Untuk mengubah peran, buat ClusterRole bernama unik di sumber tepercaya Anda dengan anotasi yang sesuai.
Pilih cara mengatur konfigurasi Anda
Config Sync menggunakan sumber tepercaya untuk penyimpanan konfigurasi dan kontrol versi. Ada dua format berbeda yang dapat Anda pilih untuk sumber tepercaya Anda; tidak terstruktur dan hierarkis.
Format sumber tidak terstruktur memungkinkan Anda mengatur konfigurasi dengan cara apa pun yang paling nyaman. Format ini dapat sangat berguna jika Anda mengatur atau membuat konfigurasi menggunakan alat seperti Kustomize, kpt, atau Helm. Untuk contoh cara mengatur konfigurasi, lihat Contoh format untuk repositori tidak terstruktur.
Format sumber hierarkis, atau terstruktur, memisahkan konfigurasi ke dalam kategori yang berbeda untuk membantu Anda mengatur konfigurasi. Kategorinya adalah konfigurasi sistem, metadata cluster, konfigurasi tingkat cluster, dan konfigurasi namespace. Untuk mengetahui informasi selengkapnya tentang format sumber hierarkis, lihat Struktur repo hierarkis.
Tidak terstruktur adalah format yang direkomendasikan untuk sebagian besar pengguna. Selain itu, saat mengonfigurasi objek RepoSync, Anda harus menggunakan format sumber yang tidak terstruktur.
Fitur yang didukung untuk format tidak terstruktur dan hierarkis
Tabel berikut menunjukkan perbedaan antara format tidak terstruktur dan hierarkis:
Fitur | Format tidak terstruktur (direkomendasikan) | Format hierarkis |
---|---|---|
Digunakan sebagai format untuk objek RootSync atau sumber kebenaran pusat | Didukung | Didukung |
Digunakan sebagai format untuk objek RepoSync | Didukung | Tidak didukung |
ClusterSelector |
Didukung | Didukung |
NamespaceSelector |
Didukung | Didukung |
Perintah nomos hydrate |
Didukung dengan flag --source-format=unstructured |
Didukung |
Perintah nomos init |
Tidak didukung | Didukung |
Perintah nomos vet |
Didukung dengan flag --source-format=unstructured |
Didukung |
Semua perintah nomos lainnya |
Didukung | Didukung |
Namespace abstrak | Tidak didukung | Didukung |
Repo objek |
Tidak didukung | Didukung |
Objek HierarchyConfig |
Tidak didukung | Didukung |
Kapan harus menambahkan konfigurasi ke sumber
Jika membuat format tidak terstruktur, Anda dapat mulai menambahkan konfigurasi ke format tersebut segera setelah dibuat. Jika Anda membuat format hierarkis, gunakan
perintah nomos init
untuk
menginisialisasi sumber tepercaya, atau buat struktur direktori secara manual.
Direktori kosong tidak dapat di-commit ke repositori Git, jadi sebelum mengonfigurasi Config Sync, Anda harus membuat konfigurasi dan menambahkannya ke repositori.
Setelah membuat sumber tepercaya dan menambahkan konfigurasi ke dalamnya, gunakan perintah
nomos vet
untuk memverifikasi
struktur sumber tepercaya dan memeriksa sintaksis serta validitas
konfigurasi.
Mengonfigurasi Config Sync untuk membaca dari sumber tepercaya
Setelah membuat sumber tepercaya dan menempatkan konfigurasi ke dalamnya, Anda dapat mengonfigurasi Config Sync untuk membaca dari sumber tersebut. Setelah Anda menyelesaikan langkah ini, Config Sync akan menyinkronkan konfigurasi dari sumber tepercaya ke cluster Anda.
Anda mengonfigurasi lokasi sumber tepercaya saat menginstal Config Sync, dan Anda dapat mengedit konfigurasi Config Sync nanti. Selain lokasi sumber tepercaya, Anda dapat menentukan cabang atau subdirektori yang akan dipantau, jika sumber memiliki konten selain konfigurasi.
Jika Anda menggunakan format hierarkis, dan
menginstal Config Sync secara manual dengan kubectl
,
jangan tempatkan konfigurasi Operator di direktori system/
, atau direktori cadangan lainnya seperti cluster/
atau
namespaces/
. Menempatkan konfigurasi di salah satu direktori yang dicadangkan akan menyebabkan
nomos vet
gagal dan mencatat error seperti
KNV1033: IllegalSystemResourcePlacementError,
KNV1038: IllegalKindInNamespacesError,
atau KNV1039: IllegalKindInClusterError.
Anda dapat memberikan akses kepada orang-orang ke sumber tepercaya deployment tim produk tertentu. Namun, saat Anda memberi seseorang akses ke sumber kebenaran deployment, orang tersebut juga akan diberi RBAC yang sama dengan rekonsiliator yang berjalan untuk sumber kebenaran tersebut.
Untuk mengonfigurasi autentikasi dan otorisasi antara Config Sync dan
sumber tepercaya, lihat langkah penginstalan tentang
mengonfigurasi Secret git-creds
.
Mengabaikan mutasi objek
Jika tidak ingin Config Sync mempertahankan status objek di cluster setelah objek ada, Anda dapat menambahkan anotasi client.lifecycle.config.k8s.io/mutation: ignore
ke objek yang mutasinya ingin diabaikan oleh Config Sync.
Untuk menggunakan anotasi, Anda harus mengaktifkan RootSync dan RepoSync API.
Contoh berikut menunjukkan cara menambahkan anotasi ke objek:
metadata:
annotations:
client.lifecycle.config.k8s.io/mutation: ignore
Anda tidak dapat mengubah anotasi ini secara manual pada objek terkelola di cluster.
Langkah berikutnya
- Pelajari cara mengelola namespace dan objek cakupan namespace.
- Untuk mempelajari cara memublikasikan image OCI, lihat Menyinkronkan artefak OCI dari Artifact Registry.
- Untuk mempelajari cara menyinkronkan dari chart Helm, lihat Menyinkronkan chart Helm dari Artifact Registry.