На данный момент Сетевой балансировщик нагрузки не поддерживает IPv6 . Обратите внимание, что это единственный сквозной балансировщик нагрузки, доступный в настоящее время на GCP . Сравните это с Сводка балансировщиков нагрузки Google Cloud таблица.
Только прокси балансировщики нагрузки, такие как HTTP / HTTPS Loadbalancers и TCP Proxy / SSL Proxy поддерживает IPv6 (сравните с IPv6-завершением для HTTP (S), SSL-прокси и балансировки нагрузки TCP-прокси )
Как вы можете читать в docs :
Поскольку балансировщик нагрузки является сквозным балансировщиком нагрузки, ваши серверные части завершают соединение TCP с балансировкой нагрузки или сами пакеты UDP.
Как вы, возможно, уже знаете (и вы можете прочитать об этом здесь ), в настоящее время GCP VP C и GCE экземпляры поддерживают только IPv4-подключение :
VP C сети поддерживают только IPv4 одноадресная передача traffi c. Они не поддерживают широковещательную , многоадресную или трафик IPv6 в сети; Виртуальные машины в сети VP C могут отправлять только адресаты IPv4 и получать трафик c только от источников IPv4. Однако можно создать IPv6-адрес для глобального балансировщика нагрузки .
Как вы уже упоминали TCP Proxy и SSL Proxy не поддерживают произвольные порты назначения . Поддерживаются только известные порты, перечисленные здесь , здесь . Произвольные порты могут использоваться только с внешней сетью TCP / UDP loadbalancer, но из-за отсутствия поддержки IPv6 вы не можете использовать его.
Что касается В вашем конкретном случае использования вывод заключается в том, что на данный момент это не может быть сделано так, как вы хотите.
Действительно ли ваш бэкэнд должен быть открыт для этого нестандартного порта? - Я полагаю, у вас есть веские причины для его использования, поэтому, скорее всего, его замена на какой-то известный порт даже не вариант.
Проблема в том, что это не служба HTTP. - Если это была служба http , но доступная только для некоторого произвольного порта, тогда вы можете использовать ingress . Если бы это было так, вы бы просто создали ingress , который перенаправляет запрос одному из ваших бэкэндов Services
, как в этом примере. Входные бэкэнды могут действительно использовать произвольные порты , но не произвольные протоколы - в этом суть. Основной протокол прикладного уровня должен быть http . Поэтому, если ваша служба использует совершенно другой протокол, вы можете сразу забыть о ingress .
Вы действительно ответили на свой вопрос самостоятельно. Я вижу, что вы просмотрели документы и уже достаточно тщательно проанализировали все доступные решения, исключая те, которые не соответствуют вашим требованиям. Ну ... я могу подтвердить это только этим резюме. Я надеюсь, что это может быть полезно, даже если оно не обеспечивает решение, которое вы ищете.