Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

530
Vistas
Proxy backend a través de frontend usando istio o nginx

Estoy tratando de encontrar la mejor manera de integrar Istio en mi aplicación, que consta de una interfaz React (servida por Nginx) y una API Django Rest Framework. Pude hacer que funcionara usando la siguiente configuración de nginx y los archivos de kubernetes específicos de istio:

 server { listen 80; root /app/build; location / { try_files $uri $uri/ /index.html; } }
 # Source: myapp/gateway.yaml apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: myapp-gateway spec: selector: istio: ingressgateway # use istio default controller servers: - port: number: 80 name: http protocol: HTTP hosts: - '*' - port: number: 443 name: https protocol: HTTP hosts: - '*' --- # Source: myapp/virtual-service.yaml apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: myapp spec: hosts: - '*' gateways: - myapp-gateway http: - match: - port: 80 route: - destination: host: frontend-svc port: number: 80 - match: - port: 443 route: - destination: host: backend-svc port: number: 8000

Y el frontend puede llegar al backend en localhost:443 . Tenga en cuenta que estoy sirviendo el back-end en el puerto 443 (en lugar de 8000) debido a un problema relacionado con la puerta de enlace istio que no funciona con ningún puerto que no sea 80 y 443 .

Independientemente, este enfoque expone AMBOS, el front-end y el back-end fuera del clúster, lo que se siente como una exageración. ¿Hay alguna forma de configurar esto para que solo la interfaz se exponga explícitamente y pueda transmitir el backend a través de la interfaz? ¿Usando istio o nginx?

Puede que esté muy lejos de aquí, pero parece que esto puede ser complicado porque el cliente está haciendo la llamada al backend. ¿Tendría que encontrar una manera de hacer la llamada dentro del clúster y devolverla al cliente?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Según tengo entendido, debería funcionar así.

 user -> istio ingressgateway -> istio virtual service -> frontend service -> nginx -> backend service

El servicio virtual de Istio debería tener este aspecto, por lo que solo se expone el frontend y luego configura su nginx para que actúe como proxy del backend a través del frontend.

 apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: myapp spec: hosts: - '*' gateways: - myapp-gateway http: - route: - destination: host: frontend-svc port: number: 80

Para empezar, recomendaría echar un vistazo a la documentación de kubernetes sobre Conectar un front-end a un back-end usando un servicio y, más específicamente, mirar la configuración de nginx que conecta el front-end con el servicio de back-end.


Y algunos tutoriales de django + reaccionar que podrían ayudar:

  • https://medium.com/@gazzaazhari/django-backend-react-frontend-basic-tutorial-6249af7964e4
  • https://blog.miguelgrinberg.com/post/how-to-create-a-react--flask-project
  • https://felipelinsmachado.com/conectando-django-reactjs-via-nginx-using-docker-containers/
  • https://github.com/felipelm/django-nginx-reactjs-docker
over 4 years ago · Santiago Trujillo Denunciar

0

Finalmente descubrí esto haciendo enrutamiento basado en rutas (gracias @DavidMaze por el útil comentario):

 # Source: myapp/gateway.yaml apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: myapp-gateway spec: selector: istio: ingressgateway # use istio default controller servers: - port: number: 80 name: http protocol: HTTP hosts: - '*' --- # Source: myapp/virtual-service.yaml apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: myapp spec: hosts: - '*' gateways: - myapp-gateway http: - match: - uri: prefix: '/api' route: - destination: host: backend-svc port: number: 8000 - route: - destination: host: frontend-svc port: number: 80
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda