我正在尝试在Kubernetes集群中容器化我的angular + java应用程序。我的k8集群中有一个前端部署和一个后端部署。我的数据库在AWS {RDS}中。但是我很困惑我应该在前端代码中提供什么API-URL,以便它可以连接到k8集群中的后端应用程序。 例如:- 在本地系统中,我在前端代码中使用了{localhost:8080 / api / customers}之类的东西,但是在Kubernetes集群中进行部署时应该将其更改为什么。
我有一个带有1个主节点和2个从属节点的Kubernetes集群设置,我创建了一个后端应用程序的部署,并通过Cluster Ip对其进行了公开,然后我在前端应用程序中为该集群提供了ip和端口。 之后,我将映像推送到docker hub,然后为其创建了k8部署,但仍然无法正常工作。
我的主要问题是我应该在Frontend应用程序目标URL中提及什么URL和端口,以便它可以找到我的Java API。
答案 0 :(得分:2)
前端角度应用程序正在用户的浏览器中运行。这是在kubernetes群集之外,因此您不能将kubernetes服务名称用作api端点。 您需要使kubernetes外部可以访问spring boot api,通常使用入口或负载平衡器。您可以在angular应用程序中将此外部ip或主机名用作api url。
答案 1 :(得分:0)
如果您的两个应用程序在同一个kubernetes集群中运行,那么您就必须像这样调用后端服务: svcname:port 例如
http://login:8080/login
这假设您的前端Pod位于同一Kubernetes命名空间上。如果它们在不同的命名空间中,则将调用以下名称:
http://login.<namespace>.svc.cluster.local:5555/login
答案 2 :(得分:0)
将后端服务暴露给负载均衡器,然后在前端应用程序中使用该负载均衡器终结点对我来说有效。