3

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?

mpromonet
  • 11,326
  • 43
  • 62
  • 91
Kush Patel
  • 3,685
  • 5
  • 42
  • 65
  • 1
    maybe try to edit and 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, APIserver won't delete them in the right order when deleting from a file and you would see error messages in the logs – rebelution Jul 27 '21 at 08:18
  • Can you please put that in answer. I will accept answer – Kush Patel Jul 27 '21 at 15:03
  • @[kush Patel] added, thank you – rebelution Jul 27 '21 at 15:57

1 Answers1

2

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.

rebelution
  • 389
  • 2
  • 13