Apigee Edge का दस्तावेज़ देखा जा रहा है.
Apigee X के दस्तावेज़ पर जाएं. जानकारी
कस्टम प्लग इन जोड़ना
कस्टम प्लग इन लिखकर, माइक्रोगेटवे में नई सुविधाएं और क्षमताएं जोड़ी जा सकती हैं. कस्टम प्लग इन की मदद से, प्रोग्राम के हिसाब से उन अनुरोधों और जवाबों के साथ इंटरैक्ट किया जा सकता है जो माइक्रोगेटकवे से फ़्लो करते हैं.
इस सेक्शन में, Kubernetes क्लस्टर में चल रहे Edge Microgateway इंस्टेंस में प्लग इन को पैकेज और डिप्लॉय करने का तरीका बताया गया है.
इस सेक्शन के बाकी हिस्से में यह माना गया है कि आपको स्टैंडर्ड Edge माइक्रोगेटवे सेटअप के लिए प्लग इन लिखने और कॉन्फ़िगर करने की जानकारी है. अगर ऐसा नहीं है, तो कस्टम प्लग इन बनाना लेख पढ़ें.
अपने प्लग इन को पैकेज करना
कस्टम प्लग इन को पैकेज करने के लिए, यह तरीका अपनाएं:
आसान प्लग इन लिखना में दिए गए निर्देशों के मुताबिक, अपना प्लग इन लिखें और उसकी जांच करें.
अपने प्लग इन कोड को सही डायरेक्ट्री स्ट्रक्चर में रखें. प्लग इन डायरेक्ट्री, तय किए गए स्ट्रक्चर के मुताबिक होनी चाहिए. नीचे दिए गए उदाहरण में, आपको जिस स्ट्रक्चर का पालन करना है उसके बारे में बताया गया है. इसमें
response-uppercase
औरrequest-headers
, कस्टम प्लग इन कोड वाले फ़ोल्डर के नाम हैं. ये नाम सिर्फ़ उदाहरण के तौर पर दिए गए हैं. आपके फ़ोल्डर के नाम अलग हो सकते हैं:plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
cd
कोplugin
फ़ोल्डर में ले जाएं.plugin
फ़ोल्डर में, पूरेplugins
फ़ोल्डर को zip करें:zip -r plugins.zip plugins/
Docker इमेज बनाना
- उसी डायरेक्ट्री में जहां 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/edgemicroplugins
docker push container-registry/your-project/edgemicroplugins
उदाहरण के लिए:
docker build -t edgemicroplugins .
docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins
docker 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 माइक्रोगेटवे कॉन्फ़िगरेशन को इंजेक्ट करने के लिए, 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
-edgemicro configure
कमांड से मिली Edge Micro कॉन्फ़िगरेशन फ़ाइल का पाथ.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
-edgemicro configure
कमांड से मिली Edge Micro कॉन्फ़िगरेशन फ़ाइल का पाथ.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_CONFIG
EDGEMICRO_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 1d
edge-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
आउटपुट से पता चलता है कि एक रिप्लिकेशन डिप्लॉय किया गया है.
डिप्लॉयमेंट को एक से ज़्यादा रिप्लिकेशन तक बढ़ाएं. इस उदाहरण में,
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 माइक्रोगेटवे कॉन्फ़िगरेशन के लिए नेमस्पेस का इस्तेमाल करना
अपने Kubernetes क्लस्टर में, Edge Microgateway सेवाओं के कई इंस्टेंस डिप्लॉय और कॉन्फ़िगर किए जा सकते हैं. इस इस्तेमाल के उदाहरण की मदद से, हर माइक्रोगेटवे इंस्टेंस को प्लग इन और पैरामीटर के अपने सेट के साथ कॉन्फ़िगर किया जा सकता है. उदाहरण के लिए:
- Edge Microgateway Service A को सिर्फ़ स्पाइक ऐरेस्ट प्लग इन की ज़रूरत होती है.
- Edge Microgateway Service B को कोटा और oauth प्लग इन की ज़रूरत है, लेकिन स्पाइक ऐरेस्ट की नहीं.
इस उदाहरण को हल करने के लिए, Kubernetes नेमस्पेस का इस्तेमाल करें. उदाहरण के लिए, नेमस्पेस foo
में Edge Microgateway Service A और नेमस्पेस bar
में Edge Microgateway Service B को डिप्लॉय किया जा सकता है.
नीचे दिए गए उदाहरण में, संगठन 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