Почему ingress- nginx контроллер tcp-сервисов не работает? - PullRequest
1 голос
/ 14 февраля 2020

Я пытаюсь открыть ssl-порт RabbitMQ через ingress- nginx tcp-services примерно так:

$ cat rabbit-expose-amqps.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-nginx
data:
  5671: "dev/rabbitmq-rabbitmq-ha:5671"

(служба RabbitMQ уже прослушивает этот порт) но и любая попытка выполнить openssl s_client -connect my-external-host:5671 по тайм-ауту, и, конечно, любая попытка подключиться к amqps://my-extrenal-host:5671 с использованием amqplib также. Однако интерфейс управления работает, поэтому я знаю, что внешний IP-адрес правильный.

Кажется, что nginx .conf в моем модуле входа - nginx обновляется, но что-то странное (я думаю) : он ДЕЙСТВИТЕЛЬНО настраивает прослушиватель на порт 5671, но восходящий поток все еще говорит «заполнитель» с адресом 0.0.0.1:1234. Я даже переработал пакет, на всякий случай, все тот же файл conf:

stream {
    upstream upstream_balancer {
            server 0.0.0.1:1234; # placeholder

            balancer_by_lua_block {
                    tcp_udp_balancer.balance()
            }
    }
    ...
    # TCP services
    server {
        preread_by_lua_block {
            ngx.var.proxy_upstream_name="tcp-dev-rabbitmq-rabbitmq-ha-5671";
        }
        listen                  5671;
        proxy_timeout           600s;
        proxy_pass              upstream_balancer;

    }
}

Как правильно применить tcp-сервисы?

1 Ответ

0 голосов
/ 18 февраля 2020

Нашел решение: nginx -ingress был установлен с использованием их файла "required.yaml" - не через Helm. Глядя на диаграмму управления nginx -ingress, выясняется, что для предоставления портов службы tcp есть больше ресурсов для настройки. Если я использую диаграмму руля вместо непосредственно yaml, порты будут выставлены правильно.

...