VirtualService路由仅使用一个主机

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

我具有以下VirtualService:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: external-vs
  namespace: dev
spec:
  hosts:
    - "*"
  gateways:
    - http-gateway
  http:
    - name: "postauth"
      match:
      - uri:
        exact: /postauth
      route:
        - destination:
            port:
              number: 8080
            host: postauth
    - name: "frontend"
      match:
        - uri:
          exact: /app
      route:
        - destination:
            port:
              number: 8081
            host: sa-frontend

我希望/ postauth端点的调用将被路由到postauth服务,而/ app端点的调用将被路由到sa-frontend服务。发生的是,所有调用最终都被路由到文件中的第一个路由器,在上述情况下为postauth,但是如果我更改顺序,它将变为sa-frontend

所有服务和部署都在同一个名称空间(dev)中。

这是某种预期的行为吗?我的解释是,以上内容仅应允许调用/ postauth和/ app端点,而不能将其路由到各自的服务。

networking kubernetes istio
1个回答
0
投票

根据HTTPMatchRequest中的documentaion for Istio 1.3,您可以找到

字段:名称,类型:字符串

我已经比较了1.1和1.3版本之间的设置:在版本1.3.4中,此伞兵工作正常,并且路由使用以下名称传播:

[
    {
        "name": "http.80",
        "virtualHosts": [
            {
                "name": "*:80",
                "domains": [
                    "*",
                    "*:80"
                ],
                "routes": [
                    {
                        "name": "ala1",
                        "match": {
                            "prefix": "/hello1",
                            "caseSensitive": true
                        },
                        "route": {
                            "cluster": "outbound|9020||hello1.default.svc.cluster.local",
.
.
.

                    {
                        "name": "ala2",
                        "match": {
                            "prefix": "/hello2",
                            "caseSensitive": true
                        },
                        "route": {
                            "cluster": "outbound|9030||hello2.default.svc.cluster.local",

虽然在1.1版中,它无法正常工作。在这种情况下,请使用适当的release验证设置。

此外,请参考Troubleshooting部分。

您可以在集群中验证您应用的配置(更改),例如:Envoy实例的配置方式:

istioctl proxy-config cluster -n istio-system your_istio-ingressgateway-name

验证服务的路由配置和虚拟主机:

istioctl proxy-config routes -n istio-system your_istio-ingressgateway-name -o json

希望获得帮助。

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