Episode ini membahas file provider: menulis router, service, dan middleware dalam file YAML atau TOML dengan directory watching dan hot reload, struktur bagian http, tcp, udp, dan tls, validasi konfigurasi, serta best practices untuk layanan non-container.

Selama ini konfigurasi dinamis datang dari Docker labels. Tapi bagaimana dengan layanan yang tidak hidup di Docker — server bare-metal, VM, atau aplikasi dengan backend statis? Episode 19 menjawabnya dengan file provider: menulis router, service, dan middleware dalam file YAML/TOML yang dibaca Traefik secara langsung.
Kelebihan terbesarnya sama dengan provider lain: hot reload. Traefik mengawasi file dan menerapkan perubahan tanpa restart. Ditambah struktur yang eksplisit dan mudah di-version-control, file provider adalah pilihan utama untuk konfigurasi kompleks dan hybrid.
File provider didefinisikan di static config, menunjuk ke sebuah direktori atau file tunggal:
providers:
file:
directory: /etc/traefik/dynamic
watch: truedirectory: folder berisi file konfigurasi dinamis.watch: true: Traefik memantau perubahan dan memuat ulang otomatis.Setiap file .yml, .yaml, atau .toml di direktori tersebut dibaca sebagai satu blok konfigurasi dinamis. Beberapa file diperbolehkan; Traefik menggabungkan semuanya. Nama file dipakai sebagai label log — beri nama yang deskriptif seperti routers.yml, middlewares.yml, certificates.yml.
Struktur top-level file dinamis meniru pembagian protokol:
http: routers, services, middlewares untuk HTTP.tcp: routers dan services untuk TCP.udp: routers dan services untuk UDP.tls: sertifikat dan options.Contoh lengkap untuk dua layanan:
http:
routers:
blog:
rule: "Host(`blog.example.com`)"
entrypoints:
- web
- websecure
service: blog-svc
middlewares:
- secure-headers
api:
rule: "Host(`api.example.com`) && PathPrefix(`/v2`)"
entrypoints:
- websecure
service: api-svc
tls: {}
services:
blog-svc:
loadBalancer:
servers:
- url: "http://192.168.1.20:8080"
healthCheck:
path: "/health"
interval: "20s"
api-svc:
loadBalancer:
servers:
- url: "http://192.168.1.21:3000"
- url: "http://192.168.1.22:3000"
middlewares:
secure-headers:
headers:
frameDeny: true
contentTypeNosniff: truePerhatikan bahwa server adalah IP statis tanpa Docker — inilah kekuatan file provider untuk infrastruktur hybrid.
Ketika file berubah, Traefik langsung memvalidasi dan menerapkan konfigurasi baru. Jika file mengandung error sintaks atau referensi rusak, Traefik menolak pembaruan tersebut dan mempertahankan konfigurasi sebelumnya yang valid — tidak ada downtime karena typo.
Verifikasi bahwa perubahan diterima lewat log atau API:
docker logs traefik
curl -s http://localhost:8080/api/http/routersPesan log seperti Configuration loaded from file menandakan reload berhasil. Endpoint API /api/http/routers menampilkan router aktif saat ini. Perintah curl ini menjadi cara cepat memastikan perubahan file benar-benar diterapkan sebelum ditinggalkan.
Kesalahan yang sering muncul saat bekerja dengan banyak file:
traefik checkConfig sebelum menerapkan ke produksi.Tip
File provider dan Docker provider bisa hidup berdampingan. Gunakan Docker untuk workload container dan file provider untuk layanan eksternal — Traefik menggabungkan keduanya dalam satu routing graph.
Inti yang harus dibawa pulang:
watch: true.http, tcp, udp, dan tls.Di episode 20 selanjutnya kita memasuki fase Kubernetes: kubernetes provider ingress — IngressClass dan resource Ingress, routing berbasis host dan path, annotation traefik.ingress.kubernetes.io/*, TLS dengan Secret dan cert-manager, serta tipe Service Kubernetes. Traefik di dunia orchestrator berbeda caranya bekerja.