🎉 DevOps Interview Prep Bundle is live — 1000+ Q&A across 20 topicsGet it →
All Fixes
Today I Fixed

Traefik Gateway Provider Stuck After Gateway API v1.6 CRD Upgrade

TraefikAug 21, 202635 minutes to fixkubernetesgateway-apitraefiktroubleshooting

The Problem

After upgrading Gateway API CRDs to v1.6.1, Traefik was still running but stopped processing every Gateway API resource. Existing non-Gateway providers continued working, which made the failure look like an HTTPRoute configuration problem.

bash
kubectl get pods -n traefik
# traefik-...   1/1   Running
 
kubectl get gateway,httproute -A
# Resources exist, but status is not updated as expected

What Happened

The cluster was running Traefik v3.7 with the Kubernetes Gateway provider and experimentalChannel enabled. Gateway API v1.6 graduated TCPRoute to the Standard channel and serves it as gateway.networking.k8s.io/v1.

Traefik v3.7 still expected the older v1alpha2 TCPRoute API when experimental support was enabled. After installing only the v1.6 Standard CRDs, that API was no longer served. The provider could not complete startup, even though the Traefik process itself remained healthy.

bash
kubectl api-resources | grep -E 'tcproute|httproute|gatewayclass'
kubectl logs -n traefik deploy/traefik | grep -i gateway

The Fix

For Traefik v3.7, install the Gateway API v1.6.1 experimental CRDs when experimentalChannel is enabled:

bash
kubectl apply -f \
  https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.6.1/experimental-install.yaml
 
kubectl rollout restart deployment/traefik -n traefik
kubectl rollout status deployment/traefik -n traefik

Then verify that the provider is processing resources again:

bash
kubectl get gatewayclass
kubectl get gateway,httproute -A
kubectl describe httproute <route> -n <namespace>

Longer term, plan the Traefik v3.8 upgrade, where the documented Gateway API v1.6 compatibility changes remove this specific v3.7 transition requirement.

Root Cause

The Gateway API CRDs and controller version were upgraded independently. Traefik was alive, but its Gateway provider expected a resource version that the newly installed Standard CRDs did not serve.

Always verify this compatibility set together:

text
Traefik version
Gateway API CRD version
Standard vs Experimental channel
kubernetesGateway.experimentalChannel setting

Source: https://doc.traefik.io/traefik/migrate/v3/