मैं एक ग्राफकल इंजन चलाने वाले दोनों के अंदर दो सेवाओं के साथ एक इस्तियो सेवा जाल स्थापित कर रहा हूं। मैं उन्हें दो अलग-अलग उपपथों पर स्थापित करने की योजना बना रहा हूं। आप VirtualService पर पुनर्निर्देशन कैसे स्थापित करेंगे?

मैंने पहले ही इस VirtualService config का उपयोग करने का प्रयास किया है

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: hasura-1
spec:
  hosts:
  - "*"
  gateways:
  - hasura-gateway
  http:
  - match:
    - uri:
        prefix: /hasura1
    route:
    - destination:
        host: hasura-1
        port:
          number: 80
  - match:
    - uri:
        prefix: /hasura2
    route:
    - destination:
        host: hasura-2
        port:
          number: 80

लेकिन जब भी मैं इन उपसर्गों को एक्सेस करने का प्रयास करता हूं तो मुझे त्रुटि 404 होती रहती है।

संपादित करें: मैंने rewrite.uri को शामिल करने के लिए अपनी वर्चुअल सेवा को अपडेट किया है। जब भी मैं किसी भी उपसर्ग को एक्सेस करने का प्रयास करता हूं तो मुझे / पर रीडायरेक्ट किया जाता है और यह 404 त्रुटि देता है। यहां मेरा अपडेटेड गेटवे और वर्चुअल सर्विस मेनिफेस्ट है।

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: hasura-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: hasura-1
spec:
  hosts:
  - "*"
  gateways:
  - hasura-gateway
  http:
  - match:
    - uri:
        exact: /hasura1
    rewrite:
      uri: /
    route:
    - destination:
        host: hasura-1
        port:
          number: 80
  - match:
    - uri:
        exact: /hasura2
    rewrite:
      uri: /
    route:
    - destination:
        host: hasura-2
        port:
          number: 80
---
3
Kean Paderes 4 अप्रैल 2019, 14:38

1 उत्तर

सबसे बढ़िया उत्तर

आपके हसुरा का ग्राफक्यूएल एंडपॉइंट किस पथ पर कॉन्फ़िगर किया गया है?

जिस तरह से आपका VirtualService कॉन्फ़िगर किया गया है, आपके गेटवे के लिए एक अनुरोध इस तरह व्यवहार करेगा:

my.host.com/hasura1 --> hasura-1/hasura1
my.host.com/hasura1/anotherpath --> hasura-1/hasura1/anotherpath
my.host.com/hasura2 --> hasura-2/hasura2

हो सकता है कि आप अनुरोध से पथ को हटाने के लिए एक rewrite.uri नियम खो रहे हों।

जैसे: इस नियम के साथ:

http:
- match:
  - uri:
      prefix: /hasura1
  rewrite:
    uri: /
  route:
  - destination:
      host: hasura-1
      port:
        number: 80

आपके हसुरा कंटेनर को रूट पथ पर अनुरोध प्राप्त करना चाहिए:

my.host.com/hasura1 --> hasura-1/
my.host.com/hasura1/anotherpath --> hasura-1/anotherpath

1
Eduardo Baitello 4 अप्रैल 2019, 12:43