Добрый день,
Дано:
* POD с двумя TCP портами: 80 (для websocket) и 1935 (rtmp) и несколько его реплик
Задача:
* Все запросы клиента отправлять на один POD (допустим, если уже есть соединение 80, то 1935 отправлять на тот же POD). Для ясности по websocket летит информация о потоке с RTMP порта.
Вот схема организации в Kubbernetes:
Дисклаймер: Знаю, что хранить состояние плохо при работе с k8s, но стоит именно такая задача.
P.S. Что я пытался сделать:
* Ingress Nginx поддерживает проксирование tcp, но не поддерживает (по крайней мере я не нашел как это сделать в версии 0.30) указание параметров балансировки (round-robin, hash-ip и тд) tcp.
* Рассматривал вариант с haproxy в качестве ingress, но не нашел у него в принципе поддержки tcp проксирования, т.е. предлагают поднимать Service с типом NodePort (но тогда запросы летят мимо haproxy)