Episode ini membedah arsitektur Traefik: entrypoints, routers, middlewares, services, dan providers sebagai lima komponen inti. Kalian juga mempelajari perbedaan konfigurasi statis dan dinamis, mekanisme service discovery, serta alur lengkap sebuah request melalui pipeline Traefik.

Setelah memahami mengapa Traefik lahir, sekarang saatnya membedah mesinnya dari dalam. Episode 2 memperkenalkan lima komponen inti arsitektur Traefik: entrypoints, routers, middlewares, services, dan providers. Semua konfigurasi Traefik — dari yang paling sederhana sampai paling kompleks — hanyalah kombinasi dari lima konsep ini.
Selain itu, kita akan membahas dua lapisan konfigurasi: statis yang diatur saat startup, dan dinamis yang berubah-ubah saat runtime. Memahami pembagian ini penting karena menentukan di mana sebuah pengaturan harus ditulis. Di akhir episode, kalian akan mengikuti perjalanan lengkap sebuah request dari klien sampai kembali, melewati setiap komponen secara berurutan.
Entrypoint adalah titik masuk jaringan: kombinasi port dan protokol yang Traefik dengarkan. Misalnya entrypoint web di port 80 untuk HTTP dan websecure di port 443 untuk HTTPS. Request hanya diproses Traefik jika masuk melalui salah satu entrypoint yang didefinisikan.
Router adalah unit logika yang menghubungkan sebuah entrypoint dengan sebuah service berdasarkan rule — kondisi pencocokan. Rule bisa berupa Host, Path, Method, dan lainnya. Saat rule terpenuhi, router meneruskan request ke service tujuan, dengan opsi melewati middleware lebih dulu.
Middleware memodifikasi request atau response di antara router dan service: autentikasi, rate limiting, kompresi, header, dan lain-lain. Service adalah tujuan akhir: daftar backend server yang menerima request, biasanya dengan load balancing otomatis di dalamnya.
Provider adalah sumber konfigurasi dinamis. Traefik tidak menyimpan semua konfigurasi dalam satu file; dia membaca dari provider seperti Docker, Kubernetes, atau file konfigurasi, lalu menerjemahkannya menjadi routing yang berlaku.
klien -> entrypoint -> router -> middleware -> service -> backend
<- response <- middleware <- service <- backendTraefik memisahkan konfigurasi menjadi dua:
Contoh static configuration minimal menggunakan file traefik.yml:
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
api:
dashboard: true
providers:
docker:
exposedByDefault: falsePerhatikan bahwa tidak ada baris endpoint pada provider Docker. Traefik memakai nilai default-nya, yaitu socket Docker di unix:///var/run/docker.sock — detail ini kita ubah sesuai kebutuhan di episode 5.
Perhatikan bahwa di sini tidak ada router atau service sama sekali. Semua itu datang secara dinamis dari provider Docker — mari lihat sisi dinamisnya:
services:
app:
image: nginx:alpine
labels:
- traefik.enable=true
- traefik.http.routers.app.rule=Host(`app.localhost`)
- traefik.http.services.app.loadbalancer.server.port=80Dengan providers.docker aktif, Traefik memantau daemon Docker lewat Docker socket. Setiap container yang muncul dengan label traefik.enable=true langsung menghasilkan router dan service baru secara otomatis — tanpa restart, tanpa reload manual. Inilah inti dari dynamic configuration.
Empat istilah yang paling sering membingungkan pemula:
Sedangkan provider bukan bagian dari pipeline request; dia adalah "sumber berita" yang memberi tahu Traefik tentang dunia luar. Tanpa provider, Traefik hanyalah kotak kosong yang tidak tahu harus merutekan apa.
Satu konsep tambahan yang dipakai di fase TLS: certificate resolver. Ini konfigurasi ACME (Let's Encrypt) yang terpasang pada entrypoint websecure untuk menerbitkan sertifikat secara otomatis. Kita akan membedahnya mendalam di episode 15, tapi kenali dulu keberadaannya di sini.
Ketika seorang klien membuka http://app.localhost, berikut yang terjadi:
web (port 80).web.Host(app.localhost) cocok, sehingga router app terpilih.app menggunakan load balancing.nginx:alpine.Middlewares Traefik membungkus service, bukan sekadar request. Artinya response dari backend juga melewati middleware yang sama. Contoh paling jelas: middleware compress menandai response untuk dikompres, dan header Content-Encoding: gzip ditambahkan di jalur respons. Memahami sifat dua arah ini membantu kalian mendebug perilaku yang tidak terduga nanti.
Info
Router dihubungkan ke service bukan langsung, melainkan lewat referensi nama. Jika nama service tidak ada, router mengembalikan HTTP 503. Biasakan mengecek konsistensi nama router-service sejak awal.
Inti yang harus dibawa pulang:
Di episode 3 selanjutnya kita akan menginstall Traefik — mulai dari binary, cara paling umum dengan Docker container, setup Docker Compose yang rapi, sampai first run dan akses dashboard pertama kalian. Setelah itu semua konsep abstrak di episode ini akan terasa konkret.