Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं. जानकारी
कस्टम प्लगिन जोड़ना
कस्टम प्लगिन लिखकर माइक्रोगेटवे में नई सुविधाएं और क्षमताएं जोड़ी जा सकती हैं. कस्टम प्लग इन आपको माइक्रोगेटवे से आने वाले अनुरोधों और रिस्पॉन्स के साथ प्रोग्राम के हिसाब से इंटरैक्ट करने की सुविधा देते हैं.
इस सेक्शन में बताया गया है कि आपके Cubernetes क्लस्टर में चल रहे Edge माइक्रोगेटवे इंस्टेंस में प्लग इन को कैसे पैकेज और डिप्लॉय किया जाता है.
इस सेक्शन के बाकी हिस्से में यह माना गया है कि आपको स्टैंडर्ड Edge माइक्रोगेटवे सेटअप के लिए प्लगिन लिखने और कॉन्फ़िगर करने के बारे में पता है. यदि नहीं, तो कस्टम प्लग इन डेवलप करें देखें.
अपने प्लग इन को पैकेज करें
कस्टम प्लगिन को पैकेज करने के लिए, इन चरणों का पालन करें:
एक आसान प्लगिन लिखें में दिए गए निर्देशों के अनुसार, अपना प्लग इन लिखें और उसकी जांच करें.
अपने प्लगिन कोड को सही डायरेक्ट्री में रखें. प्लग इन डायरेक्ट्री को तय स्ट्रक्चर का पालन करना होगा. इस उदाहरण में वह स्ट्रक्चर दिखाया गया है जिसका आपको पालन करना होगा, जहां
response-uppercase
औरrequest-headers
कस्टम प्लगिन कोड वाले फ़ोल्डर के नाम हैं (ये नाम सिर्फ़ उदाहरण हैं, आपके फ़ोल्डर के नाम अलग-अलग हो सकते हैं):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
plugin
फ़ोल्डर मेंcd
.plugin
फ़ोल्डर में, पूरेplugins
फ़ोल्डर को ज़िप करें: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 माइक्रोगेटवे 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 माइक्रोगेटवे कॉन्फ़िगरेशन को अपडेट करें
अपनी Edge माइक्रोगेटवे कॉन्फ़िगरेशन फ़ाइल में प्लग इन जोड़ें. कॉन्फ़िगरेशन फ़ाइल को यहां पाएं:
$HOME/.edgemicro/org-env-config.yaml
उदाहरण के लिए:
$HOME/.edgemicro/myorg-test-config.yaml
नीचे दिए गए सैंपल कॉन्फ़िगरेशन में, कस्टम प्लगिन response-uppercase
जोड़ा गया है.
oauth
प्लगिन डिफ़ॉल्ट रूप से वहां पहले से मौजूद था.
edgemicro:
...
plugins:
sequence:
- oauth
- response-uppercase
अपना Cubernetes क्लस्टर अपडेट करें
आखिरी चरण, कॉन्फ़िगरेशन में किए गए बदलाव को अपने Cubernetes क्लस्टर में लागू करना है. Cubernetes उस प्लग इन कोड के साथ नई इमेज को लोड करेगा जिसे आपने कंटेनर रजिस्ट्री में पुश किया है. साथ ही, उसका इस्तेमाल किसी नए बनाए गए पॉड के लिए किया जाएगा.
अगर आपने एज माइक्रोगेटवे को सेवा के तौर पर डिप्लॉय किया है
अपडेट किए गए Edge माइक्रोगेटवे कॉन्फ़िगरेशन को इंजेक्ट करने के लिए, edgemicroctl
कमांड का इस्तेमाल करें:
नई इमेज के साथ, Edge माइक्रोगेटवे के डिप्लॉयमेंट को अपडेट करें. उदाहरण के लिए:
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 माइक्रो कॉन्फ़िगरेशन फ़ाइल का पाथ.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)
प्लगिन की जांच करें. एपीआई को कॉल करके देखें कि आपको उम्मीद के मुताबिक नतीजे मिल रहे हैं या नहीं. उदाहरण के लिए, "रिस्पॉन्स अपरकेस" प्लगिन के लिए, रिस्पॉन्स टेक्स्ट को सभी अपरकेस में बदल दिया जाता है, जैसा कि यहां दिखाया गया है:
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 माइक्रो कॉन्फ़िगरेशन फ़ाइल का पाथ.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)
प्लगिन की जांच करें. सर्विस एपीआई को कॉल करें और देखें कि क्या आपको उम्मीद के मुताबिक व्यवहार मिलता है. उदाहरण के लिए, "रिस्पॉन्स अपरकेस" प्लगिन के लिए, जवाब वाले टेक्स्ट को सभी अपरकेस में बदल दिया जाता है, जैसा कि यहां दिखाया गया है:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
आउटपुट:
HELLO WORLD
Edge माइक्रोगेटवे के कॉन्फ़िगरेशन में बदलाव करना
कुछ मामलों में, आपको Edge Microgateway कॉन्फ़िगरेशन में बदलाव करने की ज़रूरत पड़ सकती है. उदाहरण के लिए, शायद आप Edge Microgateway में एक नया प्लग इन जोड़ना चाहें या किसी कॉन्फ़िगरेशन पैरामीटर को बदलना चाहें. इस सेक्शन में बताया गया है कि Cubernetes में चलने वाले Edge माइक्रोगेटवे में कॉन्फ़िगरेशन में बदलाव कैसे किए जाते हैं और उन्हें कैसे लागू किया जाता है.
कॉन्फ़िगरेशन फ़ाइल
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
डिप्लॉयमेंट की संख्या को बढ़ाना
इस सेक्शन में बताया गया है कि अपने डिप्लॉयमेंट को बढ़ाने के लिए, Cubernetes स्केलिंग के सिद्धांतों का इस्तेमाल कैसे किया जा सकता है.
सेवा डिप्लॉयमेंट की स्केलिंग
डिप्लॉयमेंट देखें:
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 माइक्रोगेटवे कॉन्फ़िगरेशन के लिए नेमस्पेस का इस्तेमाल करना
अपने Kubernetes क्लस्टर में, Edge माइक्रोगेटवे सेवाओं के एक से ज़्यादा इंस्टेंस को डिप्लॉय और कॉन्फ़िगर किया जा सकता है. इस इस्तेमाल के उदाहरण से, आपको हर माइक्रोगेटवे इंस्टेंस को उसके प्लगिन और पैरामीटर के सेट के साथ कॉन्फ़िगर करने की सुविधा मिलती है. उदाहरण के लिए:
- Edge माइक्रोगेटवे सेवा A के लिए सिर्फ़ स्पाइक अरेस्ट प्लगिन की ज़रूरत होती है.
- Edge माइक्रोगेटवे सेवा B को कोटा और oauth प्लगिन की ज़रूरत होती है, लेकिन अरेस्ट अरेस्ट की ज़रूरत नहीं होती.
इस्तेमाल के इस उदाहरण को ठीक करने के लिए, Cubernetes namespaces का इस्तेमाल करें. उदाहरण के लिए,
Edge Microgateway सेवा A को नेमस्पेस foo
पर और Edge माइक्रोगेटवे सर्विस B को
namespace bar
पर डिप्लॉय किया जा सकता है.
यहां दिए गए उदाहरण में, OrgA
संगठन में कॉन्फ़िगर किए गए Edge माइक्रोगेटवे को -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 माइक्रोगेटवे को -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