Kubernetes阻止了混合活动内容

时间:2019-01-15 06:27:58

标签: http kubernetes kubectl minikube

问题:

在使用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

1 个答案:

答案 0 :(得分:0)

我找到了问题的原因...并且错误消息相当具有误导性。在本地环境中,我的客户端通过http://localhost/api/与我的API对话。但是,我意识到,因为我在Minikube上,所以不再在本地主机上(因为Minikube具有它自己的IP)。将API_URL更改为http://后,它立即开始工作。

这里唯一的挑战是迷你库在停止时会在每次刷新时更改IP,这意味着我需要获取IP并每次更新API_URL。但是,这是一个单独的问题/答案。

摘要:

将我的API_URL从http://localhost更改为Minikube IP。开始立即工作。

相关问题