Назначить IP-адрес для внешнего трафика приложения
На этой странице
Чтобы назначить IP-адрес для внешнего трафика вашего приложения, в графическом интерфейсе платформы “Штурвал” можно настроить Egress Gateway (CiliumEgressGatewayPolicy). Для этого выполните шаги инструкции из раздела В графическом интерфейсе платформы.
После создания Egress Gateway вы можете проверить выполнение правил политики и убедиться в назначении IP-адрес для внешнего трафика приложения. Для этого выполните шаги инструкции раздела Проверка внешнего трафика.
В графическом интерфейсе платформы
- Перейдите в ваш кластер, в котором необходимо назначить IP-адрес для внешнего трафика приложения. Откройте страницу Egress Gateway раздела Сети и нажмите + Добавить Egress Gateway.
- На открывшейся странице настройте конфигурацию для 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-адрес, нажмите + Добавить неймспейс и выберите второй неймспейс и при необходимости добавьте лейбл пода.
Скриншот
- Создайте Egress Gateway, нажав на Сохранить.
Теперь весь трафик из приложения с лейблом podkey: podvalue
неймспейса namespacename
будет направлен с узла c лейблом node-role.kubernetes.io/workers
и IP-адресом 11.22.33.44.
Проверка внешнего трафика
- Создайте под в том же неймспейсе (
namespacename
), где запущен под с приложением, например, с именемpod-without-label
. Не присваивайте ему лейблpodkey: podvalue
.
Скриншот
Команда
ping 2.2.2.2
Где вместо 2.2.2.2
укажите IP-адрес хоста.
Скриншот
- Перейдите к поду, в котором развернуто выше приложение, и откройте Терминал. Выполните проверку подключения к хосту с IP-адресом отличным от указанного на предыдущем шаге.
Команда
ping 1.1.1.1
Где вместо 1.1.1.1
укажите IP-адрес хоста.
Скриншот
- Откройте интерфейс командной строки и выполните подключение к кластеру. Узнайте IP-адрес узла, который определен для внешнего трафика.
Команда
kubectl -n kube-system exec ds/cilium -- cilium-dbg bpf egress list
В ответе команды IP-адрес такого узла выводится в колонке Gateway IP
.
Скриншот
- Выполните подключение по SSH к узлу с IP-адресом, полученным на предыдущем шаге и запустите утилиту для анализа и вывода входящего и исходящего сетевого трафика узла.
Команда
tcpdump -i eth0 -n -s0 icmp
В полученном ответе вы можете убедиться, что перенаправление пакетов приложения выполняется с IP-адреса Egress Gateway и только с пода, соответствующего правилу Egress Gateway.
Скриншот
Где 11.22.33.44 - IP-адрес исходящего трафика, 10.10.10.10 - IP-адрес узла.