【问题标题】:on-premise kubernetes cluster in private subnet私有子网中的本地 Kubernetes 集群
【发布时间】:2019-01-20 19:00:16
【问题描述】:

我想在我们的本地数据中心内运行一个包含 1 个主节点和 2 个工作节点的 Kubernetes 集群,所有 3 个节点都位于不同的单独私有子网中。在将前端应用程序暴露给实现良好 Kubernetes 安全性的公共网络时,实现 Kubernetes 集群的最佳策略是什么?

【问题讨论】:

    标签: kubernetes kubernetes-security


    【解决方案1】:

    在云端我的答案会有所不同! 据我了解,טםו 不会扩展您的节点,所以我的答案是基于此。

    1. 在 K8S 集群中创建所有服务(不要公开其中任何一项)。

    2. 创建 Nginx 或任何您喜欢作为 VM 的负载均衡器(如果您可以更好地为 HA 创建 2 个 VM)。

    3. 将 Nginx 路由到前端(请使用不暴露的入口控制器)

    现在关于安全性:

    1. 将 WAF 添加到负载均衡器。

    2. 控制每种容器类型中允许的进程(为此使用 Falco)。

    3. 创建网络策略,定义允许哪些服务与哪些服务对话,或者我强烈建议使用 Istio。

    4. 为 DB 创建证书,只有包含证书的 pod 才能与他对话。

    祝你好运。

    【讨论】:

    • 嗨@Oron Golan,非常感谢您对宝贵信息的快速回复。只是为了让自己清楚,我应该在 Nginx 负载均衡器列表中包含哪些节点?我应该只添加主节点还是只在 nginx 负载均衡器列表中添加所有主节点和工作节点?另外,为了确认一下,我是否需要任何节点的任何公共 IP 地址?
    【解决方案2】:
    • 在专用网络上创建 Kubernetes 集群
    • 在单独的网络上创建一个外部负载平衡器,将流量暴露给外部
    • 将您的 DNS 指向外部负载平衡器的公共 IP
    • 从外部负载均衡器中发现 kubernetes 服务
    • 在大多数情况下,您只需要类型为 nodeport 的 kubernetes 服务,外部负载均衡器将与之通信
    • 如果您的应用需要会话持久化,请将 k8s 服务配置为仅从本地节点提供服务

    【讨论】:

      猜你喜欢
      • 2021-04-11
      • 2019-03-14
      • 1970-01-01
      • 2018-10-13
      • 2019-04-23
      • 2019-03-06
      • 2015-11-29
      • 2020-04-15
      • 1970-01-01
      相关资源
      最近更新 更多