Minikube环境下如何通过单一Kubernetes端点暴露React前端与Python后端
Minikube环境前后端统一入口最优方案:Ingress路由
方案选型说明
你当前的场景是前端静态资源由Nginx提供,接口请求从用户浏览器发起,需要统一对外端点,最优方案是使用Kubernetes Ingress作为统一接入层,基于路径规则分发请求:
- 路径前缀为
/的请求转发到前端fe-service,返回React静态资源 - 路径前缀为
/api的请求转发到后端be-service,处理业务接口
这种方案天然解决浏览器跨域问题,无需修改前后端业务逻辑,符合K8s原生设计规范。
具体实施步骤
1. 开启Minikube Ingress控制器
Minikube默认没有启用Ingress控制器,先执行命令开启:
minikube addons enable ingress
等待控制器Pod启动完成,可以用kubectl get pods -n ingress-nginx验证状态。
2. 编写Ingress配置文件
新建app-ingress.yaml,内容如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: app-ingress annotations: # 如果后端接口没有/api前缀,添加这个注解重写路径,去掉/api前缀再转发到后端 nginx.ingress.kubernetes.io/rewrite-target: /$2 spec: rules: - host: myapp.local # 自定义的本地访问域名 http: paths: - path: / pathType: Prefix backend: service: name: fe-service port: number: 80 - path: /api(/|$)(.*) pathType: Prefix backend: service: name: be-service port: number: 5000
执行命令应用配置:
kubectl apply -f app-ingress.yaml
3. 配置本地Hosts映射
先获取Minikube的IP地址:
minikube ip
修改本地Hosts文件(Linux/macOS路径为/etc/hosts,Windows路径为C:\Windows\System32\drivers\etc\hosts),添加如下映射:
[你获取到的Minikube IP] myapp.local
4. 验证访问
- 浏览器访问
http://myapp.local即可访问React前端页面 - 前端接口请求直接写
/api/[接口路径]即可,无需携带额外域名端口,会自动转发到后端Python服务
注意事项
- 如果不想配置Hosts,也可以删除Ingress配置里的
host字段,直接通过Minikube IP访问 - 如果后端接口本身就带
/api前缀,不需要路径重写,可以删除Ingress注解里的rewrite-target配置,同时把路径规则改为/api
内容的提问来源于stack exchange,提问作者joebegborg07
相关产品推荐
相关产品推荐

