Различные правила брандмауэра для кластера Kubernetes - PullRequest
0 голосов
/ 01 июня 2018

Я использую некоторые внутренние службы, а также некоторые службы для клиентов в одном кластере K8s.Внутренние должны быть доступны только через некоторые конкретные ips, а сервисы для клиентов должны быть доступны по всему миру.

Поэтому я создал свои Ingresses и Ingin Controller nginx, а также некоторые службы LoadBalancer K8s с соответствующими IP-фильтрами.

Теперь я вижу, что эти правила брандмауэра в GCP создаются за кулисами.Но они противоречат друг другу, и правила брандмауэра, обращенные к клиенту, отменяют «внутренние».И так все в моем Кластере K8s видно по всему миру.

Случай использования звучит не так уж и экзотично для меня - у вас есть идея, как защитить некоторые части кластера K8s с помощью правил брандмауэра, а некоторые доступны везде?

1 Ответ

0 голосов
/ 02 июня 2018

Как ни удивительно, балансировщик нагрузки 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...