It looks like something has broken between beta1 and rc1 related to IngressRoutes. In beta1 I was able to use IngressRoutes that matched a route with no service defined - only middleware. The use case is the normal kind of clean-up redirects one wants to do (www. vs naked, https vs http, etc). As of rc1 it appears that a route requires a service attached to it to function, and without this it will just continually throw errors like the following:
time="2019-08-27T20:12:28Z" level=error msg="the service \"staging/foo-website-staging-5e4ab2e6a612f393902f@kubernetescrd\" does not exist" entryPointName=web routerName=staging/foo-website-staging-5e4ab2e6a612f393902f@kubernetescrd
Here's the associated IngressRoute:
--- kind: IngressRoute apiVersion: traefik.containo.us/v1alpha1 metadata: name: foo-website-staging namespace: staging spec: entryPoints: - web routes: - match: Host(`foo.com`) || Host(`www.foo.com`) kind: Rule middlewares: - name: foo-scheme-domain-redirect
That IR works with beta1 but not rc1. If possible I would like to keep the service off the IR definition so that there's no risk of a misconfigured middleware allowing connections to "fall through" to an actual backend service. Is there a way to do this in rc1, or will I have to attach a dummy service to the route?