我正在使用K8S部署具有3个部分的应用程序。主网站(登录页面(,应用程序组件1(仅由ADMINS(和应用程序组件2(适用于付费用户(。最近,我遇到了一个模式,其中有一个主要的外部负载平衡器,以及应用程序每个部分的入口。例如:
LB
-> Ingress1 -> Main App
-> Ingress2 -> App Component 1 (only accessible by admins)
-> Ingress3 -> App Component 2 (only accessible by paid users)
拥有这样的架构是否常见?有人可以指出一些很好的例子(使用K8(,这些例子正在部署这样的应用程序。预先感谢!
gke不支持使用入口或加载平衡器作为其他负载平衡器的后端。相反,您可以执行以下操作之一:
-
为每个入口处创建一个入口(这更昂贵(
-
使用多个路径(每个后端一个(创建一个单个入口。这将根据输入的URL路由流量。这可能是您最好的,最具成本效益的解决方案。对于安全性,您可以合并云装甲,以确保用户仅访问他们应访问的路径。
-
创建一个入口以揭示您的主应用程序,然后使用服务类型的加载量来公开付费门户和管理门户。这些将用作第4层(因此您需要具有DNS记录,以将管理员指向适当的IP(。您可以配置LOAD BALANCER SPEC.LOADBALANCERCERANGES字段,以允许特定的IP范围限制访问管理Portal Portal
另一个注意事项,布局几乎没有任何好处可以在入口的前面放置负载平衡器,因为您不想平衡3个入口之间的流量。您希望所有的流量击中入口,然后被定向到右后端并在服务豆荚之间保持平衡。
我们遵循的最常见方法是创建一个基于路径的流量来转发流量。例如,
paths:
- path: /app1/
backend:
serviceName: app_1
servicePort: 80
- path: /app2/
backend:
serviceName: app_2
servicePort: 80
so" serviceName"是K8S(lb/nodePort/clusterip(中创建的任何服务名称。最后,使用此创建的外部LB/APP GW入口将您的外部流量转发到应用程序。