Настройка получения событий по произвольному порту
Некоторые точки входа, такие как Syslog, позволяют получать события только по портам из определенного диапазона, например, 30000—32767. Однако, если нет возможности передавать события из внешней системы на порты из этого диапазона, вы можете настроить проксирование трафика через Ingress-контроллер. В таком случае информация о событиях будет перенаправляться из порта, на который она поступает, на порт, который будет использоваться в конвейере обработки событий.
Чтобы настроить проксирование трафика TCP и UDP с данными о событиях, выполните следующие действия:
-
Подключитесь к терминалу master-узла кластера.
-
Создайте ConfigMap
tcp-services, выполнив следующую команду:kubectl apply -f - <<EOF apiVersion: v1 kind: ConfigMap metadata: name: tcp-services namespace: <namespace> data: <tcp_port>: "<namespace>/wl-<collector_id>-collector-main:<entry_point_port>" EOFЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.Вы можете получить название пространства имен, в котором установлена система, с помощью утилиты evoctl. -
<tcp_port>— порт, с которого перенаправляется TCP-трафик. -
<collector_id>— идентификатор коллектора, в котором находится точка входа.Идентификатор можно посмотреть в поле ID на вкладке Информация в карточке коллектора. -
<entry_point_port>— порт точки входа, на который необходимо перенаправить TCP-трафик.
-
-
Создайте ConfigMap
udp-services, выполнив следующую команду:kubectl apply -f - <<EOF apiVersion: v1 kind: ConfigMap metadata: name: udp-services namespace: <namespace> data: <udp_port>: "<namespace>/wl-<collector_id>-collector-main:<entry_point_port>" EOFЗдесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<udp_port>— порт, с которого перенаправляется UDP-трафик. -
<collector_id>— идентификатор коллектора, в котором находится точка входа.Идентификатор можно посмотреть в поле ID на вкладке Информация в карточке коллектора. -
<entry_point_port>— порт точки входа, на который необходимо перенаправить UDP-трафик.
-
-
Добавьте созданные объекты ConfigMap в список аргументов запуска контроллера ingress-nginx, выполнив следующие команды:
kubectl -n ingress-nginx patch daemonsets.apps ingress-nginx-controller --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--tcp-services-configmap=<namespace>/tcp-services"}]' kubectl -n ingress-nginx patch daemonsets.apps ingress-nginx-controller --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--udp-services-configmap=<namespace>/udp-services"}]'Здесь:
-
<namespace>— название пространства имен, в котором установлена система.
Команды выше актуальны, если контроллер ingress-nginx был развернут вместе с установкой системы в виде DaemonSet-контроллера.
Если развертывание контроллера ingress-nginx производилось иным способом, необходимо изменить Deployment
ingress-nginx-controller:kubectl -n ingress-nginx patch deployment ingress-nginx-controller --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--tcp-services-configmap=<namespace>/tcp-services"}]' kubectl -n ingress-nginx patch deployment ingress-nginx-controller --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--udp-services-configmap=<namespace>/udp-services"}]'Здесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Откройте для прослушивания порты, на которые поступают события из внешней системы. Способ открытия зависит от режима работы контроллера ingress-nginx в кластере:
-
Режим LoadBalancer
-
Режим hostPort
В кластере развернуты поды MetalLB и сервис
ingress-nginx-controller. Для открытия портов выполните команды:kubectl -n ingress-nginx patch service ingress-nginx-controller --type='json' -p='[{"op": "add", "path": "/spec/ports/-", "value": {"name": "syslog-tcp", "protocol": "TCP", "port": <tcp_port>}}]' kubectl -n ingress-nginx patch service ingress-nginx-controller --type='json' -p='[{"op": "add", "path": "/spec/ports/-", "value": {"name": "syslog-udp", "protocol": "UDP", "port": <udp_port>}}]'В кластере отсутствуют поды MetalLB и сервис
ingress-nginx-controller. Для открытия портов выполните команды:kubectl -n ingress-nginx patch daemonsets.apps ingress-nginx-controller --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/ports/-", "value": {"containerPort": <tcp_port>, "hostPort": <tcp_port>, "name": "syslog-tcp", "protocol": "TCP"}}]' kubectl -n ingress-nginx patch daemonsets.apps ingress-nginx-controller --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/ports/-", "value": {"containerPort": <udp_port>, "hostPort": <udp_port>, "name": "syslog-udp", "protocol": "UDP"}}]'Режим hostPort характерен для системы, работающей в кластере с одним master-узлом или в кластере, где для контроллера ingress-nginx выделен отдельный worker-узел. Здесь:
-
<tcp_port>— порт, с которого перенаправляется TCP-трафик. -
<udp_port>— порт, с которого перенаправляется UDP-трафик.
-
-
Дождитесь, пока поды контроллера ingress-nginx перезапустятся и перейдут в статус
Running.Чтобы проверить статус подов контроллера ingress-nginx, вы можете выполнить следующую команду:
kubectl -n ingress-nginx get pods -l app.kubernetes.io/instance=ingress-nginx -
Чтобы убедиться, что правило проксирования было добавлено корректно, выполните команду:
kubectl exec -n ingress-nginx daemonsets/ingress-nginx-controller -- nginx -T | sed -n '/^stream {/, $p' | sed -n '1,/^}/p'В выводе команды найдите блоки TCP Services и UDP Services и убедитесь, что в них прописаны порты, которые вы указали в пунктах выше.
-
Добавьте на конвейер точку входа со следующими свойствами:
-
Тип точки входа: в соответствии с типом внешней системы.
-
Протокол: TCP или UDP.
-
Порт: порт, указанный в значении ключа порта для ConfigMap
tcp-servicesилиudp-services, в соответствии с выбранным вами протоколом.
-
-
Включите конвейер и убедитесь, что события поступают в систему.
Если после выполнения вышеперечисленных шагов события не поступают в систему, обратитесь в службу поддержки по адресу support@rvision.ru.
Была ли полезна эта страница?