Настройка получения событий по произвольному порту

Некоторые точки входа, такие как Syslog, позволяют получать события только по портам из определенного диапазона, например, 30000—​32767. Однако, если нет возможности передавать события из внешней системы на порты из этого диапазона, вы можете настроить проксирование трафика через Ingress-контроллер. В таком случае информация о событиях будет перенаправляться из порта, на который она поступает, на порт, который будет использоваться в конвейере обработки событий.

Чтобы настроить проксирование трафика TCP и UDP с данными о событиях, выполните следующие действия:

  1. Подключитесь к терминалу master-узла кластера.

  2. Создайте 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-трафик.

  3. Создайте 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-трафик.

  4. Добавьте созданные объекты 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> — название пространства имен, в котором установлена система.

  5. Откройте для прослушивания порты, на которые поступают события из внешней системы. Способ открытия зависит от режима работы контроллера 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-трафик.

  6. Дождитесь, пока поды контроллера ingress-nginx перезапустятся и перейдут в статус Running.

    Чтобы проверить статус подов контроллера ingress-nginx, вы можете выполнить следующую команду:

    kubectl -n ingress-nginx get pods -l app.kubernetes.io/instance=ingress-nginx
  7. Чтобы убедиться, что правило проксирования было добавлено корректно, выполните команду:

    kubectl exec -n ingress-nginx daemonsets/ingress-nginx-controller -- nginx -T | sed -n '/^stream {/, $p' | sed -n '1,/^}/p'

    В выводе команды найдите блоки TCP Services и UDP Services и убедитесь, что в них прописаны порты, которые вы указали в пунктах выше.

  8. Добавьте на конвейер точку входа со следующими свойствами:

    • Тип точки входа: в соответствии с типом внешней системы.

    • Протокол: TCP или UDP.

    • Порт: порт, указанный в значении ключа порта для ConfigMap tcp-services или udp-services, в соответствии с выбранным вами протоколом.

  9. Включите конвейер и убедитесь, что события поступают в систему.

    Если после выполнения вышеперечисленных шагов события не поступают в систему, обратитесь в службу поддержки по адресу support@rvision.ru.

Была ли полезна эта страница?

Обратная связь