【发布时间】:2019-07-05 13:05:32
【问题描述】:
我已经使用 kops 部署了一个 kubernetes 集群。当前集群使用一个 nginx 入口控制器,它在 AWS 中创建一个经典的负载均衡器。我有一些与前端应用程序对话的后端应用程序和一些只相互对话的后端服务。问题在于,目前让前端应用程序与后端应用程序对话的唯一方法是为后端应用程序创建一个入口,因为前端通过域名发送请求,因为它不了解内部服务名称。对于后端来说,这很好,因为它们可以通过使用服务名称和它们各自的端口进行内部通信。我怎样才能在不必为后端创建入口的情况下实现这一点。是否可以使用应用程序负载均衡器来做到这一点,或者我需要为此使用 API 网关吗?我如何实现这种架构?添加架构图以显示我想要实现的目标。任何帮助表示赞赏。
【问题讨论】:
-
入口控制器是一个应用负载均衡器。您的前端确实需要一个外部端点。入口控制器是拥有一个的最佳方式。您可以直接公开该服务,但这仍然会创建一个 ELB。你想消除什么? ELB?没有ELB也可以部署入口控制器,不推荐
-
我正在努力消除后端应用程序对入口的需求。
-
Ingress 是件好事。它们允许您通过单个应用程序平衡器公开多个服务。但是,如果您仍然想摆脱它,请将后端服务类型设置为 LoadBalancer,这将启动 ELB 以仅公开该服务
-
也许我没有正确解释。例如,如果我有一个前端,我们称之为 frontend.xyz.com,我如何确保这个前端与后端通信,而不必为后端创建入口,也不必将后端暴露给外界也是。如果我不为后端创建入口,例如 backend.xyz.com,则前端无法与后端通信,因为它不知道如何在没有入口的情况下将流量路由到该后端 pod。
-
如果服务没有通过入口或负载均衡器公开,那么集群外的任何东西都无法访问它
标签: amazon-web-services kubernetes kubernetes-ingress api-gateway kops