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/

Docker ইমেজ তৈরি করা

  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 ছবি তৈরি করুন এবং আপনার 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 - edgemicro configure কমান্ডে আপনার উল্লেখ করা Apigee সংস্থা।
    • 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)
  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 - আপনি যে 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. প্লাগ-ইন পরীক্ষা করুন। আপনি প্রত্যাশিত আচরণ পাচ্ছেন কিনা তা দেখতে পরিষেবা API-তে কল করুন। যেমন, "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. ১ থেকে শুরু করে যতগুলি রেপ্লিকা চান ততগুলি পর্যন্ত ডেপ্লয়মেন্ট স্কেল করুন। এই উদাহরণে, 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 নেমস্পেস ব্যবহার করুন। যেমন, আপনি নেমস্পেস foo-এ Edge Microgateway পরিষেবা A এবং নেমস্পেস bar-এ Edge Microgateway পরিষেবা 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

একইভাবে, নিম্নলিখিত উদাহরণে, -n বিকল্প ব্যবহার করে, OrgB সংস্থায় কনফিগার করা Edge Microgateway 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