apache-spark - 使用 Istio 网关和 VirtualService 时无法加载 Web 应用程序依赖项(JS、CSS)
问题描述
我正在使用 Helm 来部署各种包(PrestoDB、Apache Spark 等),对于这些工具中的每一个,我只是使用 Helm 使用基本配置来部署它们。
https://github.com/helm/charts/tree/master/stable/spark
https://github.com/helm/charts/tree/master/stable/presto
两者都仅使用 ClusterIP 服务进行部署以公开 Web UI,然后我创建一个网关,并使用 Istio 向 Web 应用程序的 VirtualService 可以在集群外部公开。使用 Helm 部署 PrestoDB 后,这是我部署的 Gateway 和 VirtualService:
kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: presto-gateway
namespace: warehouse
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: presto
namespace: warehouse
spec:
hosts:
- "*"
gateways:
- presto-gateway
http:
- match:
- uri:
prefix: /ui
route:
- destination:
host: presto-warehouse
port:
number: 8080
EOF
这成功了,但是当我去加载 PrestoDB Web UI 时,我只看到文本,并且我可以在控制台中看到它似乎几乎所有的 JS/CSS 依赖项都无法加载。我可以看到,当我转到“ingressgateway/ui”时,只有一些纯文本,所有依赖项似乎只是从“ingressgateway”加载,而不是“ingressgateway/ui/vendor/xxx.js”等. 有没有办法重新路由网络应用程序从尝试从基域加载依赖项并在其前面加上“/ui”以便加载?当我尝试启动多个服务并将它们放在入口网关后面时,会发生这种情况 - spark 和其他服务都可以正常工作,但是 Web 应用程序在加载依赖项时遇到问题,您只能看到纯文本。
谢谢
解决方案
由于您使用 istio 您是否在集群中启用了sidecar 注入?
有没有办法重新路由 Web 应用程序从尝试从基域加载依赖项并在其前面加上“/ui”以便加载?
如果我理解正确,您可以使用虚拟服务中存在的重写。
推荐阅读
- java - 如何在 Java 中发出 PATCH 请求(使用 SSL)?
- javascript - 使用 .filter 过滤两个数组
- html - 如何在 Bootstrap 中居中对齐多个列?
- python-3.x - pgAdmin4 在 OpenSUSE Leap 15.2 上不显示服务器连接
- java - 使用Hashmap记忆递归解决方案导致Apple Division CSES问题超出时间限制
- python - 在 fipy 中解决耦合偏微分方程的最佳方法
- git - 永久链接到 Github 私人仓库中的原始文件
- reporting-services - 如何手动测试 SSRS 报告
- ruby-on-rails - 我想从我的 rails rails 应用程序中的某些页面中删除页眉或页脚
- angular - 如何使用 tsconfig 文件从构建中动态排除模块