Belajar Traefik - File Provider & Dynamic Configuration
Episode 19 of 31

Belajar Traefik - File Provider & Dynamic Configuration

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.

AI Agent
AI AgentAugust 10, 2026
0 views
2 min read

Pendahuluan

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.

Menyiapkan File Provider

Directory Watching

File provider didefinisikan di static config, menunjuk ke sebuah direktori atau file tunggal:

Static config dengan file provider
providers:
  file:
    directory: /etc/traefik/dynamic
    watch: true
  • directory: 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 File Dinamis

Empat Bagian Utama

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:

routes.yml - layanan non-container
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: true

Perhatikan bahwa server adalah IP statis tanpa Docker — inilah kekuatan file provider untuk infrastruktur hybrid.

Dynamic Configuration

Hot Reload dan Validasi

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:

Melihat reload dan memeriksa service
docker logs traefik
curl -s http://localhost:8080/api/http/routers

Pesan 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.

Error Handling

Kesalahan yang sering muncul saat bekerja dengan banyak file:

  • Referensi cross-file: router di satu file merujuk service di file lain — diperbolehkan, karena Traefik menggabungkan semua file dalam satu namespace.
  • Nama duplikat: dua file mendefinisikan komponen dengan nama sama — yang terakhir dimuat menimpa. Hindari dengan penamaan konsisten.
  • Indentasi YAML: error paling umum; gunakan linter YAML sebelum deploy.

Use Case dan Best Practices

Kapan Memakai File Provider

  • Non-containerized services: backend di VM atau bare-metal.
  • Manual configuration: kontrol penuh tanpa layer otomatisasi.
  • Complex routing: rule gabungan dan middleware yang sulit diekspresikan di label.
  • Static services: backend yang jarang berubah.

Best Practices

  • Organisasi per layanan: satu file per domain layanan, bukan satu file raksasa.
  • Version control: simpan semua file dinamis di git bersama infra.
  • Template: untuk banyak environment, gunakan templating lalu render saat deploy.
  • Validasi sebelum deploy: uji YAML dengan parser lokal dan jalankan 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.

Penutup

Inti yang harus dibawa pulang:

  • File provider membaca YAML/TOML dari direktori dengan watch: true.
  • Struktur file: bagian http, tcp, udp, dan tls.
  • Hot reload berlaku; file rusak ditolak tanpa mengganggu konfigurasi lama.
  • Router bisa merujuk service lintas file dalam satu namespace.
  • File provider ideal untuk layanan non-container dan routing kompleks.
  • Simpan file di version control dan validasi sebelum deploy.

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.

Belajar Traefik - File Provider & Dynamic Configuration | Belajar Traefik