Заблокированный смешанный активный контент Kubernetes - PullRequest
0 голосов
/ 15 января 2019

Проблема:

При работе с [Kubernetes] K8 над разработкой я сталкиваюсь с проблемой, когда мой Ingress / Nginx, по-видимому, не позволяет моей стороне клиента (React) извлекать данные из моего API (Flask / Python).

подробности:

Соединение между клиентом и API облегчается с помощью переменной среды, которую мы будем называть API_URL ради этого поста. API_URL используется для того, чтобы Клиент знал, какой API перенаправляет в GET и POST.

На Minikube с K8 в dev предоставленный IP Minikube вынуждает http s из того, что я понимаю (или, возможно, это ingress / nginx?). Значение переменной среды API_URL равно value: api-cluster-ip-service. Однако, когда я захожу на сайт разработчика, он показывает, что это значение присваивается http://localhost (не-https)

Это приводит к: заблокированной загрузке смешанного активного контента «http://localhost/server/stuff". В результате я ничего не могу извлечь из своего API.

Вопрос:

Есть ли рекомендуемый подход для этого? Возможно, способ отключить https на dev (я даже не знаю, возможно ли это)? Или может мне нужен сертификат для localhost? Я довольно новичок в 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 голосов
/ 28 января 2019

Я нашел причину своей проблемы ... и сообщение об ошибке было довольно обманчивым. В локальной среде моя Клиентская сторона общается с моим API через http://localhost/api/. Однако я понял, что, поскольку я был на Minikube, он больше не на локальном хосте (потому что Minikube имеет свой собственный IP). Как только я изменил свой API_URL на http: //, он сразу начал работать.

Единственная проблема здесь заключается в том, что при остановке minikube меняет IP-адрес при каждом обновлении, то есть мне нужно захватывать IP-адрес и обновлять API_URL каждый раз. Однако это отдельный вопрос / ответ.

Резюме:

Изменил мой API_URL с http://localhost на IP Minikube. Начал работать сразу.

...