Episode ini membuka fase Kubernetes: provider kubernetesingress, IngressClass dan resource Ingress, routing berbasis host dan path, annotation traefik.ingress.kubernetes.io untuk middleware dan entrypoints, TLS dengan Secret dan cert-manager, serta tipe Service Kubernetes yang mendukung Traefik.

Di cluster Kubernetes, Traefik berubah peran: dari edge router yang diawasi Docker menjadi Ingress Controller. Episode 20 membahas provider kubernetesingress — cara Traefik membaca resource Kubernetes standar Ingress, IngressClass, annotation, dan TLS. Episode 21 akan membawa kalian lebih jauh ke CRD IngressRoute yang eksklusif Traefik.
Perbedaan konsep dengan Docker cukup mendasar: alih-alih label per container, konfigurasi datang dari resource API Kubernetes yang dikelola lewat kubectl. Setelah episode ini, kalian akan paham kenapa Traefik menjadi salah satu ingress controller paling populer di dunia Kubernetes.
Provider diaktifkan di static config, dan Traefik menunggu resource yang menunjuk IngressClass bernama yang dikonfigurasi:
providers:
kubernetesIngress:
ingressClass: traefik
namespaces:
- default
- app-team
allowEmptyServices: trueingressClass: traefik: hanya memproses Ingress dengan ingressClassName: traefik.namespaces: membatasi namespace yang dipantau; kosong berarti semua.allowEmptyServices: mengizinkan endpoint backend kosong.IngressClass itu sendiri didefinisikan sebagai resource:
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: traefik
spec:
controller: traefik.io/ingress-controllerResource Ingress standar memakai rules untuk mendefinisikan host dan paths untuk route per path:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web
namespace: default
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web,websecure
traefik.ingress.kubernetes.io/router.middlewares: default-auth@kubernetescrd
spec:
ingressClassName: traefik
rules:
- host: app.example.com
http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: api-service
port:
number: 8080
- path: /
pathType: Prefix
backend:
service:
name: web-service
port:
number: 80Path /api/* diteruskan ke api-service, semua path lain ke web-service. Annotation menentukan entrypoint yang dipakai dan middleware yang ditempel. Template default-auth@kubernetescrd merujuk middleware CRD — kita bedah di episode 21.
Annotation traefik.ingress.kubernetes.io/* memetakan hampir semua kemampuan router Traefik:
router.entrypoints: daftar entrypoint yang dilayani.router.middlewares: middleware chain yang dipakai.router.tls: aktivasikan TLS pada router.router.certresolver: certificate resolver untuk sertifikat otomatis.router.priority: nilai priority manual.Contoh annotation untuk entrypoint HTTPS sekaligus certificate resolver:
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
traefik.ingress.kubernetes.io/router.certresolver: letsencryptAnnotation router.tls menyalakan TLS pada router, dan router.certresolver menghubungkannya ke resolver yang didefinisikan di static config. Kombinasi keduanya membuat Traefik menerbitkan dan menghidangkan sertifikat secara otomatis.
Dua jalur sertifikat yang umum di Kubernetes:
tls.crt dan tls.key, lalu menyebutnya di bagian tls Ingress.cert-manager.io/cluster-issuer mengaktifkannya.apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app-tls
namespace: default
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
ingressClassName: traefik
tls:
- hosts:
- app.example.com
secretName: app-tls-secret
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app-service
port:
number: 80Cert-manager membuat sertifikat, menulis Secret app-tls-secret, dan Traefik membaca Secret tersebut untuk menghidangkan HTTPS. Kombinasi ini adalah standar emas otomasi TLS di Kubernetes.
Traefik menemukan backend lewat resource Service:
Traefik membaca Endpoints dari service, bukan hanya IP virtual — jika pod di-scale, daftar endpoint berubah dan load balancing mengikutinya. Persis seperti auto-discovery Docker yang sudah kalian kenal.
Warning
Jika allowEmptyServices bernilai false (default) dan sebuah Service tidak memiliki Endpoints, Traefik menganggap konfigurasi tidak valid dan menolak pembaruan. Di banyak cluster, Ingress yang menunjuk Service kosong menjadi alasan kenapa router tidak muncul — cek dulu kubectl get endpoints.
Inti yang harus dibawa pulang:
kubernetesIngress membaca resource Ingress dengan ingressClassName yang cocok.rules dan http.paths.traefik.ingress.kubernetes.io/* mengatur entrypoint, middleware, dan TLS.Di episode 21 selanjutnya kita akan membahas kubernetes CRDs IngressRoute — resource eksklusif Traefik yang jauh lebih ekspresif: middleware, weighted services, traffic splitting, sticky sessions, dukungan TCP/UDP, dan referensi lintas namespace. Di sinilah Traefik benar-benar terasa "native" di Kubernetes.