Introduction
Di era microservices, penggunaan API Gateway sangat penting untuk menyatukan berbagai layanan backend ke dalam satu pintu masuk yang aman dan efisien. Salah satu pilihan open-source yang populer adalah KrakenD. Dalam artikel ini, kita akan mempelajari bagaimana:
- Menyusun konfigurasi API Gateway dengan KrakenD
- Membangunnya menggunakan Docker
- Menjalankan dan mendepoy-nya dengan cara yang sederhana namun powerful
Flow

Preparation
- Docker & Docker Compose terinstal
- Basic YAML & JSON
- Familiar dengan konsep API Gateway
Langkah-langkah :
1. Struktur Directory

2. Dockerfile
Berisi langkah-langkah untuk:
- Menggunakan base image
krakend - Menambahkan
gomplate,nano, dancurl - Men-generate file
krakend.jsondari template (krakend.tmpl) - Menentukan environment (
ENV=dev,ENV=prod) saat build
FROM devopsfaith/krakend:2.9.2
#Install Dependecies
RUN apk add nano && apk add curl
# Install Gomplate for templateing
RUN apk add --no-cache gomplate
# Set working directory
WORKDIR /etc/krakend
# Copy file
COPY krakend.tmpl .
COPY config config/
ARG ENV
# Generate krakend config
RUN gomplate \
-d service=config/settings/service.json \
-d settings=config/settings/${ENV}/urls.json \
-d api_igunawan=config/settings/api_igunawan.json \
-d api_blogigunawan=config/settings/api_blogigunawan.json \
-f krakend.tmpl -o krakend.json
# Expose port default KrakenD
EXPOSE 8080
# Run krakend.json
CMD ["krakend", "run", "-c", "krakend.json"]
3. Krakend Template
File template utama konfigurasi KrakenD — file ini akan digenerate menjadi krakend.json berdasarkan environment dan data yang kamu beri via gomplate.
contoh generate nya, di sesuaikan dengan name file masing-masing:
gomplate \
-d service=config/settings/service.json \
-d settings=config/settings/${ENV}/urls.json \
-d api_igunawan=config/settings/api_igunawan.json \
-d api_blogigunawan=config/settings/api_blogigunawan.json \
-f krakend.tmpl -o krakend.json
4. config
Folder utama untuk menyimpan semua file konfigurasi.
a. partials/
Berisi potongan template (*.tmpl) untuk berbagai API:
api_blogigunawan.tmpl→ konfigurasi endpoint blogapi_igunawan.tmpl→ konfigurasi endpoint igunawan
Biasanya akan di-include dari krakend.tmpl menggunakan {{ file "..." }} atau {{ include "..." }}.
b. settings/
Tempat file konfigurasi JSON statis yang dipakai gomplate.
api_blogigunawan.json→ data statis untuk endpoint igunawan krakendapi_igunawan.json→ data statis untuk endpoint igunawan healthcheckservice.json→ konfigurasi global service (misal: timeout, base_url, version)dev/urls.jsondanprod/urls.json→ masing-masing berisi daftar URL back-end untuk environment tertentu

Mechanisme :
– endpoint : adalah path yang kita buat untuk diakses dari luar / outside
– backend : adalah path asli dari source endpoint API kita
Jadi seperti memanipulasi path aslinya untuk di expose di public
5. Mekanisme saat Build Docker
Arg ENV diberikan (misalnya ENV=dev)
gomplate membaca:
config/settings/service.jsonconfig/settings/dev/urls.jsonconfig/settings/api_igunawan.jsonconfig/settings/api_blogigunawan.json
gomplate akan merender krakend.tmpl menjadi krakend.json
Container akan menjalankan: krakend run -c krakend.json
Build & Run
docker build -t krakend-igunawan --build-arg ENV=dev . docker run -p 8080:8080 krakend-igunawan
6. Testing endpoint
curl http://localhost:8080/api/igunawan

curl http://localhost:8080/api/blog

Link repository : https://github.com/gunawan-d/api-gateway-krakend

Admin website igunawan.com, System Administrator, DevOps Engineer