Назначить IP-адрес для внешнего трафика приложения

Чтобы назначить IP-адрес для внешнего трафика вашего приложения, в графическом интерфейсе платформы “Штурвал” можно настроить Egress Gateway (CiliumEgressGatewayPolicy). Для этого выполните шаги инструкции из раздела В графическом интерфейсе платформы.

После создания Egress Gateway вы можете проверить выполнение правил политики и убедиться в назначении IP-адрес для внешнего трафика приложения. Для этого выполните шаги инструкции раздела Проверка внешнего трафика.

В графическом интерфейсе платформы

  1. Перейдите в ваш кластер, в котором необходимо назначить IP-адрес для внешнего трафика приложения. Откройте страницу Egress Gateway раздела Сети и нажмите + Добавить Egress Gateway.
  2. На открывшейся странице настройте конфигурацию для Egress Gateway.
Пример
  • В поле Имя Egress Gateway укажите egressname.
  • В поле IP-адрес задайте IP-адрес исходящего трафика - 11.22.33.44.
  • Оставьте без изменений destinationCIDRs - 0.0.0.0/0. Задайте CIDR, если необходимо, чтобы на узел был перенаправлен только трафик, отправляемый на указанный IP-адрес. Значение 0.0.0.0/0 определяет любой IP-адрес для внешнего трафика.
  • В блоке Селектор узлов нажмите + рядом с Лейблы и в открывшемся окне поля Ключ введите лейбл узла, через который будет выходить трафик во внешнюю сеть - node-role.kubernetes.io/workers. В этом случае передача трафика будет только через узел с ролью workers. Вы можете указать лейбл операционной системы: kubernetes.io/os:linux. В этом случае пакеты приложения с указанным IP-адресом исходящего трафика будут выходить через узлы с этим лейблом.
  • В поле Неймспейс выберите имя неймспейса, в котором развернуто приложение, например, namespacename.
  • Добавьте лейбл пода, в котором развернуто приложение - podkey: podvalue.

Обратите внимание! Если приложение развернуто в нескольких экземплярах нескольких неймспейсов одного кластера и необходимо назначить для них единый IP-адрес, нажмите + Добавить неймспейс и выберите второй неймспейс и при необходимости добавьте лейбл пода.

Скриншот

egresscreate2

  1. Создайте Egress Gateway, нажав на Сохранить.

Теперь весь трафик из приложения с лейблом podkey: podvalue неймспейса namespacename будет направлен с узла c лейблом node-role.kubernetes.io/workers и IP-адресом 11.22.33.44.

Проверка внешнего трафика

  1. Создайте под в том же неймспейсе (namespacename), где запущен под с приложением, например, с именем pod-without-label. Не присваивайте ему лейбл podkey: podvalue.
Скриншот

pods

Со страницы просмотра созданного пода откройте *Терминал* пода и проверьте подключение к хосту с помощью команды `ping`.
Команда
ping 2.2.2.2

Где вместо 2.2.2.2 укажите IP-адрес хоста.

Скриншот

egresspodlable1

  1. Перейдите к поду, в котором развернуто выше приложение, и откройте Терминал. Выполните проверку подключения к хосту с IP-адресом отличным от указанного на предыдущем шаге.
Команда
ping 1.1.1.1

Где вместо 1.1.1.1 укажите IP-адрес хоста.

Скриншот

egresspodlable

  1. Откройте интерфейс командной строки и выполните подключение к кластеру. Узнайте IP-адрес узла, который определен для внешнего трафика.
Команда
kubectl -n kube-system exec ds/cilium -- cilium-dbg bpf egress list

В ответе команды IP-адрес такого узла выводится в колонке Gateway IP.

Скриншот

egressip

  1. Выполните подключение по SSH к узлу с IP-адресом, полученным на предыдущем шаге и запустите утилиту для анализа и вывода входящего и исходящего сетевого трафика узла.
Команда
tcpdump -i eth0 -n -s0 icmp

В полученном ответе вы можете убедиться, что перенаправление пакетов приложения выполняется с IP-адреса Egress Gateway и только с пода, соответствующего правилу Egress Gateway.

Скриншот

egresscheck1

Где 11.22.33.44 - IP-адрес исходящего трафика, 10.10.10.10 - IP-адрес узла.

×