Поведение обратного прокси в кластере 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.