【问题标题】:How to put a Kubernetes or Docker Swarm service behind a firewall如何将 Kubernetes 或 Docker Swarm 服务置于防火墙后面
【发布时间】:2017-09-11 07:12:47
【问题描述】:

我一直在使用 Kubernetes 和 Docker Swarm 作为在自托管解决方案中管理容器的两种替代方案。我找不到直截了当的答案是,我应该如何将服务放在每个服务的防火墙后面。

从我在 Docker Swarm 和 Kubernetes(使用 NodePort 时)中看到的情况来看,最终服务会暴露在集群中运行的主机的 IP 地址上,并且请求被路由到集群中运行的服务,不管你打的是什么主机。

现在假设我想把一个服务放在防火墙后面。我需要一个 IP 地址在 FW 中配置为目标 IP 地址,对吗?我不想使用任何特定的主机 IP 地址,因为最终主机可能会来来去去,而且我不希望将单个主机作为单点故障。

任何指针都非常感谢!

【问题讨论】:

  • 对于 k8s,请查看 Ingress 文档。我认为您正在寻找的是集群中指定的边缘路由器节点。然后,您可以在这些节点上执行您的防火墙策略。

标签: docker kubernetes docker-swarm


【解决方案1】:

从技术上讲,您放置在防火墙后面的不是您的服务,而是整个 Kubernetes 集群。如果您对 LoadBalancer 类型的服务有可靠的支持,它将通过 LB 暴露在一些公共 IP 上,因此流量将通过 Client > LB > ClusterNodes。如您所见,您所需要的只是允许从负载均衡器到集群节点的连接。

在某些供应商/环境中,您会默认获得这种行为。例如 KOPS,当配置private 拓扑时,会将您的集群节点置于内部网络中,该内部网络对于来自我们身边世界的连接关闭,而不是通过 LB(或堡垒)

【讨论】:

  • 是的,当您提供负载均衡器时,这非常简单。但是如果你不(你在自己的数据中心运行),那么你需要部署它,然后你需要考虑它的HA,零停机升级等,这些都是在簇。所以如果你把它放在集群中,你又会陷入同样的​​境地。否则你需要另一种方式来部署它,这有点令人沮丧。
  • 即使在您自己的 DC 中,您通常也有一些可以用作负载均衡器的不错的网络设备。您还可以部署 Ingress Controller 并静态配置您的网络以从某个 IP 指向它,或者您可以拥有 ie。 HAProxy 负载均衡器向世界公开您的公共服务。总而言之,您很少需要外部世界,而不是您自己的已知网络组件(如 LB/代理等)来直接访问您的 NodePort 服务。
猜你喜欢
  • 1970-01-01
  • 2012-02-06
  • 1970-01-01
  • 2011-11-19
  • 2022-01-10
  • 2013-07-05
  • 2010-09-07
  • 2010-11-10
  • 2011-12-22
相关资源
最近更新 更多