Поведение обратного прокси в кластере K8s для вызовов SSH

Я создаю приложение на управляемом кластере K8s. Я могу создавать развертывания и совместно с NodePort. Сервисы доступны через эти порты.

Управление всеми открытыми службами и их портами становится проблемой, и для HTTP-трафика я думал о предоставлении одного прокси-сервера nginx, который бы прокси https://someservice.someurl:someport в https://someservice:someport и имеют someurl DNS сопоставлен с моим внешним интерфейсом Ubuntu IP, как показано ниже.

Что касается веб-трафика, я считаю, что он должен работать как положено. Тем не менее, у меня есть некоторые развертывания, которые доступны через ssh; мерзавец демон например. С этими демонами я сейчас выполняю такие команды git clone ssh://git@someipsofthecluster:someport/git-server/repos/somerepos и я хотел бы использовать то же имя DNS, что и для трафика HTTP (т.е. git clone ssh://git@someservice.someurl:someport/git-server/repos/somerepo)

Я знаю о iptables, где я могу перенаправлять трафик, поступающий с одного порта на другой IP/ порт, но я не знаю, как бы я перенаправил на конкретную машину / порт в отношении используемого субдомена.

1 ответ

Вам, вероятно, придется заново продумать, как это сделать, так как балансировка нагрузки TCP или прокси на основе DNS-имени на самом деле невозможны. Подробнее об этом здесь. Имейте в виду, что HTTP является протоколом уровня 7, поэтому прокси-сервер может использовать заголовок "Host" для направления запросов.

Фильтрация по имени хоста также невозможна с iptables. Подробнее об этом здесь.

Однако вы можете использовать прокси-сервер уровня 4, то есть прокси-сервер TCP, но это будет основано на прослушивании определенного порта TCP. Nginx может сделать это, или вы можете использовать что-то еще, например, Haproxy.

Другие вопросы по тегам