Как ни удивительно, балансировщик нагрузки L7 (http / https) в GCP, созданный объектом входа Kubernetes , по умолчанию не имеет возможности занесения в белый список IP , так что описанное вами работает должным образом.Вы можете выполнить фильтрацию с вашей стороны, используя заголовок X-Forwarded-For
(см. «Целевые прокси» в разделе Настройка балансировки нагрузки HTTP (S) ).
Белый список будет доступен через Cloud Armor , которая в настоящее время находится в частной бета-версии.
Чтобы немного усложнить эту ситуацию: балансировщик нагрузки L4 (tcp / ssl) в GCP, созданный объектом Kubernetes LoadBalancer (то есть не входным)действительно имеет возможность фильтрации IP.Для этого вы просто устанавливаете .spec.loadBalancerSourceRanges
в Сервисе.Конечно, Сервис не предоставит вам маршрутизацию на основе URL / хоста, но вы можете добиться этого, развернув входной контроллер, такой как nginx-ingress .Если вы пойдете по этому пути, вы все равно можете создать Ingresses для своих внутренних сервисов, вам просто нужно аннотировать их, чтобы новый входной контроллер поднял их.Это довольно стандартное решение, и оно на самом деле дешевле, чем создание L7 для каждой из ваших внутренних служб (вам нужно будет заплатить только одно правило переадресации для всех ваших внутренних служб).
(Внутренними службами)«Выше я имел в виду сервисы, к которым вам нужно иметь доступ из-за пределов самого кластера, но только с определенных IP-адресов, скажем, VPN, офиса и т. д. Для сервисов, которым вам нужен доступ только изнутри кластера, вы должны использовать type: ClusterIP
)