मैंने अपने स्थानीय और लागू प्लगइन फ़िल्टर में राजदूत को कॉन्फ़िगर किया है, निम्नलिखित फ़िल्टर कॉन्फ़िगरेशन है:

apiVersion: getambassador.io/v1beta1
kind: Filter
metadata:
  name: "x-dc-filter"
spec:
  Plugin:
    name: "x-dc-plugin"

---
apiVersion: getambassador.io/v1beta1
kind: FilterPolicy
metadata:
  name: "x-dc-filter-policy"
spec:
  rules:
  - host: "*"
    path: "*"
    filters:               
    - name: "x-dc-filter"  

एंबेसडर डॉकर इमेज के हिस्से के रूप में प्लगइन .so फाइल को बंडल किया है और सत्यापित किया है कि प्लगइन पॉड में /etc/एंबेसडर-प्लगइन्स पथ में उपलब्ध है। शुरू करने पर राजदूत को पॉड से निम्नलिखित लॉग मिले:

Calling Metriton
2020-11-27 06:11:28 diagd 1.9.1 [P75TThreadPoolExecutor-0_1] INFO: B155B245-326B-4CA6-8ECF-A9034B478E5E: 127.0.0.1 "GET /ambassador/v0/diag/" 22ms 200 success
2020/11/27 06:11:35 aggregator: watch hook stderr: 2020-11-27 06:11:35 watch-hook WARNING: <Filter ambassador.default.1>: no handler for Filter, just saving
2020/11/27 06:11:35 aggregator: watch hook stderr: 2020-11-27 06:11:35 watch-hook WARNING: <FilterPolicy ambassador.default.2>: no handler for FilterPolicy, just saving
2020/11/27 06:11:35 aggregator: watch hook stderr:
2020/11/27 06:11:35 kubernetes:secret|default|*|*: signaling shutdown
2020/11/27 06:11:35 kubernetes:secret|default|*|*: exited
2020/11/27 06:11:35 kubernetes:service|default|*|*: signaling shutdown
2020/11/27 06:11:35 kubernetes:service|default|*|*: exited
2020-11-27 06:11:35 diagd 1.9.1 [P75TAEW] WARNING: <Filter ambassador.default.1>: no handler for Filter, just saving
2020-11-27 06:11:35 diagd 1.9.1 [P75TAEW] WARNING: <FilterPolicy ambassador.default.2>: no handler for FilterPolicy, just saving
2020-11-27 06:11:36 diagd 1.9.1 [P75TAEW] INFO: configuration updated (complete) from snapshot 3 (S8 L1 G8 C3)
time="2020-11-27 06:11:36" level=warning msg="license_secret_watch: empty decoded license data" func=github.com/datawire/apro/cmd/amb-sidecar/runner.runE.func4 file="github.com/datawire/apro/cmd/amb-sidecar/runner/main.go:300" MAIN=license_secret_watch
time="2020-11-27 06:11:36" level=warning msg="license_secret_watch: empty decoded license data" func=github.com/datawire/apro/cmd/amb-sidecar/runner.runE.func4 file="github.com/datawire/apro/cmd/amb-sidecar/runner/main.go:300" MAIN=license_secret_watch
2020/11/27 06:11:36 aggregator: watch hook stderr: 2020-11-27 06:11:36 watch-hook WARNING: <Filter ambassador.default.1>: no handler for Filter, just saving
2020/11/27 06:11:36 aggregator: watch hook stderr: 2020-11-27 06:11:36 watch-hook WARNING: <FilterPolicy ambassador.default.2>: no handler for FilterPolicy, just saving
2020/11/27 06:11:36 aggregator: watch hook stderr:
2020-11-27 06:11:37 diagd 1.9.1 [P75TAEW] WARNING: <Filter ambassador.default.1>: no handler for Filter, just saving
2020-11-27 06:11:37 diagd 1.9.1 [P75TAEW] WARNING: <FilterPolicy ambassador.default.2>: no handler for FilterPolicy, just saving
2020-11-27 06:11:37 diagd 1.9.1 [P75TAEW] INFO: configuration updated (complete) from snapshot 4 (S8 L1 G8 C3)
time="2020-11-27 06:11:37" level=warning msg="license_secret_watch: empty decoded license data" func=github.com/datawire/apro/cmd/amb-sidecar/runner.runE.func4 file="github.com/datawire/apro/cmd/amb-sidecar/runner/main.go:300" MAIN=license_secret_watch
time="2020-11-27 06:11:37" level=warning msg="license_secret_watch: empty decoded license data" func=github.com/datawire/apro/cmd/amb-sidecar/runner.runE.func4 file="github.com/datawire/apro/cmd/amb-sidecar/runner/main.go:300" MAIN=license_secret_watch
2020/11/27 06:11:38 aggregator: watch hook stderr: 2020-11-27 06:11:38 watch-hook WARNING: <Filter ambassador.default.1>: no handler for Filter, just saving
2020/11/27 06:11:38 aggregator: watch hook stderr: 2020-11-27 06:11:38 watch-hook WARNING: <FilterPolicy ambassador.default.2>: no handler for FilterPolicy, just saving
2020/11/27 06:11:38 aggregator: watch hook stderr:
2020-11-27 06:11:38 diagd 1.9.1 [P75TAEW] WARNING: <Filter ambassador.default.1>: no handler for Filter, just saving
2020-11-27 06:11:38 diagd 1.9.1 [P75TAEW] WARNING: <FilterPolicy ambassador.default.2>: no handler for FilterPolicy, just saving
2020-11-27 06:11:38 diagd 1.9.1 [P75TAEW] INFO: configuration updated (complete) from snapshot 5 (S8 L1 G8 C3)
time="2020-11-27 06:11:38" level=warning msg="license_secret_watch: empty decoded license data" func=github.com/datawire/apro/cmd/amb-sidecar/runner.runE.func4 file="github.com/datawire/apro/cmd/amb-sidecar/runner/main.go:300" MAIN=license_secret_watch
time="2020-11-27 06:11:38" level=warning msg="license_secret_watch: empty decoded license data" func=github.com/datawire/apro/cmd/amb-sidecar/runner.runE.func4 file="github.com/datawire/apro/cmd/amb-sidecar/runner/main.go:300" MAIN=license_secret_watch
2020-11-27 06:12:27 diagd 1.9.1 [P75TThreadPoolExecutor-0_0] INFO: 44A5439F-C2E4-46C8-9D57-F5F4B6654E72: 127.0.0.1 "GET /ambassador/v0/diag/" 22ms 200 success
2020-11-27 06:13:27 diagd 1.9.1 [P75TThreadPoolExecutor-0_0] INFO: 15FD78F9-B331-4D57-B838-FEB5CB066C82: 127.0.0.1 "GET /ambassador/v0/diag/" 16ms 200 success
2020-11-27 06:13:38 diagd 1.9.1 [P75TAEW] INFO: TIMER reconfiguration: 5, 0.121/0.260/0.406
0
sreekesh.s 27 नवम्बर 2020, 10:13

1 उत्तर

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

एबसडोर अनुरोध मानचित्रण निम्नलिखित तरीके से काम कर रहा है

  1. एंबेसडर गेटवे के लिए कोई भी अनुरोध पहले मैपिंग में अनुरोध के लिए उपलब्ध किसी भी मैच की जांच करेगा,
  2. यदि कोई मैपिंग मेल खाता है और फिर फ़िल्टर नीति नियम अनुरोध के साथ मेल खाने पर फ़िल्टर को आमंत्रित करता है।
  3. फ़िल्टर प्लगइन तर्क को लागू करता है और अनुरोध को अपडेट करता है
  4. फ़िल्टर लॉजिक के बाद अनुरोध किसी भी मैपिंग और वास्तविक सेवा के मार्ग के साथ मैप किया जाता है

तो उपरोक्त समस्या से बचने के लिए निम्नलिखित मानचित्रण जोड़ा गया

annotations:
    getambassador.io/config: |
      ---
      apiVersion: ambassador/v1
      kind:  Mapping
      name:  dc_1_mapping
      prefix: "/getHostName"
      rewrite: ""
      headers:
        X-Dc: odd
      service: testservice1:8081
      ---
        apiVersion: ambassador/v1
        kind:  Mapping
        name:  dc_2_mapping
        prefix: "/getHostName"
        headers:
          X-Dc: even
        service: testservice2:8082
        rewrite: ""
      ---
      apiVersion: ambassador/v1
      kind:  Mapping
      name:  dc_3_mapping
      prefix: "/getHostName"
      service: testservice3:8083
      rewrite: ""

नोट: प्रश्न में उल्लिखित एक्स-डीसी-प्लगइन फ़िल्टर केवल अनुरोध शीर्षलेख एक्स-डीसी बुद्धि को अद्यतन करता है या क्वेरी परम में आईडी के आधार पर भी अपडेट करता है।

उदाहरण प्रवाह:

यहां अगर मैं एक अनुरोध भेजता हूं http://localhost/getHostName?id=2 यह अंतिम मैपिंग और फिर फ़िल्टर करने के लिए रूट अनुरोध से मेल खाएगा। फ़िल्टर हेडर को अपडेट करता है जैसे कि क्वेरी परम 2 में आईडी है। फिर राजदूत फिर से हेडर के साथ ऊपर मैपिंग के साथ अनुरोध का मिलान करने का प्रयास करता है और अनुरोध को testService2:8082

1
sreekesh.s 3 पद 2020, 07:58