Kubernetes ইন্টিগ্রেশন কাজ

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

একটি কাস্টম প্লাগইন যোগ করা

কাস্টম প্লাগইন লিখে আপনি মাইক্রোগেটওয়েতে নতুন বৈশিষ্ট্য ও সক্ষমতা যোগ করতে পারেন। কাস্টম প্লাগইন আপনাকে মাইক্রোগেটওয়ের মধ্য দিয়ে প্রবাহিত অনুরোধ এবং প্রতিক্রিয়াগুলির সাথে প্রোগ্রাম্যাটিকভাবে যোগাযোগ করার সুযোগ দেয়।

এই অংশে আপনার কুবারনেটিস ক্লাস্টারে চলমান একটি এজ মাইক্রোগেটওয়ে ইনস্ট্যান্সে প্লাগইনগুলি কীভাবে প্যাকেজ এবং ডেপ্লয় করতে হয়, তা ব্যাখ্যা করা হয়েছে।

এই বিভাগের বাকি অংশে ধরে নেওয়া হচ্ছে যে আপনি একটি স্ট্যান্ডার্ড এজ মাইক্রোগেটওয়ে সেটআপের জন্য প্লাগইন লেখা এবং কনফিগার করার বিষয়ে পরিচিত। যদি তা না হয়, তবে কাস্টম প্লাগইন তৈরি করুন (Develop custom plugins) অংশটি দেখুন।

আপনার প্লাগইন(গুলি) প্যাকেজ করুন

কাস্টম প্লাগইন প্যাকেজ করতে, এই ধাপগুলো অনুসরণ করুন:

  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/

একটি ডকার ইমেজ তৈরি করুন

  1. যে ডিরেক্টরিতে জিপ ফাইলটি রয়েছে, সেই একই ডিরেক্টরিতে 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.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 ক্লাস্টার আপডেট করুন

চূড়ান্ত ধাপ হলো আপনার কুবারনেটিস ক্লাস্টারে কনফিগারেশন পরিবর্তনটি প্রয়োগ করা। কুবারনেটিস কন্টেইনার রেজিস্ট্রি-তে আপনার পুশ করা প্লাগইন কোডসহ নতুন ইমেজটি পুল করবে এবং যেকোনো নতুন তৈরি হওয়া পডের জন্য এটি ব্যবহার করবে।

আপনি যদি 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 - edgemicro configure কমান্ডে আপনি যে Apigee অর্গানাইজেশনটি নির্দিষ্ট করেছেন।
    • your_environment - edgemicro configure কমান্ডে আপনি যে পরিবেশটি নির্দিষ্ট করেছেন।
    • configuration_key - edgemicro configure কমান্ড থেকে প্রাপ্ত কী।
    • configuration_secret - edgemicro configure কমান্ড থেকে প্রাপ্ত গোপনীয় তথ্য।
    • config_file_path - edgemicro configure কমান্ড থেকে প্রাপ্ত Edge Micro কনফিগারেশন ফাইলের পাথ।
    • container-registry - ডকার রেজিস্ট্রি যেখানে আপনি ইমেজটি পুশ করেছেন। উদাহরণস্বরূপ, gcr.io বা docker.io
    • your_project_name - ডকার রিপোজিটরির প্রজেক্টের নাম, যেখানে আপনি ডকার ইমেজটি পুশ করেছেন।
    • image_name - আপনার পুশ করা ডকার ইমেজটির নাম।

    উদাহরণ:

    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. প্লাগইনটি পরীক্ষা করুন। প্রত্যাশিত ফলাফল পাচ্ছেন কিনা তা দেখতে এপিআই (API) কল করুন। উদাহরণস্বরূপ, '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 - edgemicro configure কমান্ডে আপনি যে Apigee অর্গানাইজেশনটি নির্দিষ্ট করেছেন।
    • your_env - edgemicro configure কমান্ডে আপনি যে এনভায়রনমেন্টটি নির্দিষ্ট করেছেন।
    • your_key - edgemicro configure কমান্ড থেকে প্রাপ্ত কী।
    • your_secret - edgemicro configure কমান্ড থেকে প্রাপ্ত গোপনীয় তথ্য।
    • config_file_path - edgemicro configure কমান্ড থেকে প্রাপ্ত Edge Micro কনফিগারেশন ফাইলের পাথ।
    • container-registry - ডকার রেজিস্ট্রি যেখানে আপনি ইমেজটি পুশ করেছেন। উদাহরণস্বরূপ, gcr.io বা docker.io
    • your_project_name - ডকার রিপোজিটরির প্রজেক্টের নাম, যেখানে আপনি ডকার ইমেজটি পুশ করেছেন।
    • image_name - আপনার পুশ করা ডকার ইমেজটির নাম।
    • 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. প্লাগইনটি পরীক্ষা করুন। প্রত্যাশিত ফলাফল পাচ্ছেন কিনা তা দেখতে সার্ভিস এপিআই (Service API) কল করুন। উদাহরণস্বরূপ, 'response uppercase' প্লাগইনের ক্ষেত্রে, রেসপন্স টেক্সটটি সম্পূর্ণ আপারকেসে (uppercase) রূপান্তরিত হয়, যেমনটি নিচে দেখানো হয়েছে:

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

    আউটপুট:

    HELLO WORLD
    

এজ মাইক্রোগেটওয়ে কনফিগারেশন পরিবর্তন করা

কিছু ক্ষেত্রে, আপনার 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
    

আপনার ডেপ্লয়মেন্টের পরিধি বাড়ানো

এই অংশে ব্যাখ্যা করা হয়েছে কীভাবে আপনি কুবারনেটিস স্কেলিং নীতি ব্যবহার করে আপনার ডেপ্লয়মেন্টগুলোকে স্কেল করতে পারেন।

একটি পরিষেবা স্থাপন স্কেল করা

  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. ডেপ্লয়মেন্টটিকে ১ থেকে আপনার ইচ্ছামত যতগুলো খুশি রেপ্লিকায় স্কেল করুন। এই উদাহরণে, 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 Service A-এর জন্য শুধুমাত্র স্পাইক অ্যারেস্ট প্লাগইনটি প্রয়োজন।
  • Edge Microgateway Service B-এর জন্য কোটা এবং ওঅথ প্লাগইন প্রয়োজন, কিন্তু স্পাইক অ্যারেস্ট নয়।

এই ব্যবহারের ক্ষেত্রটি সমাধান করতে, 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