问题:
在使用K8的[Kubernetes]进行开发时,我遇到了一个问题,即我的Ingress / Nginx似乎阻止了客户端(反应)从API(Flask / Python)中提取数据。
详细信息:
使用环境变量(在本文中称为API_URL
)可以简化客户端和API之间的连接。使用API_URL
,以便客户端知道哪些API路由到GET和POST。
在具有K8开发环境的Minikube上,所提供的Minikube IP根据我的理解强制使用http s (或者可能是ingress / nginx?)。 API_URL
环境变量的值为value: api-cluster-ip-service
。但是,当我访问开发人员站点时,这表明该值已分配给http://localhost(不是https)
这会导致:阻止加载混合的活动内容“ http://localhost/server/stuff”。结果,我无法从API中提取任何内容。
问题:
是否有建议的方法?也许是一种在开发人员上关闭https的方法(我什至不知道是否可行)?或者,也许我需要本地主机的证书?我是Kubernetes的新手,因此非常感谢您的帮助!
Ingress-server.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
答案 0 :(得分:0)
我找到了问题的原因...并且错误消息相当具有误导性。在本地环境中,我的客户端通过http://localhost/api/与我的API对话。但是,我意识到,因为我在Minikube上,所以不再在本地主机上(因为Minikube具有它自己的IP)。将API_URL更改为http://后,它立即开始工作。
这里唯一的挑战是迷你库在停止时会在每次刷新时更改IP,这意味着我需要获取IP并每次更新API_URL。但是,这是一个单独的问题/答案。
摘要:
将我的API_URL从http://localhost更改为Minikube IP。开始立即工作。