Puncte:0

AWS EKS Ingress Timeout pe orice cale non-root

drapel fr

Am configurat o resursă Ingress pe clusterul nostru EKS cu rescrieri din /.* pe echilibrul de încărcare la URI-ul care se potrivește în amonte. Dacă vizităm staging.my-domain.com/, vedem un răspuns de succes la verificarea sănătății, așa cum era de așteptat. Cu toate acestea, orice altă adresă URL, de ex. /api/, are ca rezultat un timeout de la echilibratorul de încărcare. Mai jos este configurația. (SSL este dezactivat deocamdată în timp ce ne dăm seama). Orice ajutor ar fi apreciat!

# Controller de intrare: https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.2/deploy/installation/
# YAML: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/alb-ingress.md
apiVersion: networking.k8s.io/v1
fel: Intrare
metadate:
  adnotari:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    external-dns.alpha.kubernetes.io/hostname: staging.my-domain.com
    nginx.ingress.kubernetes.io/ssl-redirect: „fals”
    nginx.ingress.kubernetes.io/force-ssl-redirect: „fals”
    nginx.ingress.kubernetes.io/rewrite-target: /
  nume: nlx-api
specificație:
  reguli:
  - gazdă: staging.my-domain.com
    http:
      trasee:
      - cale: /
        pathType: Prefix
        backend:
          serviciu:
            nume: our-api
            port:
              număr: 80
---

apiVersion: v1
fel: Serviciu
metadate:
  nume: our-api
specificație:
  porturi:
  - nume: http
    port: 80
    targetPort: 8080
  tip: LoadBalancer
  selector:
    aplicație: our-api
Puncte:0
drapel id

Arata ca a ta Rescrie Ținta este greșită. Uită-te la acest exemplu general de la documentație:

apiVersion: networking.k8s.io/v1
fel: Intrare
metadate:
  adnotari:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  nume: rescrie
  spatiu de nume: implicit
specificație:
  reguli:
  - gazdă: rewrite.bar.com
    http:
      trasee:
      - backend:
          serviceName: http-svc
          servicePort: 80
        cale: /ceva(/|$)(.*)

În această definiție de intrare, orice caractere capturate de (.*) va fi atribuit substituentului $2, care este apoi folosit ca parametru în rescriere-ţintă adnotare. De exemplu, definiția de intrare de mai sus va avea ca rezultat următoarele rescrieri:

  • rewrite.bar.com/something rescrie la rewrite.bar.com/
  • rewrite.bar.com/something/ rescrie la rewrite.bar.com/
  • rewrite.bar.com/something/new rescrie la rewrite.bar.com/new

În situația dvs., dacă încercați să accesați staging.my-domain.com/, sunteți rescris la aceeași adresă. Totul e bine. Dar poți rescrie doar această adresă. Ar trebui să vă schimbați manifestul astfel:

apiVersion: networking.k8s.io/v1
fel: Intrare
metadate:
  adnotari:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    external-dns.alpha.kubernetes.io/hostname: staging.my-domain.com
    nginx.ingress.kubernetes.io/ssl-redirect: „fals”
    nginx.ingress.kubernetes.io/force-ssl-redirect: „fals”
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  nume: nlx-api
specificație:
  reguli:
  - gazdă: staging.my-domain.com
    http:
      trasee:
      - cale: /(.*)
        pathType: Prefix
        backend:
          serviciu:
            nume: our-api
            port:
              număr: 80

În această situație orice personaje capturate de (.*) va fi atribuit substituentului $1(acesta este primul grup de captură), care este apoi folosit ca parametru în rescriere-ţintă adnotare.

DragonBobZ avatar
drapel fr
Hm, am folosit de fapt această configurație ca parte a depanării înainte și tocmai am încercat-o din nou. Acesta spune: `Model de compilare eșuat din cauza intrării: our-namespace/our-api: calea prefixului nu trebuie să conțină wildcards: /(.*)`
Mikołaj Głodziak avatar
drapel id
Încercați să adăugați adnotare `nginx.ingress.kubernetes.io/use-regex: „true”`. Puteți citi mai multe [aici](https://kubernetes.github.io/ingress-nginx/user-guide/ingress-path-matching/#regular-expression-support). De asemenea, puteți vedea o descriere a [acest bug](https://github.com/kubernetes/kubernetes/issues/41881). Se pare că încă nu a fost reparat.

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.