无法使用 istio 入口网关将流量路由到不同的服务

问题描述 投票:0回答:1

我是 istio 新手。我有一个应用程序部署在 k8s 集群上。我想使用 istio 入口网关向互联网公开服务。我的服务在端口 80 上运行。所以我创建了一个网关和虚拟服务 yaml 文件。当我将前缀设置为“/”时,它工作正常。但如果我将前缀设置为“/xyz”。它不起作用。帮助。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: vote
spec:
  hosts:
  - "*"
  gateways:
  - my-gateway
  http:
  - match:
    - uri:
        prefix: /xyz
    route:
    - destination:
        host: vote  # Replace with the actual service name
        port:
          number: 80


and this is the gateway code

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: my-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"

谢谢

kubernetes deployment kubernetes-ingress istio
1个回答
0
投票

我猜您将流量路由到的

vote
服务没有
/xyz
路径的句柄。根据您当前的配置,如果您向
http://[yourgateway]/xyz
发送请求,流量将路由到
http://vote/xyz
。如果不需要,您必须在匹配后重写路径。

例如:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: vote
spec:
  hosts:
  - "*"
  gateways:
  - my-gateway
  http:
  - match:
    - uri:
        prefix: /xyz
    rewrite:
      uri: /
    route:
    - destination:
        host: vote  # Replace with the actual service name
        port:
          number: 80

上述配置仍然会捕获

http://[yourgateway]/xyz
,但会将捕获的部分(
/xyz
)重写为
/
,因此请求将发送到
vote/
(而不是
vote/xyz
)。

© www.soinside.com 2019 - 2024. All rights reserved.