0

我正在尝试设置一些路由规则,但在以下情况下我遇到了问题。如果我向端口发送 HTTP 请求,比如说服务“service-a”的 5000,我希望我的路由规则将请求转发到服务“service-b”的端口 5001。可能吗?

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-route
spec:
  hosts:
  - service-a:5000
  - service-a
  - service-a.service:5000
  - service-a.service
  - service-a.service.consul:5000
  - service-a.service.consul
  gateways:
  - my-gateway
  http:
  - match:
    - uri:
        prefix: "/v1/service-a"
    rewrite:
      uri: "/v1/ser-a"
    route:
    - destination:
        port:
          number: 5001
        name: service-b

网关定义如下:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: my-gateway
spec:
  selector:
    app: my-gatweway-controller
  servers:
  - port:
      number: 5000
      name: http
      protocol: HTTP
    hosts:
    - localhost
  - port:
      number: 5001
      name: http
      protocol: HTTP
    hosts:
    - localhost

结果是内部错误 500,请求登陆端口 5000 而不是 5001。有人知道如何解决这个问题吗?

此致

马丁

4

1 回答 1

0

三天前,这个 PR 修复了端口重写 - https://github.com/istio/istio/pull/5543,它应该会出现在 Istio 的下一个版本中。

于 2018-05-14T10:56:23.853 回答