⚖️ DB-less atau Database?
| DB-less | PostgreSQL | |
|---|---|---|
| Sumber konfigurasi | Berkas YAML | Basis data |
| Ubah saat berjalan | Tidak (muat ulang berkas) | Ya, lewat Admin API |
| Cocok untuk GitOps | Sangat | Perlu disiplin tambahan |
| Komponen yang dikelola | Hanya Kong | Kong + PostgreSQL |
| Beberapa simpul | Tiap simpul baca berkas sendiri | Berbagi satu basis data |
| Dukungan plugin | Sebagian kecil tidak tersedia | Semua |
Untuk proyek baru, mulailah dengan DB-less. Konfigurasi menjadi berkas yang bisa ditaruh di Git, ditinjau lewat pull request, dan diterapkan ulang secara identik ke lingkungan mana pun. Mode database baru diperlukan bila Anda butuh perubahan dinamis saat berjalan — misalnya konsumen API yang mendaftar sendiri lewat portal.
💻 DB-less dengan Docker Compose
services:
kong:
image: kong:3.9
environment:
KONG_DATABASE: "off"
KONG_DECLARATIVE_CONFIG: /kong/kong.yaml
KONG_PROXY_LISTEN: "0.0.0.0:8000"
# Admin API HANYA ke localhost dalam kontainer
KONG_ADMIN_LISTEN: "127.0.0.1:8001"
KONG_PROXY_ACCESS_LOG: /dev/stdout
KONG_PROXY_ERROR_LOG: /dev/stderr
KONG_LOG_LEVEL: notice
volumes:
- ./kong.yaml:/kong/kong.yaml:ro
ports:
- "8000:8000" # proxy — boleh diekspos
# port 8001 sengaja TIDAK dipublikasikan
healthcheck:
test: ["CMD", "kong", "health"]
interval: 10s
retries: 5
_format_version: "3.0"
services:
- name: layanan-pesanan
url: http://layanan-pesanan:8080
retries: 3
connect_timeout: 3000
read_timeout: 30000
routes:
- name: rute-pesanan
paths: ["/pesanan"]
strip_path: false
🔌 Port yang Perlu Diketahui
| Port | Fungsi | Boleh publik? |
|---|---|---|
| 8000 | Proxy HTTP — lalu lintas aplikasi | Ya |
| 8443 | Proxy HTTPS | Ya |
| 8001 | Admin API | TIDAK PERNAH |
| 8444 | Admin API HTTPS | Hanya jaringan internal |
| 8002 | Kong Manager (antarmuka web) | Hanya internal |
Admin API tidak punya autentikasi bawaan pada Kong OSS. Siapa pun yang bisa menjangkau port 8001 dapat mengubah routing, menonaktifkan plugin autentikasi, mengarahkan trafik ke server penyerang, dan membaca seluruh kredensial konsumen. Ini kesalahan konfigurasi Kong yang paling sering dieksploitasi.
Aturan mutlak: ikat Admin API ke 127.0.0.1 atau jaringan internal, lindungi dengan firewall, dan jangan pernah mempublikasikan portnya. Bila butuh akses jarak jauh, lewati VPN atau bastion.
🔍 Verifikasi
# Dari dalam kontainer atau jaringan internal
curl -s http://localhost:8001/status | jq
# Menguji proxy
curl -i http://localhost:8000/pesanan/123
# Header yang ditambahkan Kong pada respons:
# Via: kong/3.9
# X-Kong-Upstream-Latency: 12
# X-Kong-Proxy-Latency: 1
X-Kong-Upstream-Latency adalah waktu yang dihabiskan layanan Anda; X-Kong-Proxy-Latency adalah waktu yang dihabiskan Kong sendiri termasuk seluruh plugin. Bila permintaan lambat, kedua angka ini langsung memberi tahu siapa yang harus disalahkan — gateway atau layanan di belakangnya.