I have the following YAML (test.yaml) file that allows me to create ingress router and middleware for traefik 2
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: test
namespace: qa
spec:
entryPoints:
- web
routes:
- match: Host(`my-url.com`) && PathPrefix(`/test`)
kind: Rule
services:
- name: test
port: 8000
middlewares:
- name: testmiddle
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: testmiddle
namespace: qa
spec:
stripPrefix:
prefixes:
- /test
Following files works. However, when I try to remove it using the following command:
kubectl delete -f test.yaml
Traefik complains that middleware and ingress router is not preset. Example of error as follows:
time="2021-07-09T18:15:12Z" level=error msg="middleware \"qa-test@kubernetescrd\" does not exist" routerName=qa-test-29c010046e0ec473d890@kubernetescrd entryPointName=web
time="2021-07-09T18:15:25Z" level=error msg="middleware \"qa-test@kubernetescrd\" does not exist" entryPointName=web routerName=qa-test-29c010046e0ec473d890@kubernetescrd
time="2021-07-09T18:15:25Z" level=error msg="middleware \"qa-test@kubernetescrd\" does not exist" entryPointName=web routerName=qa-test-29c010046e0ec473d890@kubernetescrd
time="2021-07-09T18:31:44Z" level=error msg="middleware \"qa-test@kubernetescrd\" does not exist" entryPointName=web routerName=qa-test-29c010046e0ec473d890@kubernetescrd
Do you know how to remove middleware and ingress routers without error?
Try editing the IngressRoute to remove Middleware from IngressRoute first and then delete the Middleware and then the IngressRoute.
kubectl edit ingressroute test -n qa;
kubectl delete middleware testmiddle -n qa;
kubectl delete ingressroute test -n qa
since these are crd's, API-server won't delete them in the right order when deleting from a file and you would see error messages in the logs.