【问题标题】:Why ingress-nginx controller tcp-services not working?为什么 ingress-nginx 控制器 tcp-services 不起作用?
【发布时间】:2020-02-14 09:08:17
【问题描述】:

我正在尝试通过ingress-nginx tcp-services 公开一个 RabbitMQ ssl 端口,如下所示:

$ 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 的尝试都会超时,当然,任何使用 amqplib 连接到amqps://my-extrenal-host:5671 的尝试也会超时。不过,管理 UI 确实可以工作,所以我知道外部 IP 是正确的。

似乎我的 ingress-nginx pod 中的 nginx.conf 已更新,但有些奇怪(我认为):它确实在端口 5671 上配置了一个侦听器,但上游仍然用 0.0.0.1:1234 说“占位符”地址。我什至回收了 pod,以防万一,仍然是相同的 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 服务?

【问题讨论】:

    标签: nginx-ingress


    【解决方案1】:

    找到解决方案:nginx-ingress 是使用他们的“mandatory.yaml”文件安装的——而不是通过 Helm。查看 nginx-ingress helm chart,似乎为了暴露 tcp 服务端口,需要配置更多资源。如果我直接使用 helm chart 而不是 yaml,端口会正确暴露。

    【讨论】:

      猜你喜欢
      • 2021-01-16
      • 1970-01-01
      • 2021-12-16
      • 2018-06-03
      • 2018-08-31
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多