6

我的后端运行了三个服务,入口路由定义如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: myapp-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
  - hosts:
    - myapp.westeurope.cloudapp.azure.com
    secretName: acme-crt-secret
  rules:
  - host: myapp.westeurope.cloudapp.azure.com
    http:
      paths:
      - path: /
        backend:
          serviceName: myapp-mvc
          servicePort: 80
      - path: /api
        backend:
          serviceName: myapp-api
          servicePort: 80
      - path: /identity
        backend:
          serviceName: myapp-identity
          servicePort: 80

问题是myapp-api已经在监听对/api/v1/myresource. 在当前配置下,myapp-api服务仅提供对myapp.westeurope.cloudapp.azure.com/api/api/v1/myresource(请注意 .../api/api/...)的请求。

是否可以通过 myapp-api 服务为请求提供服务,但在不创建另一个 Ingress 的情况下为/api服务重写这些请求?/因此,myapp-api 应该向myapp.westeurope.cloudapp.azure.com/api/v1/myresource.

4

1 回答 1

1

你有两个选择:

a) 更改 API 的端口并让它在该端口上服务/。

b) 更改您的应用程序,使其在“/v1/myresource”上提供 API,并通过 Ingress 为其提供 URL 的“api”部分。

无论哪种方式,您都可以在“myapp.westeurope.cloudapp.azure.com/api/v1/myresource”获得资源。

于 2018-08-13T11:01:06.440 回答