kubernetes - 如何使用 ingress 在 kubernetes 中显示 speedtester
问题描述
我的集群中有一个网络速度测试器服务和部署。我想在我的 k8s 集群中的前端反应应用程序的窗口上显示小部件......我使用 iframe 如下。
const SpeedTest = (props) => {
return (
<div>
<Container>
<iframe className="speedTestFrame" src={`..path..`}></iframe>
<br />
</Container>
</div>
);
};
我的 svc 看起来像这样:
apiVersion: v1
kind: Service
metadata:
name: speedtest
spec:
ports:
- name: "10000"
port: 10000
targetPort: 8080
selector:
app: speedtest
我的部分入口如下所示:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: speed-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /speedtest
pathType: Exact
backend:
serviceName: speedtest
servicePort: 10000
现在,当我使用它(速度测试器)作为我的默认根目录/
时,项目中只有一个入口,它工作正常。但是,我的根/
是前端反应应用程序。如果我像上面那样将它设置在自己的入口上,它会说网络错误并且不起作用。
有没有其他方法可以显示这个小部件?
我该如何解决入口路由问题,因为除了这个小部件和前端反应应用程序之外,我还有一个管理员反应客户端应用程序,如果我也将它放在它自己的入口中,它也不会加载。
TL;DR 如何加载两个反应应用程序和一个路径为根的静态容器?
解决方案
如何加载两个反应应用程序和一个路径为根的静态容器?
假设root
路径必须有 Kubernetes Ingress 将允许您在为不同主机列出这些的条件下执行此操作。您可能会在下面找到一个示例,这对于您的用例来说可能是这样的:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-example
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: frontend.example.com
http:
paths:
- path: /
backend:
serviceName: front-end
servicePort: 80
- host: admin.example.com
http:
paths:
- path: /
backend:
serviceName: admin-react
servicePort: 80
- host: speedtest.example.com
http:
paths:
- path: /
backend:
serviceName: speedtest
servicePort: 4200
由于同源策略,当您使用不同的主机时,事情会变得更加复杂。它是在客户端 Web 应用程序(如 Web 浏览器)上强制执行的安全策略,以防止来自不同来源的资源之间的交互。虽然对于防止恶意行为很有用,但此安全措施还可以防止已知来源之间的合法交互。
为了让这种情况发生,您需要启用cros origin 资源共享。
什么是 CORS?
CORS 是一种允许 JavaScript 中的跨域 HTTP 请求的方法,即运行在一个域上的 JS 向不同域上的页面发出的请求。出于安全原因,这通常是不允许的(它可能允许一个页面使用用户的凭据向另一个页面发送请求);CORS 提供了一种安全地允许此类请求的方法。
这可以通过两种方式处理,通过配置应用程序发送 CORS 标头或配置入口来执行此操作。欲了解更多信息,请访问:
推荐阅读
- javascript - Jest 全球拆解在测试完成之前运行?
- string - 将字符串与 SAS 中的日期连接起来,例如
- dart - Flutter:从子小部件设置父小部件状态
- r - 如何在R中创建和弦交点图?
- sql - Access - 查询以将欺骗者移动到一个表中,将非欺骗者移动到另一个表中
- python - 是否有一个python函数可以确定一个向量是否在其他向量的凸包中
- c++ - 在中间范围内创建的对象的生命周期(例如,CriticalSection)
- python - 如何为 Pandas 使用多个 if 条件?
- python - Python os.walk() 函数与 find 命令
- cpu - 是在程序运行时一直输入 CPU 的机器代码