Episode ini membahas CI/CD dan infrastructure as code untuk Kafka: Terraform untuk cluster, definisi topic, ACL, skema, dan connector sebagai code, pipeline CI/CD dengan testing dan canary deployment, serta GitOps dengan ArgoCD dan Flux.

Cluster Kafka yang dikonfigurasi lewat CLI yang dijalankan manual adalah sumber ketidakkonsistenan: tidak ada yang tahu persis konfigurasi produksi, dan perubahan sulit diaudit. Infrastructure as Code (IaC) memindahkan semua definisi — cluster, topic, ACL, skema, connector — ke repositori yang ter-version control.
Episode 31 ini akan membahas Terraform untuk infrastruktur Kafka, konfigurasi topic dan ACL sebagai code, pipeline CI/CD untuk pengujian dan deployment bertahap, serta GitOps dengan ArgoCD dan Flux untuk sinkronisasi otomatis.
Terraform bisa mengelola cluster Kafka cloud (MSK, Confluent) maupun resource Kafka itu sendiri (topic, ACL) lewat provider:
resource "aws_msk_cluster" "orders" {
cluster_name = "orders-kafka"
kafka_version = "3.7.0"
number_of_broker_nodes = 3
broker_node_group_info {
instance_type = "kafka.m7g.large"
client_subnets = [aws_subnet.a.id, aws_subnet.b.id, aws_subnet.c.id]
}
}aws_msk_cluster mendeklarasikan cluster beserta versi dan instance. Karena definisi ada di code, setiap perubahan cluster melalui pull request dan bisa di-review sebelum diterapkan.
server.properties, dan service management secara repeatable.Definisikan topic dan ACL dalam file yang bisa di-review dan diuji:
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaTopic
metadata:
name: orders
spec:
partitions: 6
replicas: 3
config:
cleanup.policy: delete
retention.ms: 604800000partitions: 6 dan config.retention.ms mendokumentasikan niat dengan jelas. Version control memberi histori: kapan topic diubah, oleh siapa, dan alasan apa.
Satu repositori per service atau monorepo dengan direktori per environment (dev, staging, prod) adalah pilihan yang umum. Kunci utamanya: perubahan melewati pull request, ada review, dan penerapan otomatis — sehingga drift antar environment bisa dicegah.
Pipeline CI menjalankan pengujian sebelum perubahan diterapkan:
Deployment aplikasi Kafka bisa memakai pola deployment umum:
Keduanya sangat berguna saat mengubah logika consumer atau skema — di mana kesalahan terdeteksi lebih baik di sebagian traffic daripada seluruhnya.
GitOps menjadikan repositori git sebagai sumber kebenaran tunggal. ArgoCD atau Flux memantau repositori dan menyinkronkan state ke cluster secara otomatis:
argocd app sync kafka-stackargocd app sync kafka-stack menarik definisi terbaru dari git dan menerapkannya. Semua perubahan harus lewat commit; operator menolak perubahan manual yang menyimpang dari git.
Info
GitOps paling kuat ketika digabungkan dengan Strimzi (episode 28): seluruh Kafka stack — cluster, user, topic, connector — terdeklarasi dalam git dan diterapkan otomatis. Kombinasi ini menghapus sebagian besar operasi manual Kafka.
Di episode 31 ini kalian sudah memahami infrastructure as code dengan Terraform, definisi topic, ACL, skema, dan connector sebagai code, pipeline CI/CD dengan testing dan canary deployment, serta GitOps dengan ArgoCD dan Flux.
Inti yang harus dibawa pulang:
Di episode 32 selanjutnya kita akan membahas strategi testing — unit test producer, consumer, dan topologi Streams, integration test dengan Testcontainers dan embedded Kafka, performance test dengan kafka-producer-perf-test, serta chaos engineering untuk menguji kegagalan.