मैंने अपने स्थानीय और लागू प्लगइन फ़िल्टर में राजदूत को कॉन्फ़िगर किया है, निम्नलिखित फ़िल्टर कॉन्फ़िगरेशन है:
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
1 उत्तर
एबसडोर अनुरोध मानचित्रण निम्नलिखित तरीके से काम कर रहा है
- एंबेसडर गेटवे के लिए कोई भी अनुरोध पहले मैपिंग में अनुरोध के लिए उपलब्ध किसी भी मैच की जांच करेगा,
- यदि कोई मैपिंग मेल खाता है और फिर फ़िल्टर नीति नियम अनुरोध के साथ मेल खाने पर फ़िल्टर को आमंत्रित करता है।
- फ़िल्टर प्लगइन तर्क को लागू करता है और अनुरोध को अपडेट करता है
- फ़िल्टर लॉजिक के बाद अनुरोध किसी भी मैपिंग और वास्तविक सेवा के मार्ग के साथ मैप किया जाता है
तो उपरोक्त समस्या से बचने के लिए निम्नलिखित मानचित्रण जोड़ा गया
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
संबंधित सवाल
नए सवाल
kubernetes
KUBERNETES क्वेरीटेस्ट को विकसित किया जाना चाहिए। Kubernetes एक ओपन-सोर्स प्लेटफ़ॉर्म है जिसे कई मेजबानों और / या बादलों में तैनाती, स्केलिंग और एप्लिकेशन कंटेनरों के संचालन को स्वचालित करने के लिए डिज़ाइन किया गया है। क्लस्टर्स को कॉन्फ़िगर करने के बारे में प्रश्न https://serverfault.com पर पूछे जाने चाहिए