Thanks, I attempted to follow these steps as well from 14-18 (since I already have a cluster running, with the whoami service deployed). These steps work for me and I can get the same 404 not found as you show in step 18. But I'm unable to adapt the remaining steps to configure the HTTPRoute. I suspect it is due to Traefik deploying its gateway on ports 9100, 9000, 8000, 8443 like this:
$ kubectl describe deployments.apps traefik --namespace traefik
Name: traefik
Namespace: traefik
CreationTimestamp: Fri, 09 Aug 2024 17:13:57 +0200
Labels: app.kubernetes.io/instance=traefik-traefik
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=traefik
helm.sh/chart=traefik-30.0.2
Annotations: deployment.kubernetes.io/revision: 3
field.cattle.io/publicEndpoints:
[{"addresses":["10.0.0.192","10.0.0.35","10.0.0.80"],"port":80,"protocol":"TCP","serviceName":"traefik:traefik","allNodes":false},{"addres...
meta.helm.sh/release-name: traefik
meta.helm.sh/release-namespace: traefik
Selector: app.kubernetes.io/instance=traefik-traefik,app.kubernetes.io/name=traefik
Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 0 max unavailable, 1 max surge
Pod Template:
Labels: app.kubernetes.io/instance=traefik-traefik
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=traefik
helm.sh/chart=traefik-30.0.2
Annotations: prometheus.io/path: /metrics
prometheus.io/port: 9100
prometheus.io/scrape: true
Service Account: traefik
Containers:
traefik:
Image: docker.io/traefik:v3.1.0
Ports: 9100/TCP, 9000/TCP, 8000/TCP, 8443/TCP
Host Ports: 0/TCP, 0/TCP, 0/TCP, 0/TCP
Args:
--global.checknewversion
--global.sendanonymoususage
--entryPoints.metrics.address=:9100/tcp
--entryPoints.traefik.address=:9000/tcp
--entryPoints.web.address=:8000/tcp
--entryPoints.websecure.address=:8443/tcp
--api.dashboard=true
--ping=true
--metrics.prometheus=true
--metrics.prometheus.entrypoint=metrics
--providers.kubernetescrd
--providers.kubernetesgateway
--entryPoints.websecure.http.tls=true
--log.level=INFO
Liveness: http-get http://:9000/ping delay=2s timeout=2s period=10s #success=1 #failure=3
Readiness: http-get http://:9000/ping delay=2s timeout=2s period=10s #success=1 #failure=1
Environment:
POD_NAME: (v1:metadata.name)
POD_NAMESPACE: (v1:metadata.namespace)
Mounts:
/data from data (rw)
/tmp from tmp (rw)
Volumes:
data:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium:
SizeLimit: <unset>
tmp:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium:
SizeLimit: <unset>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: traefik-79d87d8b84 (0/0 replicas created), traefik-566cf58d7c (0/0 replicas created)
NewReplicaSet: traefik-7c7587b647 (1/1 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 40m deployment-controller Scaled up replica set traefik-566cf58d7c to 1
Normal ScalingReplicaSet 40m deployment-controller Scaled down replica set traefik-79d87d8b84 to 0 from 1
Normal ScalingReplicaSet 4m4s deployment-controller Scaled up replica set traefik-7c7587b647 to 1
Normal ScalingReplicaSet 4m1s deployment-controller Scaled down replica set traefik-566cf58d7c to 0 from 1
While the gateway is configured to send traffic to ports 80 and 443 like this, so it is complaining that nothing is configured to listen:
$ kubectl describe gtw traefik
Name: traefik
Namespace: default
Labels: <none>
Annotations: <none>
API Version: gateway.networking.k8s.io/v1
Kind: Gateway
Metadata:
Creation Timestamp: 2024-08-09T16:12:26Z
Generation: 1
Resource Version: 72117
UID: bbcc6285-cdcc-4a47-9cd2-cb5250f3e8dd
Spec:
Gateway Class Name: traefik
Listeners:
Allowed Routes:
Namespaces:
From: Same
Name: http
Port: 80
Protocol: HTTP
Allowed Routes:
Namespaces:
From: Same
Name: https
Port: 443
Protocol: HTTPS
Tls:
Certificate Refs:
Group:
Kind: Secret
Name: secret-tls
Namespace: default
Mode: Terminate
Status:
Conditions:
Last Transition Time: 2024-08-09T16:19:16Z
Message: All Listeners must be valid
Observed Generation: 1
Reason: ListenersNotValid
Status: False
Type: Accepted
Listeners:
Attached Routes: 0
Conditions:
Last Transition Time: 2024-08-09T16:19:16Z
Message: Cannot find entryPoint for Gateway: no matching entryPoint for port 80 and protocol "HTTP"
Observed Generation: 1
Reason: PortUnavailable
Status: False
Type: Accepted
Name: http
Supported Kinds:
Attached Routes: 0
Conditions:
Last Transition Time: 2024-08-09T16:19:16Z
Message: Cannot find entryPoint for Gateway: no matching entryPoint for port 443 and protocol "HTTPS"
Observed Generation: 1
Reason: PortUnavailable
Status: False
Type: Accepted
Name: https
Supported Kinds:
Events: <none>
I did enable debug logs on Traefik and got this potentially interesting message which probably shouldn't be skipped:
2024-08-09T14:56:52Z DBG github.com/traefik/traefik/v3/pkg/provider/kubernetes/gateway/kubernetes.go:250 > Skipping Kubernetes event kind *v1.HTTPRoute providerName=kubernetesgateway
Thanks again for your kind help trying to dig my way out of this! I'll try and start again from scratch carefully checking each step for success on Monday.