Kubernetes इंटिग्रेशन के टास्क

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

कस्टम प्लगिन जोड़ना

कस्टम प्लगिन लिखकर माइक्रोगेटवे में नई सुविधाएं और क्षमताएं जोड़ी जा सकती हैं. कस्टम प्लग इन आपको माइक्रोगेटवे से आने वाले अनुरोधों और रिस्पॉन्स के साथ प्रोग्राम के हिसाब से इंटरैक्ट करने की सुविधा देते हैं.

इस सेक्शन में बताया गया है कि आपके Cubernetes क्लस्टर में चल रहे Edge माइक्रोगेटवे इंस्टेंस में प्लग इन को कैसे पैकेज और डिप्लॉय किया जाता है.

इस सेक्शन के बाकी हिस्से में यह माना गया है कि आपको स्टैंडर्ड Edge माइक्रोगेटवे सेटअप के लिए प्लगिन लिखने और कॉन्फ़िगर करने के बारे में पता है. यदि नहीं, तो कस्टम प्लग इन डेवलप करें देखें.

अपने प्लग इन को पैकेज करें

कस्टम प्लगिन को पैकेज करने के लिए, इन चरणों का पालन करें:

  1. एक आसान प्लगिन लिखें में दिए गए निर्देशों के अनुसार, अपना प्लग इन लिखें और उसकी जांच करें.

  2. अपने प्लगिन कोड को सही डायरेक्ट्री में रखें. प्लग इन डायरेक्ट्री को तय स्ट्रक्चर का पालन करना होगा. इस उदाहरण में वह स्ट्रक्चर दिखाया गया है जिसका आपको पालन करना होगा, जहां response-uppercase और request-headers कस्टम प्लगिन कोड वाले फ़ोल्डर के नाम हैं (ये नाम सिर्फ़ उदाहरण हैं, आपके फ़ोल्डर के नाम अलग-अलग हो सकते हैं):

    plugin
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  3. plugin फ़ोल्डर में cd.

  4. plugin फ़ोल्डर में, पूरे plugins फ़ोल्डर को ज़िप करें:

    zip -r plugins.zip plugins/

Docker इमेज बनाना

  1. जिस डायरेक्ट्री में zip फ़ाइल मौजूद है उसी डायरेक्ट्री में, Dockerfile नाम की एक नई फ़ाइल बनाएं.
  2. 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"]
    
  3. अपने प्लग इन की मदद से एक नई 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 माइक्रोगेटवे कॉन्फ़िगरेशन को अपडेट करें

  1. अपनी 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 कमांड का इस्तेमाल करें:

  1. नई इमेज के साथ, 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)
  2. प्लगिन की जांच करें. एपीआई को कॉल करके देखें कि आपको उम्मीद के मुताबिक नतीजे मिल रहे हैं या नहीं. उदाहरण के लिए, "रिस्पॉन्स अपरकेस" प्लगिन के लिए, रिस्पॉन्स टेक्स्ट को सभी अपरकेस में बदल दिया जाता है, जैसा कि यहां दिखाया गया है:

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    आउटपुट:

    HELLO WORLD
    
मैन्युअल तरीके से नया कॉन्फ़िगरेशन इंजेक्ट करना

मैन्युअल तरीके से डालना एक आसान तरीका है, जहां कमांड लाइन से नया कॉन्फ़िगरेशन इंजेक्ट किया जाता है.

  1. नीचे दिए गए निर्देश का इस्तेमाल करें:

    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)
  2. प्लगिन की जांच करें. सर्विस एपीआई को कॉल करें और देखें कि क्या आपको उम्मीद के मुताबिक व्यवहार मिलता है. उदाहरण के लिए, "रिस्पॉन्स अपरकेस" प्लगिन के लिए, जवाब वाले टेक्स्ट को सभी अपरकेस में बदल दिया जाता है, जैसा कि यहां दिखाया गया है:

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    आउटपुट:

    HELLO WORLD
    

Edge माइक्रोगेटवे के कॉन्फ़िगरेशन में बदलाव करना

कुछ मामलों में, आपको Edge Microgateway कॉन्फ़िगरेशन में बदलाव करने की ज़रूरत पड़ सकती है. उदाहरण के लिए, शायद आप Edge Microgateway में एक नया प्लग इन जोड़ना चाहें या किसी कॉन्फ़िगरेशन पैरामीटर को बदलना चाहें. इस सेक्शन में बताया गया है कि Cubernetes में चलने वाले Edge माइक्रोगेटवे में कॉन्फ़िगरेशन में बदलाव कैसे किए जाते हैं और उन्हें कैसे लागू किया जाता है.

  1. कॉन्फ़िगरेशन फ़ाइल 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
    
  2. 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'
    
  3. अपने संगठन और एनवायरमेंट के लिए, Edge Microgateway कॉन्फ़िगरेशन फ़ाइल में बदलाव करें:

    $HOME/.edgemicro/your_org-your_env-config.yaml
  4. कॉन्फ़िगरेशन फ़ाइल के कॉन्टेंट के मुकाबले Base64, दोगुने कॉन्टेंट को कोड में बदलना:

    cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64  | tr -d '\n'
  5. उस नेमस्पेस पर kubernetes में बदलाव लागू करें जहां आपकी सेवा चल रही है.

    kubectl apply -f secret.yaml -n 

ये नए बदलाव, मौजूदा माइक्रोगेटवे पॉड में अपने-आप नहीं दिखेंगे. हालांकि, नए पॉड में ये बदलाव अपने-आप लागू होंगे. मौजूदा पॉड को मिटाया जा सकता है, ताकि डिप्लॉयमेंट, बदलाव को चुनने वाला नया पॉड बनाए.

सेवा का उदाहरण

इस उदाहरण में दिखाया गया है कि सेवा डिप्लॉयमेंट को नए

  1. पॉड पाएं.

    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
    
  2. edge-microgateway पॉड को मिटाएं.

    kubectl delete pod edge-microgateway-57ccc7776b-g7nrg

    आउटपुट का उदाहरण:

    pod "edge-microgateway-57ccc7776b-g7nrg" deleted
    
  3. फिर से पॉड पाएं. एक नया पॉड स्पिन अप होता है और उसे आपके कॉन्फ़िगरेशन में बदलाव मिलते हैं.

    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 स्केलिंग के सिद्धांतों का इस्तेमाल कैसे किया जा सकता है.

सेवा डिप्लॉयमेंट की स्केलिंग

  1. डिप्लॉयमेंट देखें:

    kubectl get deployments

    आउटपुट का उदाहरण:

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   1         1         1            1           18h
    helloworld          1         1         1            1           1d
    

    आउटपुट से पता चलता है कि एक रेप्लिका डिप्लॉय किया गया है.

  2. डिप्लॉयमेंट को 1 से लेकर जितनी चाहें उतनी कॉपी तक बढ़ाएं. इस उदाहरण में, edge-microgateway सेवा को स्केल किया गया है.

    kubectl scale deployment edge-microgateway --replicas=2
  3. (ज़रूरी नहीं) अगर आपको ऑटो स्केलिंग की सुविधा का इस्तेमाल करना है, तो इस निर्देश का इस्तेमाल करें:

    kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
  4. स्केलिंग के चालू होने की पुष्टि करने के लिए डिप्लॉयमेंट देखें:

    kubectl get deployments

    आउटपुट का उदाहरण:

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   2         2         2            2           18h
    helloworld          1         1         1            1           1d
    

    दो प्रतिरूपों को शामिल करने के लिए स्टेट को बदल दिया गया है.

  5. पॉड की जांच करें:

    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