无法将前端应用程序{Angular}连接到kubernetes中的后端{SpringBoot}

Cannot connect frontend app{Angular} to Backend{SpringBoot} in kubernetes

我正在尝试将我的 angular+java 应用程序容器化到 Kubernetes 集群中。我的 k8 集群中有一个前端部署和一个后端部署。我的数据库在 AWS{RDS} 中。但是我很困惑,我应该在我的前端代码中提供什么 API-URL 以便它可以连接到我在 k8 集群中的后端应用程序。 例如:- 在本地系统中,我在前端代码中使用了 {localhost:8080/api/customers} 之类的东西,但是在 Kubernetes 集群中部署时我应该将其更改为什么。

我有一个具有 1 个主节点和 2 个从节点的 Kubernetes 集群设置,我创建了后端应用程序的部署并通过集群 Ip 公开它,然后我在前端应用程序中提供了这个集群 ip 和端口。 之后我将图像推送到 docker hub 并为其创建了一个 k8 部署,但它仍然无法正常工作。

我的主要问题是我应该在我的前端应用程序目标 URL 中提到什么 URL 和端口,以便它可以找到我的 java APIs。

前端 angular 应用程序 运行 在用户的浏览器中。这是在 kubernetes 集群之外,因此您不能将 kubernetes 服务名称用作 api 端点。 您需要使 spring 启动 api 可以从 kubernetes 外部访问,通常使用入口或负载平衡器。您在 angular 应用程序中将此外部 ip 或主机名用作 api url。

如果您的两个应用程序 运行 在同一个 kubernetes 集群中,那么您必须像这样调用您的后端服务:svcname:port 例如

http://login:8080/login

假设您的前端的 pods 在同一个 Kubernetes 命名空间中。如果它们在不同的命名空间中,您可以这样调用:

http://login.<namespace>.svc.cluster.local:5555/login

将我的 back-end 服务暴露给负载均衡器,而不是在我的 Front-end 应用程序中使用该负载均衡器端点对我​​有用。