Моя цель заключается в следующем: у меня есть два приложения Flask в двух отдельных контейнерах Docker, и я хочу получить к ним доступ по разным путям на одном и том же IP-адресе, например: 127.0.0.1/app1, 127.0.0.1/app2 (нос реальным IP-адресом).
Я хочу сделать это с Kubernetes.
У меня работает кластер Kubernetes (служба Azure Kubernetes), с развертыванием и службой для каждого из двух Docker. контейнеры. Модуль для каждого приложения работает нормально. Я также установил входной контроллер (Nginx) в своем кластере, и теперь я пытаюсь заставить его работать с одним ресурсом Ingress.
Если я делаю это следующим образом, он отлично работает для 1 отдельного приложения (любогоиз них работает по IP-адресу /):
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-name
namespace: my-namespace
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: service1 (or service2)
servicePort: 5000
Но когда я попробую следующее, это не сработает:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-name
namespace: my-namespace
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /app1
backend:
serviceName: service1
servicePort: 5000
- path: /app2
backend:
serviceName: service2
servicePort: 5000
Я могу увидеть HTML-страницу, которая получаетотрисовывается приложением Flask для обоих приложений по их соответствующим путям, но ни одна из функций не работает.
Кроме того факта, что пути не всегда кажутся работающими (иногда меня перенаправляют на IP-адрес/ когда я пытаюсь подключиться к IP-адресу / app1 или IP-адресу / app1 /), проблема заключается в следующем (я думаю):
Каждое из приложений Flask имеет маршрут "/ести",который принимает только запросы POST, когда выполняются соответствующие вызовы для приложений (каждое приложение является приложением AI, которое делает прогноз для заданного входа).
Вызовы для обоих приложений осуществляются на IP-адрес /прогнозировать, вместо IP-адреса / app1 / предиката или IP-адреса / app2 / предиката. Также к статическим файлам нельзя получить доступ из-за этой проблемы пути.
Я не знаю, является ли это правильным способом сделать это? Я тоже пытался поиграть с «rewrite-target», но так и не нашел решения.
Надеюсь, кто-то может объяснить мне, что я делаю неправильно.