【问题标题】:Ingress file for Angular+Springboot applicationAngular+Springboot 应用程序的入口文件
【发布时间】:2022-01-25 20:49:48
【问题描述】:

我有一个 Angular + Spring boot 微服务应用程序,其中有大约 10 个后端微服务。它是一个相当大的应用程序,可能有超过 100 个 REST 端点。 我们正在考虑迁移到 prem kubernetes。我想知道如何定义入口文件,是否还需要在入口中定义 Spring 应用程序中的所有应用程序 REST 端点? 我检查了几个示例,我可以看到它们使用 ingress 作为一种 Spring API 网关。那是正确的架构吗?谁能给我举个合适的例子?

【问题讨论】:

    标签: angular spring-boot kubernetes kubernetes-ingress nginx-ingress


    【解决方案1】:

    这主要取决于您的要求,您尝试使用什么。

    如果您只是打算在 sprint 启动中使用 Nginx 入口,您可以简单地使用 Nginx 入口控制器 并设置 入口 .

    如果您需要 API 网关 功能(例如 reate 限制、API 密钥、基本身份验证等),您需要使用 API 网关(如 Kong 等)。

    大约 10 个后端微服务。它是一个相当大的应用程序,有更多 可能超过 100 个 REST 端点。

    您可以使用不同的路由或不同的基于路径的每个微服务创建1个入口 > 路由。

    子域基于路由

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: test-ingress
      annotations:
        kubernetes.io/ingress.class: nginx
      rules:
        - host: service-1.example.com
          http:
            paths:
              - backend:
                  serviceName: service-1
                  servicePort: 9000
                path: /(.*)
        - host: service-2.example.com
          http:
            paths:
              - backend:
                  serviceName: service-2
                  servicePort: 8000
                path: /(.*)
        - host: service-3.example.com
          http:
            paths:
              - backend:
                  serviceName: service-3
                  servicePort: 8000
                path: /(.*)
    

    基于路径的单域路由api.example.com

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: minimal-ingress
      annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /
    spec:
      rules:
      -  host: api.example.com 
         http:
          paths:
          - path: /service-1
            pathType: Prefix
            backend:
              service:
                name: service-1
                port:
                  number: 80
          - path: /service-2
            pathType: Prefix
            backend:
              service:
                name: service-2
                port:
                  number: 80
    

    因此,当任何请求到达特定服务时,域 1 会将您的请求路由到服务。

    service-2.example.com ---> service-2 
    service-3.example.com ---> service-3 
    

    虽然在基于路径的中,Nginx 会根据 URL 中的路径前缀重定向请求

    api.example.com/service-2/* ---> service-2 
    

    【讨论】:

      猜你喜欢
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      • 2018-11-14
      • 2021-08-09
      相关资源
      最近更新 更多