Traefik refer that IngressRoute is mandatory for middleware but how to mix everything ? (ingressClass, KubernetesCRD and GatewayAPI). https://doc.traefik.io/traefik/reference/routing-configuration/kubernetes/gateway-api/#using-traefik-middleware-as-httproute-filter
We use CRD to define a namespaced middleware:
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: crowdsec-bouncer
namespace: default # middleware ressource is NAMESPACED
spec:
plugin:
crowdsec-bouncer:
enabled: true
crowdsecAppsecEnabled: true
crowdsecAppsecHost: crowdsec-appsec-service:7422
crowdsecAppsecFailureBlock: true
crowdsecAppsecUnreachableBlock: true
crowdsecMode: stream
crowdsecLapiScheme: http
crowdsecLapiHost: crowdsec-service.default.svc.cluster.local:8080
crowdsecLapiKey: XXXXXXXXXXXXXXXXXXXXxw
Gateway CRD to define a traefik's gatewayAPI:
---
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: traefik-gateway
namespace: default
spec:
gatewayClassName: traefik
# Only Routes from the same namespace are allowed.
listeners:
- allowedRoutes:
namespaces:
from: Same
name: web
port: 8000
protocol: HTTP
And HTTProute to create the route:
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: xxx-dashboard
namespace: default
spec:
parentRefs:
- name: traefik-gateway
hostnames:
- "xx.xx.xxx.xxx"
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: xx-xx-xx-myservice
port: 7280
filters:
- type: ExtensionRef
extensionRef:
group: traefik.io
kind: Middleware
name: crowdsec-bouncer
Doest someone as a working setup like this ?