我正在try 创建两个入口服务,一个将expose 在互联网的前端和第二个将连接后端到前端.这是Minikube,我启用了ingress addon.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: angular-ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: angular.test
    - http:
        paths:
          - path: /
            pathType: Prefix  
            backend:
              service:
                name: angular-service
                port:
                  number: 8080
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: spring-ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: springboot.test
    - http:
        paths:
          - path: /exact/form-config/applicant/field?section=Additional%20Details&page-index=1&enabled-on=
            pathType: Exact
            backend:
              service:
                name: angular-service
                port:
                  number: 8080

我想使用后端主机URL的名称在我的Angular 应用程序的SpringBoot,我希望他们连接不使用IP,因为IP是动态的.这样对吗?

推荐答案

假设你有一个针对你的Angular 应用程序的服务,如下所示:

apiVersion: v1
kind: Service
metadata:
  name: your-angular-app
  namespace: dev
spec:
  selector:
    app: your-angular-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      name: http

并在相同的名称空间中为您的Spring Boot应用程序提供如下服务:

apiVersion: v1
kind: Service
metadata:
  name: your-spring-app
  namespace: dev
spec:
  selector:
    app: your-spring-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      name: http

确保您的部署(或用于在集群中实际创建应用程序实例的任何东西)具有匹配的标签.部署示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: your-spring-app
  namespace: dev
spec:
  replicas: 1
  selector:
    matchLabels:
      app: your-spring-app # <- this must match the spec.selector.app in the service

假设您的Spring应用程序提供了所有带有/api前缀的API端点,您可以使用如下所示的Inress:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: your-ingress
  namespace: dev
spec:
  rules:
    - host: your-site.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: your-angular-app
                port:
                 name: http
          - path: /api
            pathType: Prefix
            backend:
              service:
                name: your-spring-app
                port:
                 name: http

在云环境中,您很可能需要在Inress上添加额外的注释,如Inress类,但这些信息可以在云Provider 的文档中找到.

Angular相关问答推荐

MAT表的内联文本编辑-未刷新编辑图标

Angular 环境本地无文件替换

为什么动画只触发一次?

当快速拖动光标时会丢失元素 - Angular

如何将 Firebase 云消息传递 (FCM) 与 Angular 15 结合使用?

当信号的值发生变化时,模板不会更新

显示带有数组子列的标题表 - Angular

Angular:为什么在我的自定义 ErrorHandler 中订阅主题不触发?

如何使用 Angular 12 material 验证密码和确认密码?

Angular:将间隔与增量和减量相结合

将 html ngModel 值传递给服务 --Angular

Angular 4.3拦截器不起作用

Angular 7 测试:NullInjectorError:No provider for ActivatedRoute

如何在 Angular2 中的所有请求的请求标头中发送Cookie?

如何从 EventEmitter 函数返回值?

Angular 2中不同页面的多种布局

在Angular 6 中找不到 HammerJS

Angular 2 单元测试 - 出现错误无法加载ng:///DynamicTestModule/module.ngfactory.js

如何在 Angular 应用程序中通过路由更改页面标题?

如何从materialAngular使用分页器?