आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं. जानकारी
कस्टम प्लगिन जोड़ना
कस्टम प्लगिन लिखकर, माइक्रोगेटवे में नई सुविधाएं और क्षमताएं जोड़ी जा सकती हैं. कस्टम प्लगिन की मदद से, प्रोग्राम के हिसाब से उन अनुरोधों और जवाबों के साथ इंटरैक्ट किया जा सकता है जो माइक्रोगेटवे से होकर गुज़रते हैं.
इस सेक्शन में, Kubernetes क्लस्टर में चल रहे Edge Microgateway इंस्टेंस में प्लगिन को पैकेज और डिप्लॉय करने का तरीका बताया गया है.
इस सेक्शन के बाकी हिस्से में यह माना गया है कि आपको स्टैंडर्ड Edge Microgateway सेटअप के लिए प्लगिन लिखने और उन्हें कॉन्फ़िगर करने के बारे में जानकारी है. अगर ऐसा नहीं है, तो कस्टम प्लगिन डेवलप करना लेख पढ़ें.
अपने प्लग इन को पैकेज करें
कस्टम प्लगिन को पैकेज करने के लिए, यह तरीका अपनाएं:
एक आसान प्लगिन लिखना में दिए गए निर्देशों के मुताबिक, अपना प्लगिन लिखें और उसकी जांच करें.
अपने प्लगिन कोड को सही डायरेक्ट्री स्ट्रक्चर में रखें. प्लगिन डायरेक्ट्री का स्ट्रक्चर तय किया गया है. नीचे दिए गए उदाहरण में, आपको जिस स्ट्रक्चर का पालन करना है उसे दिखाया गया है. इसमें
response-uppercaseऔरrequest-headers, कस्टम प्लगिन कोड वाले फ़ोल्डर के नाम हैं. ये नाम सिर्फ़ उदाहरण के तौर पर दिए गए हैं. आपके फ़ोल्डर के नाम अलग हो सकते हैं:plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.jsoncdकोpluginफ़ोल्डर में ले जाएं.pluginफ़ोल्डर में, पूरेpluginsफ़ोल्डर को ज़िप करें:zip -r plugins.zip plugins/
डॉकर इमेज बनाना
- उसी डायरेक्ट्री में एक नई फ़ाइल बनाएं जहां zip फ़ाइल मौजूद है. इस फ़ाइल का नाम
Dockerfileरखें. Dockerfileमें यह कोड जोड़ें और फ़ाइल सेव करें:FROM gcr.io/apigee-microgateway/edgemicro:latest RUN apt-get install unzip COPY plugins.zip /opt/apigee/ RUN chown apigee:apigee /opt/apigee/plugins.zip RUN su - apigee -c "unzip /opt/apigee/plugins.zip -d /opt/apigee" EXPOSE 8000 EXPOSE 8443 ENTRYPOINT ["entrypoint"]अपने प्लगिन के साथ नई Edge Microgateway Docker इमेज बनाएं और इमेज को अपनी Docker रजिस्ट्री में पुश करें. अपनी पसंद के मुताबिक किसी भी रजिस्ट्री का इस्तेमाल किया जा सकता है. जैसे,
docker.ioयाgcr.io:docker build -t edgemicroplugins .docker tag edgemicroplugins container-registry/your-project/edgemicropluginsdocker push container-registry/your-project/edgemicropluginsउदाहरण के लिए:
docker build -t edgemicroplugins .docker tag edgemicroplugins gcr.io/my-project/edgemicropluginsdocker push gcr.io/my-project/edgemicroplugins
Edge Microgateway का कॉन्फ़िगरेशन अपडेट करना
Edge Microgateway की कॉन्फ़िगरेशन फ़ाइल में प्लगिन जोड़ें. कॉन्फ़िगरेशन फ़ाइल यहां मौजूद होती है:
$HOME/.edgemicro/org-env-config.yaml
उदाहरण के लिए:
$HOME/.edgemicro/myorg-test-config.yaml
नीचे दिए गए सैंपल कॉन्फ़िगरेशन में, कस्टम प्लगिन response-uppercase जोड़ा गया है.
oauth प्लगिन डिफ़ॉल्ट रूप से पहले से मौजूद था.
edgemicro:
...
plugins:
sequence:
- oauth
- response-uppercase
अपने Kubernetes क्लस्टर को अपडेट करना
आखिरी चरण में, कॉन्फ़िगरेशन में किए गए बदलाव को अपने Kubernetes क्लस्टर पर लागू करना होता है. Kubernetes, कंटेनर रजिस्ट्री में पुश किए गए प्लगिन कोड वाली नई इमेज को पुल करेगा. साथ ही, इसका इस्तेमाल नए पॉड के लिए करेगा.
अगर आपने Edge Microgateway को सेवा के तौर पर डिप्लॉय किया है
अपडेट किए गए Edge Microgateway कॉन्फ़िगरेशन को इंजेक्ट करने के लिए, edgemicroctl कमांड का इस्तेमाल करें:
नई इमेज की मदद से, Edge Microgateway डिप्लॉयमेंट को अपडेट करें. उदाहरण के लिए:
kubectl apply -f <(edgemicroctl -org=your_organization -env=your_environment -key=configuration_key -sec=configuration_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest)
कहां:
your_organization- यह वह Apigee संगठन है जिसे आपनेedgemicro configureकमांड में तय किया है.your_environment- यह वह एनवायरमेंट है जिसे आपनेedgemicro configureकमांड में तय किया है.configuration_key- यहedgemicro configureकमांड से मिली कुंजी है.configuration_secret- यहedgemicro configureकमांड से मिला सीक्रेट है.config_file_path- यह Edge Micro कॉन्फ़िगरेशन फ़ाइल का पाथ है. यहedgemicro configureकमांड से मिलता है.container-registry- यह Docker रजिस्ट्री है, जहां आपने इमेज को पुश किया है. उदाहरण के लिए,gcr.ioयाdocker.io.your_project_name- यह उस Docker रिपॉज़िटरी का प्रोजेक्ट नाम है जहां आपने Docker इमेज को पुश किया है.image_name- पुश की गई Docker इमेज का नाम.
उदाहरण:
kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=f2d2eaa52b758493d00cec656e574ac947bee1d701c5c5f3295e5eaa39a3b -sec=0c38cda3fac6c59152f15657052ba1728f8003c1a763cf08da2a -conf=/Users/jdoe/.edgemicro/apigeesearch-test-config.yaml -img=gcr.io/jdoe-project/edgemicroplugins:latest)
प्लगिन को आज़माएं. एपीआई को कॉल करके देखें कि आपको उम्मीद के मुताबिक नतीजे मिल रहे हैं या नहीं. उदाहरण के लिए, "response uppercase" प्लगिन के लिए, जवाब के टेक्स्ट को सभी बड़े अक्षरों में बदल दिया जाता है. इसे यहां दिखाया गया है:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
आउटपुट:
HELLO WORLD
नए कॉन्फ़िगरेशन को मैन्युअल तरीके से इंजेक्ट करना
मैन्युअल इंजेक्शन एक आसान तरीका है. इसमें कमांड लाइन से नया कॉन्फ़िगरेशन इंजेक्ट किया जाता है.
यह कमांड चलाएं:
kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest -svc=service_deployment_file)
कहां:
your_org- यह वह Apigee संगठन है जिसे आपनेedgemicro configureकमांड में तय किया है.your_env- यह वह एनवायरमेंट है जिसे आपनेedgemicro configureकमांड में तय किया है.your_key- यहedgemicro configureकमांड से मिली कुंजी है.your_secret- यहedgemicro configureकमांड से मिला सीक्रेट है.config_file_path- यह Edge Micro कॉन्फ़िगरेशन फ़ाइल का पाथ है. यहedgemicro configureकमांड से मिलता है.container-registry- यह Docker रजिस्ट्री है, जहां आपने इमेज को पुश किया है. उदाहरण के लिए,gcr.ioयाdocker.io.your_project_name- यह उस Docker रिपॉज़िटरी का प्रोजेक्ट नाम है जहां आपने Docker इमेज को पुश किया है.image_name- पुश की गई Docker इमेज का नाम.service_deployment_file- यह उस सेवा की डिप्लॉयमेंट फ़ाइल का पाथ है जिस पर प्लगिन लागू होंगे. उदाहरण के लिए:samples/helloworld/helloworld.yaml.
उदाहरण के लिए:
kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -img=gcr.io/myproject/edgemicroplugins:latest -svc=samples/helloworld/helloworld.yaml)
प्लगिन को आज़माएं. यह देखने के लिए कि आपको उम्मीद के मुताबिक नतीजे मिल रहे हैं या नहीं, सेवा वाले एपीआई को कॉल करें. उदाहरण के लिए, "response uppercase" प्लगिन के लिए, जवाब के टेक्स्ट को पूरी तरह से अपरकेस में बदल दिया जाता है. इसे यहां दिखाया गया है:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
आउटपुट:
HELLO WORLD
Edge Microgateway के कॉन्फ़िगरेशन में बदलाव करना
कुछ मामलों में, आपको Edge Microgateway के कॉन्फ़िगरेशन में बदलाव करना पड़ सकता है. उदाहरण के लिए, आपको Edge Microgateway में कोई नया प्लगिन जोड़ना हो सकता है या कॉन्फ़िगरेशन पैरामीटर में बदलाव करना हो सकता है. इस सेक्शन में, Kubernetes में चल रहे Edge Microgateway में कॉन्फ़िगरेशन से जुड़े बदलाव करने और उन्हें लागू करने का तरीका बताया गया है.
नीचे दिए गए तरीके से, कॉन्फ़िगरेशन फ़ाइल
secret.yamlबनाएं:apiVersion: v1 kind: Secret metadata: name: mgwsecret type: Opaque data: mgorg: EDGEMICRO_ORG mgenv: EDGEMICRO_ENV mgkey: EDGEMICRO_KEY mgsecret: EDGEMICRO_SECRET mgconfig: EDGEMICRO_CONFIGEDGEMICRO_ORG,EDGEMICRO_ENV,EDGEMICRO_KEY,EDGEMICRO_SECRETकी base64 एन्कोड की गई वैल्यू डालें:echo -n "your-org" | base64 | tr -d '\n'echo -n "your-org-env" | base64 | tr -d '\n'echo -n "your-mg-key" | base64 | tr -d '\n'echo -n "your-mg-secret" | base64 | tr -d '\n'अपने संगठन और एनवायरमेंट के लिए, Edge Microgateway कॉन्फ़िगरेशन फ़ाइल में बदलाव करें:
$HOME/.edgemicro/your_org-your_env-config.yaml
कॉन्फ़िगरेशन फ़ाइल के कॉन्टेंट को दो बार Base64 कोड में बदलें:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
उस नेमस्पेस में Kubernetes पर बदलाव लागू करें जहां आपकी सेवा चल रही है.
kubectl apply -f secret.yaml -n
मौजूदा माइक्रोगेटवे पॉड, इन नए बदलावों को अपने-आप नहीं चुनते. हालांकि, नए पॉड को ये बदलाव मिल जाएंगे. मौजूदा पॉड को मिटाया जा सकता है, ताकि डिप्लॉयमेंट एक नया पॉड बना सके और बदलाव को लागू कर सके.
सेवा का उदाहरण
यहां दिए गए उदाहरण में, नई
पॉड पाएं.
kubectl get pods
आउटपुट का उदाहरण:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 19h helloworld-6987878fc4-cltc2 1/1 Running 0 1dedge-microgatewayपॉड मिटाएं.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
आउटपुट का उदाहरण:
pod "edge-microgateway-57ccc7776b-g7nrg" deletedपॉड फिर से पाएं. एक नया पॉड शुरू होता है और आपके कॉन्फ़िगरेशन में किए गए बदलावों को लागू करता है.
kubectl get pods
आउटपुट का उदाहरण:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-7f6tc 1/1 Running 0 5s helloworld-6987878fc4-cltc2 1/1 Running 0 1d
अपने डिप्लॉयमेंट को स्केल करना
इस सेक्शन में बताया गया है कि डिप्लॉयमेंट को स्केल करने के लिए, Kubernetes के स्केलिंग सिद्धांतों का इस्तेमाल कैसे किया जा सकता है.
सेवा डिप्लॉयमेंट को स्केल करना
डिप्लॉयमेंट की जांच करें:
kubectl get deployments
आउटपुट का उदाहरण:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 1 1 1 1 18h helloworld 1 1 1 1 1dआउटपुट से पता चलता है कि एक रेप्लिका डिप्लॉय की गई है.
डिप्लॉयमेंट को 1 से लेकर जितनी चाहें उतनी रेप्लिका तक स्केल करें. इस उदाहरण में,
edge-microgatewayसेवा को स्केल किया गया है.kubectl scale deployment edge-microgateway --replicas=2
(ज़रूरी नहीं) अगर आपको ऑटो स्केलिंग का इस्तेमाल करना है, तो इस निर्देश का इस्तेमाल करें:
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
यह पुष्टि करने के लिए कि स्केलिंग की सुविधा चालू है, डिप्लॉयमेंट की जांच करें:
kubectl get deployments
आउटपुट का उदाहरण:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 2 2 2 2 18h helloworld 1 1 1 1 1dस्टेट को बदलकर, इसमें दो रेप्लिका शामिल कर दिए गए हैं.
पॉड की जांच करें:
kubectl get pods
आउटपुट का उदाहरण:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 18h edge-microgateway-57ccc7776b-rvfz4 1/1 Running 0 41s helloworld-6987878fc4-cltc2 1/1 Running 0 1dआउटपुट में दिखाया गया है कि दोनों रेप्लिका चालू हैं.
Edge Microgateway के एक से ज़्यादा कॉन्फ़िगरेशन के लिए नेमस्पेस का इस्तेमाल करना
अपने Kubernetes क्लस्टर में, Edge Microgateway सेवाओं के कई इंस्टेंस डिप्लॉय और कॉन्फ़िगर किए जा सकते हैं. इस इस्तेमाल के उदाहरण में, हर माइक्रोगेटवे इंस्टेंस को प्लगिन और पैरामीटर के अपने सेट के साथ कॉन्फ़िगर किया जा सकता है. उदाहरण के लिए:
- Edge Microgateway Service A के लिए, सिर्फ़ स्पाइक अरेस्ट प्लगिन की ज़रूरत होती है.
- Edge Microgateway Service B को कोटा और OAuth प्लगिन की ज़रूरत होती है, लेकिन स्पाइक अरेस्ट की नहीं.
इस समस्या को हल करने के लिए, Kubernetes नेमस्पेस का इस्तेमाल करें. उदाहरण के लिए, Edge Microgateway Service A को नेमस्पेस foo में और Edge Microgateway Service B को नेमस्पेस bar में डिप्लॉय किया जा सकता है.
यहां दिए गए उदाहरण में, संगठन OrgA में कॉन्फ़िगर किए गए Edge Microgateway को -n विकल्प का इस्तेमाल करके, नेमस्पेस foo में सेवा के तौर पर डिप्लॉय किया गया है:
kubectl apply -f <(edgemicroctl -org=myorgA -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgA-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n foo
इसी तरह, यहां दिए गए उदाहरण में, संगठन OrgB में कॉन्फ़िगर किए गए Edge Microgateway को -n विकल्प का इस्तेमाल करके, नेमस्पेस bar में सेवा के तौर पर डिप्लॉय किया गया है:
kubectl apply -f <(edgemicroctl -org=myorgB -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgB-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n bar