FYI
- Saya akan membuat serial untuk pembelajaran KONG pada blog ini. Jadi ini adalah blog pertama tentang KONG yang akan dibahas disini dan selanjutnya masih ada lagi.
- Kenapa menggunakan kontainer? Karena KONG bersifat stateless yang bisa discale berapapun dan bisa dirubah kapanpun. Namun untuk database, karena kita hanya belajar maka jangan dipikirkan dulu.
- Kita menggunakan KONG Community Edition
Serial
- Instalasi Kong Api Gateway & KONGA dengan Docker Compose <– Kita disini
- Pembahasan Services dan Routes pada Kong Api Gateway
- Implementasi JWT Pada KONG
Intro
KONG API Gateway adalah Load Balancer dengan fitur-fitur yang kaya. Beda dengan load balancer lain, dengan KONG menggunakan fitur seperti Rate Limiting, Caching, Logging, Autentikasi dll menjadi lebih mudah karena KONG memaketkan fitur-fiturnya dengan format Plugin. Sorry saya bukannya mau ngepromote KONG, cuma yang saya rasakan seperti itu wkwk.
TL;DR
Kalian udah paham? Tapi kesini cuma mau cari docker-compose
-nya aja? Langsung aja clone repo ini https://github.com/ledleledle/belajar-kong.
DB-Mode vs DB-Less
Kong memiliki 2 pilihan diantaranya, DB-Mode yaitu KONG dengan database, database yang dapat disupport ada 2 yaitu PostreSQL dan Cassandra. Dan DB-Less yaitu KONG tanpa database, yaitu kita bisa menggunakan file .yml
untuk melakukan konfigurasi terhadap KONG. Namun kali ini saya akan menggunakan DB-Mode dengan database PostgreSQL.
Good Point
Seperti yang saya jelaskan pada intro, karena KONG memiliki pluginnya sendiri, kita dapat memanfaatkan fitur-fiturnya tanpa perlu membuat service dengan fitur yang sama satu per satu. Lebih gampangnya mari kita lihat gambar dibawah.
Ya karena eranya microservices, mungkin kita akan memecah beberapa services, hanya saja ada fitur-fitur yang diperlukan ditiap servicenya misal pada gambar diatas yaitu Logging dan Security. Dengan KONG kita bisa membuatnya lebih simpel dengan mengimplementasi plugin pada level API Gateway seperti pada gambar dibawah.
Instalasi
Mungkin kita akan membahas instalasinya terlebih dahulu, berikut adalah hal-hal yang akan dipakai dalam praktek ini.
- Docker & Docker Compose
- KONG Community Edition
- KONGA (Admin WEB UI, untuk mempermudah penggunaan KONG)
Siapkan sebuah folder dan file docker-compose.yml
.
|
|
Lalu edit file docker-compose.yml
yang telah kita buat dengan konfigurasi dibawah. Mari kita bahas step-by-step untuk komponen-komponennya.
|
|
Format dokumen docker compose yang dipakai yaitu 3.0. Untuk lebih detailnya, bisa kalian lihat pada dokumentasi docker compose berikut.
|
|
Sediakan databasenya, disini saya menggunakan versi postgres:9.6
(tidak ada alasan khusus, kalian bisa menggunakan versi yang berbeda). Untuk membuat databasenya lebih persistent, saya juga membuat volume yang mengarah pada directory postgres-data
. Set USER, PASSWORD dan DB pada environment. Dan join network ke kong-net
untuk menghubungkan container satu dengan yang lain pada jaringan yang sama.
|
|
Lalu ada perintah migrate, yaitu KONG akan melakukan migrasi database dan seluruh table agar KONG dapat berjalan dengan normal. Masukkan DATABASE, USER dan PASSWORD postgres yang telah didefinisikan sebelumnya pada environment kong-migrate
. depends_on
yaitu perintah untuk menunggu suatu container yang dispesifikasikan untuk berjalan terlebih dahulu, barulah container selanjutnya akan dijalankan.
|
|
Setelah migrasi selesai, selanjutnya kita bisa menjalankan KONG. Seperti sebelumnya, masukkan DATABASE, USER dan PASSWORD postgres yang telah didefinisikan sebelumnya pada environment kong
. Sebenarnya dari sini kita sudah bisa menggunakan KONG melalui HTTP Request seperti cURL atau Postman. Namun untuk mempermudah penggunaan KONG, kita akan memasang WEB UI yang dibuat oleh komunitas yaitu KONGA.
|
|
Untuk KONGA kita juga membutuhkan database, jadi kita juga akan melakukan migrasi database untuk KONGA, kita bisa menggunakan database yang sama yang kita gunakan untuk KONG. Untuk mengisikan USERNAME, PASSWORD dan DATABASE PostgreSQL, pada KONGA kita menggunakan format URL seperti postgresql://user_anda:password_anda@host_atau_ip_anda:5432/db_anda
.
|
|
Setelah migrasi KONGA database selesai, barulah kita bisa melakukan deployment KONGA. Konfigurasinya overall hampir sama, jadi tidak usah saya jelaskan. Untuk TOKEN_SECRET
sebenarnya bisa diisi bebas, tapi disini saya mengikuti dokumentasinya saja.
|
|
Ini adalah network yang dipanggil disetiap service, Network bersifat bridge
.
Jadi, konfigurasi penuhnya akan terlihat seperti berikut.
|
|
Simpan dan jalankan perintah, lalu tunggu beberapa menit untuk menunggu database, table dan container disiapkan.
|
|
Setelah semuanya selesai, kita bisa akses localhost:1337. Untuk pertama kali kalian akan dimintai untuk mendaftar, ini adalah salah satu fitur KONGA yaitu kita bisa memberikan Role Based Access Control (RBAC). Dan setelah login, kita akan mendapatkan tampilan seperti berikut.
Menambah Connection
Connection disini yaitu Admin API KONG, Disini kita bisa menyambungkan beberapa KONG Nodes yang ingin kita konfigurasi. Cara menambahkannya simple. Cukup masukkan URL KONG yang sudah kalian deploy, lalu simpan.
Serial
- Instalasi Kong Api Gateway & KONGA dengan Docker Compose <– Kita disini
- Pembahasan Services dan Routes pada Kong Api Gateway
- Implementasi JWT Pada KONG
References
- https://hub.docker.com/r/pantsel/konga/
- https://hub.docker.com/_/kong
- https://docs.konghq.com/gateway-oss/2.4.x/db-less-and-declarative-config/
Penutup
Okay… Sudah dulu, untuk fitur-fitur yang lain dan cara penggunaan KONGA. Kita akan bahas pada artikel berikutnya (sorry ngantuk). Oke sekian dulu, semoga artikel ini membantu, jika ada pertanyaan silakan isi pada kolom komentar. Terimakasih.