通过入口在特定子域上公开 tcp 服务(端口 5432)

expose tcp service (port 5432) on specific subdomain via ingress

我有一个 kubernetes 集群,它通过 this information 在端口 5432 上公开 Postgresql,这非常有效。我目前正在我的机器上测试它,它可以在 db.x.io 上运行(x 是我的域)。但它也适用于 localhost。这看起来很公平,因为它只会在端口 5432 上创建一个绑定到我的服务。

我还可以如何过滤子域?所以它只能通过 db.x.io

访问

TCP 协议在过滤方面没有太多。这是因为 TCP 协议仅使用 IP:Port 组合,没有像 HTTP 中那样的 headers。在建立连接之前,您的子域由 DNS 解析为 IP 地址。

根据 Nginx 文档,您可以执行以下操作:


您可以尝试通过在 nginx 配置中添加 deny 127.0.0.1 来限制本地主机的访问,但是它很可能会破坏 Postgresql。所以这是一个冒险的建议。

对于 kubernetes ingress object 它将是:

metadata:
  annotations:
    nginx.org/server-snippets: |
      deny 127.0.0.1;

基于 Nginx 文档。