【问题标题】:Use hostPort on nginx ingress controller is insecure?在 nginx 入口控制器上使用 hostPort 不安全?
【发布时间】:2020-11-30 10:36:28
【问题描述】:

我正在使用 nginx-ingress 控制器 (https://docs.nginx.com/nginx-ingress-controller),我想知道使用 hostPort 公开入口是否不安全。我目前正在使用 nodePort,前面有一个平衡器层 3 / 4。

【问题讨论】:

    标签: nginx kubernetes nginx-ingress


    【解决方案1】:

    它本身并不是不安全的,只是真的不推荐,这完全取决于公开的部署的安全性以及主机的安全性。

    此外,不建议在测试阶段之外公开 hostPort,因为您只能在每个主机/节点的 pod 上部署(因为只有一个端口可用)。

    如果您使用 nodeport 实现了您想要做的事情,请坚持使用它,因为如果您在集群前使用负载均衡器,这是最佳选择

    【讨论】:

    • 谢谢@Popopame。但我想删除集群前面的负载均衡器。因为如果需要扩展我的集群,我需要重新配置我的负载均衡器。我使用裸机服务器。
    • 对于您的 LoadBalancer ,您可以将其配置为监视 IP 范围,然后负载均衡器可以仅向给定 IP 范围内响应的 IP 发送请求。因此,如果添加了一个新节点,LoadBalancer 会自行发现它,我知道 HAproxy 具有这样的功能。如果你真的想摆脱你的负载均衡器,也许看看 MetalLB,它是一个可以在 Kubernetes 上运行的负载均衡器。此链接也可以帮助您:kubernetes.github.io/ingress-nginx/deploy/baremetal
    • 好的。但是每个主机/节点只有一个入口控制器 pod 有什么问题?我的想法是只使用集群中的一个节点来放置具有公共 ip 的入口控制器。外部客户端向该外部 IP 发送请求。这是个坏主意?
    • 对于生产环境,这是一个非常糟糕的主意,因为您的所有基础架构网络都依赖于一个节点。如果带有入口控制器的节点死亡(或连接松动或watherver),您的所有集群都与外部世界失去连接,再加上它是您安全性的一个大漏洞,如果您将 nginx 暴露给主机网络,则 nginx pod 有访问所有系统守护程序,如果 NGINX 损坏:您的系统已暴露。如果这是用于 Homelab 或测试环境,为什么不这样做,但为什么要做一些在生产环境中永远不会做的事情呢?
    • 感谢您的解释。它让我明白了很多事情。
    【解决方案2】:

    取决于应用程序的要求。对于非常小的单节点集群,hostPort 似乎正是您想要的。 ingress-nginx 建议您将其配置为使用 DaemonSet 而不是 Deployment 以确保每个节点“只能有一个”。

    【讨论】:

      猜你喜欢
      • 2018-06-24
      • 1970-01-01
      • 2019-07-22
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-29
      • 2018-09-17
      相关资源
      最近更新 更多