Belajar Traefik - Kubernetes CRDs - IngressRoute
Episode 21 of 31

Belajar Traefik - Kubernetes CRDs - IngressRoute

Episode ini membahas Traefik CRDs: IngressRoute untuk HTTP, IngressRouteTCP dan IngressRouteUDP, Middleware CRD, TLSOption dan TLSStore, syntax routes dan services, referensi lintas namespace, serta fitur lanjutan seperti weighted services, traffic splitting, dan mirroring di Kubernetes.

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

Pendahuluan

Resource Ingress standar cukup untuk routing dasar, tapi terbatas: tidak ada middleware, tidak ada weighted service, tidak ada dukungan TCP/UDP. Episode 21 memperkenalkan Traefik CRDs — Custom Resource Definitions yang membuat Traefik di Kubernetes setara dengan semua kemampuan yang sudah kalian pelajari di episode-episode sebelumnya.

Dengan IngressRoute, konfigurasi Kubernetes Traefik menjadi nyaris identik dengan file provider: routes, services, middlewares, dan tls ditulis langsung dalam resource YAML. Ini adalah cara yang paling disarankan memakai Traefik di Kubernetes modern.

Mengenal Traefik CRDs

Enam Resource Utama

  • IngressRoute: routing HTTP (kombinasi router + rule + service).
  • IngressRouteTCP: routing TCP dengan rule HostSNI.
  • IngressRouteUDP: routing UDP.
  • Middleware: middleware yang dapat dipakai ulang lintas resource.
  • TLSOption: opsi TLS seperti versi, cipher, dan mTLS.
  • TLSStore: mengatur default certificate dan penyimpanan sertifikat.
  • ServersTransport: opsi koneksi transport ke backend.

Semua resource ini didaftarkan saat install Traefik via Helm — deployment Traefik di Kubernetes biasanya sudah mengaktifkan CRDs secara otomatis. Cek dengan kubectl get crd dan filter kata traefik untuk memastikan.

IngressRoute

Syntax Routes dan Services

IngressRoute menggantikan Ingress standar dengan struktur yang lebih eksplisit:

IngressRoute dasar
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: web
  namespace: default
spec:
  entryPoints:
    - web
  routes:
    - kind: Rule
      match: Host(`app.example.com`) && PathPrefix(`/api`)
      middlewares:
        - name: api-rate
          namespace: default
      services:
        - name: api-service
          port: 8080
  • entryPoints: daftar entrypoint yang dilayani.
  • match: rule Traefik lengkap — sama sintaksnya dengan episode 6.
  • middlewares: daftar middleware CRD beserta namespace-nya.
  • services: backend tujuan dengan name dan port.

Keunggulan atas Ingress Standar

  • Middleware native: tempel BasicAuth, rate limit, atau headers langsung di resource.
  • Rule Traefik penuh: semua matcher dan operator episode 6 tersedia.
  • Dukungan TCP/UDP: routing non-HTTP dalam satu keluarga resource.
  • Kontrol granular: priority, tls options, dan weighted services.

Middleware CRD

Middleware yang Dapat Dipakai Ulang

Middleware didefinisikan sebagai resource terpisah, lalu dirujuk oleh IngressRoute:

Middleware CRD
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: api-rate
  namespace: default
spec:
  rateLimit:
    average: 100
    burst: 50

Referensi lintas namespace memakai sintaks nama@namespace atau field namespace eksplisit. Traefik v3 juga memperkenalkan namespaces pada middleware: middleware yang dirujuk dengan name@namespacename bisa di-share lintas namespace jika diizinkan. Ini membuat tim bisa berbagi middleware keamanan tanpa duplikasi.

TLSOption dan TLSStore

Opsi TLS sebagai Resource

TLSOption yang tadi ditulis di file provider kini menjadi resource sendiri:

TLSOption CRD
apiVersion: traefik.io/v1alpha1
kind: TLSOption
metadata:
  name: hardened
  namespace: default
spec:
  minVersion: VersionTLS12
  cipherSuites:
    - TLS_AES_128_GCM_SHA256
  sniStrict: true

IngressRoute merujuknya di bagian tls.options:

IngressRoute dengan TLSOption
spec:
  entryPoints:
    - websecure
  routes:
    - kind: Rule
      match: Host(`app.example.com`)
      services:
        - name: app-service
          port: 443
  tls:
    options:
      name: hardened
    certResolver: letsencrypt

Fitur Lanjutan

Weighted Services dan Traffic Splitting

Kemampuan canary yang dulu kita bangun dengan weighted service di file provider kini tersedia langsung di IngressRoute:

Traffic splitting canary
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: app-canary
  namespace: default
spec:
  entryPoints:
    - web
  routes:
    - kind: Rule
      match: Host(`app.example.com`)
      services:
        - name: app-stable
          port: 80
          weight: 9
        - name: app-v2
          port: 80
          weight: 1

Bobot 9:1 mengirim 90 persen trafik ke versi stabil dan 10 persen ke versi baru. Kenaikan bobot versi baru — misalnya jadi 5:5 — dilakukan dengan kubectl apply tanpa restart Traefik. Teknik yang sama bisa dipakai untuk mirroring dan sticky sessions dengan menambahkan sticky dan mirror di resource.

Tip

Untuk canary yang lebih halus, kombinasikan weighted services dengan Header rule: bagian kecil pengguna yang punya header khusus diarahkan ke versi baru, sisanya ke versi lama. Ini memberi kontrol presisi sebelum menaikkan bobot global.

Penutup

Inti yang harus dibawa pulang:

  • Traefik CRDs: IngressRoute, IngressRouteTCP/UDP, Middleware, TLSOption, TLSStore, ServersTransport.
  • IngressRoute menyatukan routes, services, middlewares, dan tls dalam satu resource.
  • Middleware CRD reusable lintas namespace dengan sintaks nama@namespace.
  • TLSOption dan TLSStore memindahkan opsi TLS ke resource Kubernetes.
  • Weighted services di IngressRoute memungkinkan canary dan traffic splitting.
  • CRD adalah cara paling ekspresif memakai Traefik di Kubernetes.

Di episode 22 selanjutnya kita akan membahas Kubernetes Service Mesh dengan Traefik Mesh — service mesh ringan berbasis SMI, fitur traffic splitting, circuit breaking, retry, dan observability, serta pola canary, A/B testing, dan blue-green deployment. Kalian akan melihat Traefik melampaui peran ingress controller.

Belajar Traefik - Kubernetes CRDs - IngressRoute | Belajar Traefik