Ситуация такова, что у меня есть две службы k8s, которые связаны между собой. Оба являются flask серверами. Связь между ними следующая: если кто-то делает POST с первым, он получает текстовый ввод и передает его на второй сервер, который добавляет еще текст к исходному тексту, опубликованному пользователем, и, наконец, два текста вместе возвращаются на первый сервер, и он возвращает окончательный текст пользователю.
Чтобы разрешить эту связь между моими службами k8s (называемыми master и slave, которые matchlabels app-master и app-slave), у меня есть следующая networkPolicy:
kind: NetworkPolicy
apiVersion: extensions/v1beta1
metadata:
name: master-to-slave
namespace: innovation
spec:
podSelector:
matchLabels:
app: app-slave
ingress:
- ports:
- port: 5000
protocol: TCP
- port: 5001
protocol: TCP
- from:
- namespaceSelector:
matchLabels:
app: app-master
Чтобы сделать завиток из за пределами арендатора я должен использовать traefik, потому что я работаю в арендаторе, у которого уже есть traefik как NodePort, поэтому я НЕ могу выставить свой основной сервис как nodePort или преобразовать его в вид LoadBalancer. Вход у меня для этого приложения следующий
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: ingress-innovation
namespace: innovation
annotations:
traefik.frontend.rule.type: PathPrefixStrip
spec:
rules:
- http:
paths:
- path: /master
backend:
serviceName: master
servicePort: 5000
- path: /slave
backend:
serviceName: slave
servicePort: 5001
У меня также есть DNS, который позволяет мне делать запрос к адресу (https://name_in_the_DNS) вместо выполнения запросов к IP моего арендатора. Проблема в том, что когда я пытаюсь сделать следующий запрос:
curl https://name_in_the_DNS/master -X POST -d texto
выдает мне ошибку (Gateway Timeout). Хотя, если я использую «kubectl port-forward», приложение работает как положено. Есть идеи, как решить эту проблему? Я предполагаю, что это как-то связано с networkPolicy, потому что у меня есть другие приложения внутри арендатора, и запросы curl работают для них.
Заранее спасибо!
Для просмотра сервисов и развертывания yamls: Могут ли две кластерные IP-службы быть подключены в Kubernetes?