gpt4 book ai didi

django - 使用istio或nginx通过前端代理后端

转载 作者:行者123 更新时间:2023-12-02 12:12:02 26 4
gpt4 key购买 nike

我试图找出将Istio集成到我的应用程序中的最佳方法,该方法由React前端(由Nginx提供)和Django Rest Framework API组成。我可以使用以下nginx配置和特定于istio的kubernetes文件使其工作:

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

前端可以通过 localhost:443到达后端。注意,由于 some issue regarding the istio gateway not working with any port other than 80 and 443,我在端口443(而不是8000)上提供后端服务。

无论如何,这种方法都将前端和后端同时暴露在集群外部,这感觉有些过时了。无论如何要进行设置,以便仅显式公开前端,并且我可以通过前端代理后端?使用istio还是Nginx?

我可能不在这里,但是听起来这可能很棘手,因为客户端正在调用后端。我必须找出一种方法来在集群内部进行调用并将其返回给客户端?

最佳答案

据我了解,它应该像这样工作。

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

Istio虚拟服务应如下所示,因此仅公开前端,然后将nginx配置为通过前端代理后端。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: myapp
spec:
hosts:
- '*'
gateways:
- myapp-gateway
http:
- route:
- destination:
host: frontend-svc
port:
number: 80

首先,我建议您看一下有关 Connect a Front End to a Back End Using a Service的kubernetes文档,更具体地说,请看一下将前端与后端服务连接起来的 nginx configuration

一些django + react教程可能会有所帮助:
  • 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/connecting-django-reactjs-via-nginx-using-docker-containers/
  • https://github.com/felipelm/django-nginx-reactjs-docker
  • 关于django - 使用istio或nginx通过前端代理后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61669890/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com