Puncte:0

Variabila URL de backend nu indică portul corect

drapel in

Tocmai am implementat pod-uri frontend și backend și există o problemă cu conectivitatea între ele.

Podul backend este configurat în felul următor:

apiVersion: v1
fel: Pod
metadate:
  nume: af-backend-pod
  etichete:
    nume: af-backend-pod
    aplicație: format adv
specificație:
  containere:
  - nume: af-backend
    imagine: localhost:5000/backend:1.2
    porturi:
    - containerPort: 4040
    env:
    - nume: NODE_ENV
      valoare: "test"

Serviciul backend pod:

apiVersion: v1
fel: Serviciu
metadate:
  nume: af-backend
  etichete:
    nume: af-backend-service
    aplicație: format adv
specificație:
  porturi:
  - port: 4040
    targetPort: 6011
  selector:
    nume: af-backend-pod
    aplicație: format adv

Problema apare atunci când interfața încearcă să apeleze backend-ul folosind numele definit în configurația pod:

apiVersion: v1
fel: Pod
metadate:
  nume: af-frontend-pod
  etichete:
    nume: af-frontend-pod
    aplicație: format adv
specificație:
  containere:
  - nume: af-frontend
    imagine: localhost:5000/frontend:1.1
    porturi:
    - containerPort: 80
    env:
    - nume: REACT_APP_SETUP
      valoare: "test"
    - nume: REACT_APP_BACKEND_URL
      valoare: "af-backend" # <- this
    - nume: REACT_APP_BACKEND_PORT
      valoare: "6011"

În prezent, frontend-ul este expus de un serviciu NodePort la portul 30120. Erorile de înregistrare în consolă arată că frontend-ul încearcă să apeleze backend-ul folosind URL-ul ca http://10.11.12.13:30120/ care este incorect: m-aș aștepta să văd API-ul backend la portul 6011, intern.

Este corectă înțelegerea mea? Sau ar trebui să expun serviciul de backend pentru a fi accesibil și extern?

Sau poate există o modalitate de a formata adresa URL a backend-ului, decupând portul și înlocuindu-l cu cel dorit?

Mikołaj Głodziak avatar
drapel id
Ce versiune de Kubernetes ați folosit și cum ați configurat clusterul? Ați folosit instalație bare metal sau vreun furnizor de cloud? Este important să vă reproduceți problema.
AbreQueVoy avatar
drapel in
Hej MikoÅaj. Este un cluster cu 3 noduri care rulează pe instanțe de server OpenStack. A fost instalat cu Kubespray; toate nodurile rulează v1.22.2.
Mikołaj Głodziak avatar
drapel id
dacă văd corect, setați doar o variabilă pentru gazda respectivă. Folosești vreo intrare?
AbreQueVoy avatar
drapel in
Nu, folosesc doar NodePort.Și presupun că problema aici este legată de faptul că variabilele React sunt configurate în timpul construirii, în timp ce aici sunt necesare în timpul rulării.
Mikołaj Głodziak avatar
drapel id
Este posibil să-l codificați în imagine?
Puncte:0
drapel br

Problema este în configurația sevice.spec.ports a podului Backend. Portul țintă este portul unde serviciul va redirecționa traficul. În acest caz, este 4040, deoarece podul backend ascultă pe 4040. Și portul de serviciu ar trebui să fie 6011, deoarece podul FE va apela serviciul pe acest port. Nu este nevoie să expuneți serviciul backend ca NodePort. De asemenea, puteți încerca comanda netcat din containerul FE pentru a verifica dacă serviciul este accesibil. Comanda: nc -v Service_IP 6011 (așteptați „Succeeded” ca răspuns.)

apiVersion: v1
fel: Serviciu
metadate:
  nume: af-backend
  etichete:
    nume: af-backend-service
    aplicație: format adv
specificație:
  porturi:
  - port: 4040 << Wrong Ar trebui să fie 6011; FE Pod sună serviciul la 6011
    targetPort: 6011 << Greșit Ar trebui să fie 4040; portul containerului backend pod 4040
  selector:
    nume: af-backend-pod
    aplicație: format adv
AbreQueVoy avatar
drapel in
Mulțumesc, @Rajesh Dutta. Am schimbat `targetPort` să fie și 4040 și acest port este expus acum. Cu toate acestea, încă nu există conectivitate între frontend și backend atunci când vorbim despre site web, dar backend-ul este accesibil din interiorul containerului frontend. Ce ar putea bloca traficul, presupunând că front-end-ul site-ului apelează adresa URL corectă a backend-ului?
Rajesh Dutta avatar
drapel br
Ați schimbat și câmpul `port` la 6011? (1) Încercați să faceți nslookup af-backend și să vedeți dacă DNS-ul se rezolvă în FE. (2) Încercați cu această setare în podul FE. În mod normal, nu este necesar. - nume: REACT_APP_BACKEND_URL valoare: „af-backend.default.svc”

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.