Puncte:0

Kubernetes ingress înlocuiește calea

drapel cn

Am două servicii API de backend:

  1. api-service-v1
  2. api-service-v2

Ambele răspund pe calea „/api/”.

Am această configurație care funcționează bine ca o configurație docker-compose unde serviciul nginx servește ca proxy cu următorul fișier de configurare

/etc/nginx/conf.d/default.conf:

Server {
    ...

    locație /apiv1/ {
        proxy_pass http://api-service-v1/api/;
    }
    ...

    locație /apiv2/ {
        proxy_pass http://api-service-v2/api/;
    }
    ...
}

Acum aș dori să implementez configurarea în clusterul k8s. Am rămas blocat cu configurația de intrare. ingress.yml:

apiVersion: networking.k8s.io/v1
fel: Intrare
metadate:
  nume: dev-ingress
  adnotari:
    nginx.ingress.kubernetes.io/use-regex: „adevărat”

specificație:
  reguli:
    - gazdă: demo.com
      http:
        trasee:
          - pathType: Prefix
            cale: "/"
            backend:
              serviciu:
                nume: serviciul frontend
                port:
                  număr: 80

          - pathType: Prefix
            cale: "/apiv1/"
            backend:
              serviciu:
                nume: api-service-v1
                port:
                  număr: 80

          - pathType: Prefix
            cale: "/apiv2/"
            backend:
              serviciu:
                nume: api-service-v2
                port:
                  număr: 80

Calea „/” funcționează bine. Dar căile „/apiv1/” și „/apiv2/” nu funcționează.

Te rog ajuta-ma.

Mulțumiri!

Puncte:0
drapel us

Intrarea va redirecționa doar întreaga cale către serviciu.

De exemplu. ta api-service-v1 va fi lovit de URL-uri precum https://yourhost/apiv1/asdfq

Dacă doriți ca intrarea să modifice calea folosită pentru a accesa serviciul, trebuie să îi spuneți să rescrie, așa cum este descris în: https://kubernetes.github.io/ingress-nginx/examples/rewrite/

Schimbare cale de căi de serviciu api către /apiv1(/|$)(.*) și /apiv2(/|$)(.*) respectiv.

Apoi adauga nginx.ingress.kubernetes.io/rewrite-target: /api$1$2 adnotare.

Din păcate, asta înseamnă, de asemenea, că dvs./trebuie să fie într-o altă intrare, altfel cererile pentru frontend vor fi, de asemenea, rescrise pentru a atinge /api/ în serviciul dumneavoastră frontend.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.