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

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

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

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

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

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

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

कस्टम प्लगिन को पैकेज करने के लिए, यह तरीका अपनाएं:

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

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

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

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

    zip -r plugins.zip plugins/

डॉकर इमेज बनाना

  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 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 का कॉन्फ़िगरेशन अपडेट करना

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

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

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

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

    आउटपुट:

    HELLO WORLD
    

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

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

  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
    

अपने डिप्लॉयमेंट को स्केल करना

इस सेक्शन में बताया गया है कि डिप्लॉयमेंट को स्केल करने के लिए, Kubernetes के स्केलिंग सिद्धांतों का इस्तेमाल कैसे किया जा सकता है.

सेवा डिप्लॉयमेंट को स्केल करना

  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 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