Episode ini membahas mengelola konfigurasi connector sebagai code, deploy konfigurasi via GitOps dan automation, versioning definisi connector beserta rollback, serta validasi perubahan konfigurasi sebelum rollout.

Hingga episode 10, connector didaftarkan dengan curl langsung ke REST API. Di produksi, praktik seperti itu berbahaya: tidak ada riwayat perubahan, tidak ada proses review, dan rollback jadi tebak-tebakan. Episode 11 ini memperkenalkan GitOps untuk mengelola connector sebagai code.
Dengan GitOps, definisi connector disimpan di repository, perubahan melewati pull request, dan CI/CD yang menerapkannya ke Kafka Connect. Hasilnya: riwayat lengkap, audit yang mudah, dan kemampuan kembali ke versi sebelumnya dalam hitungan detik.
Simpan setiap connector sebagai file JSON dalam struktur repository yang jelas:
connectors/
mysql-inventory.json
postgres-orders.json
sqlserver-customers.json
scripts/
apply.sh
validate.sh
.env.exampleFile connector sama persis dengan body yang dikirim ke REST API:
{
"name": "inventory-connector",
"config": {
"connector.class": "io.debezium.connector.mysql.MySqlConnector",
"database.hostname": "mysql",
"database.user": "${env:DEBEZIUM_DB_USER}",
"database.password": "${env:DEBEZIUM_DB_PASSWORD}",
"database.server.id": "223344",
"topic.prefix": "dbserver1",
"database.include.list": "inventory"
}
}Karena file ini bisa di-review seperti kode biasa, setiap perubahan properti menjadi transparan bagi seluruh tim.
Skrip penerapan sederhana membaca semua file di folder connectors lalu mendaftarkannya. Perhatikan bahwa flag -d @file memberi tahu curl untuk membaca body dari file, bukan dari string literal:
for f in connectors/*.json; do
curl -s -X POST -H "Content-Type: application/json" \
http://localhost:8083/connectors/ -d @"$f"
doneDalam GitOps penuh, skrip ini tidak dijalankan manual — melainkan dieksekusi oleh pipeline CI/CD saat ada perubahan di branch utama. Alur yang disarankan:
Dengan pola ini, apa yang ada di repository selalu menjadi sumber kebenaran tunggal untuk seluruh connector.
Karena definisi connector hidup di git, versioning otomatis tersedia. Setiap perubahan adalah commit dengan pesan yang menjelaskan alasannya. Untuk kembali ke versi sebelumnya:
git log --oneline -- connectors/mysql-inventory.json
git checkout <commit-id> -- connectors/mysql-inventory.jsonUntuk update connector yang sudah ada, gunakan endpoint PUT:
curl -s -X PUT -H "Content-Type: application/json" \
http://localhost:8083/connectors/inventory-connector/config -d @"connectors/mysql-inventory.json"Ingat bahwa update konfigurasi memicu restart task connector. Jangan lakukan rollback massal di jam sibuk tanpa koordinasi.
Sebelum benar-benar menerapkan, Kafka Connect menyediakan endpoint validate yang memeriksa konfigurasi tanpa menjalankan connector:
curl -s -X PUT -H "Content-Type: application/json" \
http://localhost:8083/connector-plugins/io.debezium.connector.mysql.MySqlConnector/config/validate \
-d @"connectors/mysql-inventory.json"Responsnya memuat daftar properti beserta status valid, error, dan nilai default. Biasakan menjalankan validasi di pipeline sebelum deploy:
for f in connectors/*.json; do
CLASS=$(jq -r '.config["connector.class"]' "$f")
curl -sf -X PUT \
"http://localhost:8083/connector-plugins/$CLASS/config/validate" \
-H "Content-Type: application/json" -d @"$f" \
| jq -e 'all(.configs[]; .value.errors == null or (.value.errors | length == 0))' \
|| exit 1
doneJika validasi gagal, pipeline berhenti dan perubahan tidak sampai ke produksi.
Episode 11 membawa manajemen connector ke level engineering: definisi sebagai code, deploy otomatis lewat GitOps, versioning dengan git, rollback yang cepat, dan validasi sebelum setiap rollout.
Inti yang harus dibawa pulang:
connectors dan mendaftarkannya ke REST API./connectors/{name}/config memicu restart task, jadi koordinasikan waktunya./connector-plugins/.../config/validate di pipeline.Di episode 12 selanjutnya kita akan membahas distributed deployment dan high availability — menjalankan Kafka Connect cluster secara terdistribusi, high availability connector, balanced workload, dan failover.