angular - AKS K8S - 使用服务名称从 Angular 前端访问 spring-boot 应用程序

标签 angular azure kubernetes azure-aks

我有两个使用 Angular 开发的应用程序前端和使用 spring-boot 开发的后端。这两个应用程序都在同一命名空间中运行。

已经创建了两个类型的服务:Loadbalancer。

  1. 前端说 frontend-app-lb (暴露9001)
  2. 后端说 backend-app-lb (暴露 9000)。

我能够通过外部 IP 获得响应。使用 curl http://<External-ip>:900[0/1]/

在 Angular 应用程序中,我配置了environment-prod.ts,baseurl为http://<External-ip-of-backend-app-lb>:9000/ 。允许 CORS 的情况下,可以访问后端应用程序。

我还知道,如果应用程序在不同的命名空间中运行,我们可以使用此 http://<service-name>.<namespace>.svc.cluster.local:port 从不同的命名空间访问应用程序/pod .

如何仅使用 baseurl 中的服务名称(例如 http://backend-app-lb:9000)来访问在同一命名空间中运行的后端应用程序。 - 这可能吗?

最佳答案

我发现,访问 http://backend-app-lb:9000 可能不是一种方法。

其他方法:

方法#1:使用 Azure 应用程序网关:

  • 将后端服务公开为 LoadBalancer 类型的服务(在我的例子中是部署在 AKS 中的应用程序)。这样就配置了应用程序网关(第 7 层)。

    • 说出任何连接到后端应用程序的 URL /backend-api
  • 在前端应用程序environment.prod.ts中,使用/backend-api作为baseurl连接到后端api。

方法#2:使用 Nginx 代理

  • 如果前端应用程序是在 Ngnix 服务器上开发的,则使用我们创建代理并访问后端服务的配置。
  • 引用资料可访问 Kubernetes documentation
  • 在这种情况下,后端应用程序可以作为服务公开(可以是 NodePort 或 LoadBalancer 类型)。

这两种方法在某种程度上都使前端应用程序访问后端服务变得简单,并且在构建过程中无需进行操作。

关于angular - AKS K8S - 使用服务名称从 Angular 前端访问 spring-boot 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66287677/

相关文章:

python - 在 Azure 应用服务中使用 xgboost 时使用部署时出错

Nginx-Ingress Controller 后面的 Nginx 服务器

javascript - 如何使用 Angular 在 rxJs 订阅和映射中链接 API 调用?

Angular2 将 map 的值绑定(bind)到复选框

javascript - Angular JS 日期过滤器不起作用(日期时间)

python - Kubernetes:如何使用 python api 获取命名空间中的所有 pod?

kubernetes - 如何在不创建 ConfigMap 的情况下将动态生成的文件挂载到 pod 中?

javascript - Angular2 : [routerLinkActive] ="[' active']"not updating on _router. 导航

azure - 是否可以阻止来自某些 IP 地址的请求发送到 Application Insights?

c# - 获取新创建存储帐户的存储帐户 key