Episode ini membahas penyimpanan dan pengelolaan konfigurasi Vitess lewat kustomisasi Helm dan ConfigMaps, pengelolaan secrets untuk kredensial MySQL dan Topology Service, serta validasi konfigurasi dan rollback perubahan produksi.

Cluster Vitess kalian terdiri dari puluhan komponen yang konfigurasinya saling terkait: VTGate, VTTablet, Topology Service, dan MySQL. Mengubah satu nilai di salah satu komponen bisa berdampak ke seluruh cluster. Episode 11 membahas cara mengelola konfigurasi ini secara terpusat, menyimpan kredensial dengan aman, dan mengembalikan perubahan yang bermasalah.
Roadmap episode 11: kustomisasi konfigurasi dengan Helm dan ConfigMaps, pengelolaan secrets, validasi konfigurasi, lalu strategi rollback untuk perubahan produksi.
Helm chart Vitess dikustomisasi lewat file values.yaml. Nilai-nilai penting yang sering diubah: ukuran resource per komponen, jumlah replica, lokasi penyimpanan backup, dan flag ekstra untuk VTGate atau VTTablet.
vtgate:
replicas: 3
resources:
requests:
cpu: 500m
memory: 512Mi
vtctld:
resources:
requests:
cpu: 250m
memory: 256Mi
vttablet:
resources:
requests:
cpu: 500m
memory: 1GiSimpan file values.yaml ini di repo, lalu apply saat install atau upgrade:
helm install vitess vitess/vitess -f values.yaml \
--namespace vitessHelm menerjemahkan values.yaml menjadi ConfigMaps dan Deployment di cluster. Konfigurasi yang tersebar di banyak manifest jadi satu sumber kebenaran yang bisa di-review dan di-version-control.
Info
Prinsip penting: jangan pernah mengubah ConfigMap langsung di cluster. Ubah di file values.yaml dalam git, lalu apply lewat helm upgrade. Konfigurasi yang hanya ada di cluster dan tidak di git akan hilang dan sulit diaudit.
Untuk memeriksa nilai aktif yang dipakai release:
helm get values vitess --namespace vitessKredensial yang dipakai Vitess bermacam-macam: password root MySQL, kredensial Topology Service, akun backup object storage, dan kredensial untuk VTGate ke VTTablet. Aturan pertama dan paling penting: jangan pernah menaruh secret di values.yaml atau ConfigMap.
Gunakan Kubernetes Secret, dan jika memungkinkan lengkapi dengan external secret manager seperti Vault. Contoh membuat secret untuk password root:
kubectl create secret generic vitess-mysql \
--namespace vitess \
--from-literal=root-password='p4ssw0rd-rahasia'kubectl create secret generic membuat Secret yang direferensikan oleh manifest Vitess. Dengan external secrets operator, secret bisa diambil otomatis dari Vault atau cloud secret manager, sehingga password tidak pernah tersimpan di git.
Danger
Pastikan secret tidak pernah masuk ke git. Jika ada secret yang pernah ter-commit, anggap ter-bocor dan segera rotasi. Di repo ini, .env* dan file secret seharusnya sudah masuk .gitignore.
Saat mengatur kredensial akses VTGate ke MySQL, definisikan user dan password di Secret yang sama:
kubectl create secret generic vitess-users \
--namespace vitess \
--from-literal=vt_appuser=appuser \
--from-literal=vt_appuser_password='rahasia-app'Sebelum menerapkan konfigurasi ke produksi, validasi adalah gerbang wajib. Beberapa cara:
values.yaml bisa di-parse. Helm menangani ini saat helm template.helm template atau helm upgrade --dry-run menampilkan manifest hasil tanpa menerapkannya.helm upgrade vitess vitess/vitess -f values.yaml \
--namespace vitess --dry-run --debughelm upgrade --dry-run memvalidasi manifest dan menampilkan perbedaan yang akan terjadi — kesempatan meninjau sebelum perubahan nyata. Gabungkan dengan validasi skema: vtctlclient ValidateSchema memastikan skema konsisten di semua shard.
vtctlclient ValidateSchemaKeyspace usersvtctlclient ValidateSchemaKeyspace memeriksa bahwa semua tablet dalam keyspace punya skema yang sama — jika tidak, Vitess menandainya sebagai drift yang harus diperbaiki.
Rollback adalah jaring pengaman. Karena konfigurasi dikelola helm, rollback menjadi mudah:
helm list -n vitess
helm history vitess -n vitess
helm rollback vitess 3 -n vitesshelm history vitess menampilkan riwayat release, dan helm rollback vitess 3 mengembalikan release ke revisi 3. Proses ini merekonstruksi seluruh konfigurasi dari snapshot revisi helm — jauh lebih aman daripada mengembalikan satu ConfigMap manual.
Untuk perubahan yang terjadi lewat vtctlclient (misal ApplyVschema yang salah), vitess tidak punya undo otomatis — disinilah pentingnya menyimpan konfigurasi di git. Selalu simpan VSchema dan file values di repo, dan terapkan perubahan lewat pipeline yang bisa di-review dan di-revert.
Success
Kombinasi ideal: konfigurasi di git, perubahan lewat pipeline CI/CD, validasi dry-run sebelum apply, dan helm rollback sebagai jaring pengaman. Ketiga lapisan ini membuat perubahan konfigurasi menjadi reversible dan auditable.
Pada episode 11 ini kalian sudah memahami pengelolaan konfigurasi Vitess: kustomisasi dengan Helm dan ConfigMaps yang bersumber dari git, pengelolaan secrets dengan Kubernetes Secret dan external manager, validasi konfigurasi dengan dry-run dan ValidateSchema, serta rollback perubahan produksi dengan helm rollback.
Inti yang harus dibawa pulang:
values.yaml adalah satu sumber kebenaran konfigurasi; simpan di git.ValidateSchemaKeyspace adalah gerbang validasi sebelum apply.helm history dan helm rollback adalah jalur mundur yang aman.Di episode 12 berikutnya kita kunci komunikasi: secure connectivity — TLS di antara VTGate, VTTablet, dan MySQL, autentikasi client dan manajemen user, serta network policy untuk isolasi layanan di Kubernetes. Sampai jumpa!