http - Kubernetes 阻止混合活动内容
问题描述
问题:
在使用 K8 的 [Kubernetes] 进行开发时,我遇到了我的 Ingress/Nginx 似乎阻止我的客户端(React)从我的 API(Flask/Python)中提取数据的问题。
细节:
使用环境变量来促进客户端和 API 之间的连接,我们将在API_URL
本文中调用该环境变量。 API_URL
用于让客户端知道哪些 API 路由到 GET 和 POST。
在开发中使用 K8 的 Minikube 上,提供的 Minikube IP 会根据我的理解强制使用 http (或者它可能是 ingress/nginx?)。环境变量API_URL
值为. value: api-cluster-ip-service
但是,当我点击开发站点时,它显示该值已分配给http://localhost (not-https)
这导致:阻止加载混合活动内容“<a href="http://localhost/server/stuff" rel="nofollow noreferrer">http://localhost/server/stuff"。结果,我不能从我的 API 中提取任何内容。
问题:
有推荐的方法吗?也许是一种在 dev 上关闭 https 的方法(我什至不知道这是否可能)?或者也许我需要本地主机的证书?我对 Kubernetes 还很陌生,所以非常感谢任何帮助!
入口服务器.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: client-cluster-ip-service
servicePort: 3000
- path: /api/
backend:
serviceName: server-cluster-ip-service
servicePort: 5000
入口命名空间输出
kubectl get ing --all-namespaces
default ingress-service * 10.0.2.15 80 4d21h
解决方案
我找到了问题的原因......并且错误消息相当具有误导性。在本地环境中,我的客户端通过http://localhost/api/与我的 API 对话。但是,我意识到因为我在 Minikube 上,它不再在 localhost 上(因为 Minikube 有它自己的 IP)。一旦我将我的 API_URL 更改为 http://,它就会立即开始工作。
这里唯一的挑战是 minikube 在停止时会在每次刷新时更改 IP,这意味着我需要每次获取 IP 并更新 API_URL。但是,这是一个单独的问题/答案。
概括:
将我的 API_URL 从http://localhost更改为 Minikube IP。立即开始工作。
推荐阅读
- c# - LOAD DATA 本地 INFILE 无法在 .net 核心上工作
- go - 为什么 fmt.Println(float64(1/2)) 显示 0?
- javafx - 启动程序后重新加载并显示空白 JavaFX BarChart
- java - 在 Spring 4.3 中从非事务方法调用 @Transactional 方法
- java - Kafka Consumer 如何从多个分配的分区消费
- javascript - 如何在Javascript反应本机中获取对象的子值总和?
- android - 修复元素大小并在其上添加 ScrollView
- mysql - 如果一列条件匹配,则 MySQL 插入或更新
- php - 使用 PHP 解码字符串
- mysql - 可以对数据库表进行排序以使 NULL 值出现在底部吗?