Правила файрвола для балансировщиков нагрузки
Для публикации приложения через балансировщик нагрузки (LoadBalancer) может потребоваться открыть входящий трафик на один или несколько портов NodePort с помощью правил файрвола. Сервис Managed Kubernetes помогает автоматизировать создание таких правил. Пользователю нужно лишь указать диапазон разрешенных IP-адресов при развертывании сервиса, а все нужные правила файрвола будут созданы автоматически.
При таком подходе пользователю не нужно вручную отслеживать изменения IP-адресов узлов, портов или состав группы узлов. Control plane (управляющий слой) кластера Managed Kubernetes автоматически отслеживает состояние балансировщика и самого кластера. При изменении компонентов балансировщика или кластера соответствующие правила файрвола обновятся автоматически.
Настройка правил файрвола
Заголовок раздела «Настройка правил файрвола»Для управления доступом к сервисам балансировщика используются стандартные поля в спецификации сервиса:
spec.loadBalancerSourceRanges— IP-адрес или диапазон IP-адресов в нотации CIDR, с которых нужно разрешить доступ;spec.ports— целевые порты балансировщика.
На основании этих настроек система автоматически сформирует набор правил файрвола.
Пример настройки правила:
apiVersion: v1kind: Servicemetadata: name: example-lb namespace: defaultspec: type: LoadBalancer loadBalancerSourceRanges: - 10.0.0.0/8 - 178.248.238.27/32 ports: - name: http protocol: TCP port: 80 targetPort: 8080...При создании правил существуют ограничения:
- Количество элементов в
spec.loadBalancerSourceRanges— 10 шт. - Число портов в
spec.ports— 10 шт. - Количество рабочих узлов, для которых будет создано уникальное правило файрвола — 10 шт. Например, если в вашем кластере 12 рабочих узлов, то будет создано два отдельных правила — для первых десяти узлов и для оставшихся двух.
Правила файрвола создаются для каждого IP-адреса узла кластера с использованием маски /32. Это ограничивает область применения правила только теми узлами, которые участвуют в обслуживании сервисов балансировщика.
Если в спецификации сервиса не указать настройку spec.loadBalancerSourceRanges или spec.ports, никакие правила файрвола созданы не будут, и внешний доступ к балансировщику будет закрыт. При необходимости правила можно создать вручную, однако такие правила не будут актуализироваться автоматически при обновлении кластера или сервиса.
Подробнее об управлении правилами файрвола при развертывании балансировщиков нагрузки см. в руководстве.
Правило для механизма проверки работоспособности
Заголовок раздела «Правило для механизма проверки работоспособности»Механизм проверки работоспособности, входящий в состав балансировщика нагрузки, проверяет доступность узлов кластера. Если проверочный запрос к узлу не сработает (например, если узел не готов принимать трафик), этот узел будет исключен из балансировки. Если проверочный запрос не сработает на всех узлах, приложение не будет доступно через балансировщик, даже если само приложение работает.
Правило для механизма проверки работоспособности — это правило файрвола, которое позволяет балансировщику нагрузки проверять здоровье узлов кластера, отправляя периодические HTTP-запросы на специальный порт сервиса kube-proxy.
Правило создается автоматически при создании любого балансировщика нагрузки, и автоматически обновляется при изменении параметров балансировщика, группы узлов или кластера. При удалении последнего балансировщика правило удалится автоматически.
Параметры правила приведены в таблице:
| Параметр | Значение | Описание |
|---|---|---|
| Название правила | Имя кластера + 'healthcheck' + номер правила | — |
| Приоритет | 10000 | — |
| Источник | 169.254.192.0/19 | Диапазон IP-адресов в нотации CIDR, с которого балансировщик отправляет проверочные запросы |
| Целевой порт | 10256 | Порт сервиса kube-proxy |
| Протокол | TCP | — |
| Назначение | Внутренние IP-адреса группы узлов | Все IP-адреса группы узлов в формате 10.0.0.0/32 |
Не изменяйте правило вручную: при первом обновлении конфигурации сервиса, кластера или группы узлов оно будет перезаписано. Чтобы переопределить настройки доступа вы можете вручную создать отдельное правило с более высоким приоритетом.