migrăm (în sfârșit) de la Traefik 1 la 2. Rulăm peste 400 de aplicații pe GKE. Singura noastră provocare rămasă este aceasta:
În Traefik 1, setăm o adnotare pe intrarea fiecărei aplicații, care adaugă un antet la cerere la backend. Valoarea acelui antet este unică pentru fiecare Intrare. Iată un exemplu cu valoarea . Fiecare aplicație are o altă valoare în intrarea sa.:
---
apiVersion: networking.k8s.io/v1
fel: Intrare
metadate:
nume: testapp
spatiu de nume: test
adnotari:
ingress.kubernetes.io/custom-request-headers: X-Backend-Hint:<appname>
specificație:
...
Traefik 2 nu mai acceptă acest antet. Se pare că singura modalitate de a adăuga un astfel de antet de solicitare la fiecare aplicație este prin crearea unui middleware unic customRequestHeaders pentru fiecare valoare unică, apoi adăugarea acelui middleware la Ingress potrivit. Ca astfel:
---
apiVersion: traefik.containo.us/v1alpha1
fel: Middleware
metadate:
nume: backend-hint-header
spatiu de nume: test
specificație:
anteturi:
customRequestHeaders:
X-Backend-Hint: <nume aplicație>
---
apiVersion: networking.k8s.io/v1
fel: Intrare
metadate:
nume: testapp
spatiu de nume: test
adnotari:
traefik.ingress.kubernetes.io/router.middlewares: test-backend-hint-header@kubernetescrd
specificație:
...
Automatizarea acestui lucru este, desigur, posibilă, dar înseamnă implementarea a peste 400 de middleware-uri aproape identice. Asta nu va cauza probleme lui Traefik?
Este chiar acesta cel mai bun mod? Sau putem folosi cumva un singur middleware cu o variabilă transmisă printr-o adnotare Ingress? Poate altceva la care nu m-am gândit?
În acest moment, din cauza compatibilității cu alte instrumente care fac referire la Ingressuri, cum ar fi cert-manager și external-dns, nu putem folosi încă CRD-ul IngressRoute, dar trebuie să folosim Ingress clasic.