এজেন্টস্পেস কাস্টম ডোমেন

১. ভূমিকা

এই ডকুমেন্টটি AgentSpace অ্যাক্সেস করার জন্য একটি কাস্টম ডোমেইন কনফিগার করার একটি রেফারেন্স আর্কিটেকচার প্রদান করে। AgentSpace অ্যাপ তৈরির সময় নির্ধারিত Google-পরিচালিত URL-এর পরিবর্তে, ব্যবহারকারীরা একটি কাস্টম ডোমেইন ব্যবহার করতে পারেন। এই কোডল্যাবটি nip.io ডোমেইন ব্যবহার করে AgentSpace ক্যালেন্ডার এবং ড্রাইভ অ্যাপ্লিকেশন অ্যাক্সেস করার পদ্ধতি প্রদর্শন করে। nip.io একটি বিনামূল্যের, ওপেন-সোর্স পরিষেবা যা যেকোনো IP অ্যাড্রেসের জন্য ওয়াইল্ডকার্ড DNS প্রদান করে। মূলত, এটি আপনাকে নিজের DNS সার্ভার সেট আপ করা বা আপনার /etc/hosts ফাইল পরিবর্তন করার প্রয়োজন ছাড়াই একটি নির্দিষ্ট IP অ্যাড্রেসে রিজলভ হয় এমন একটি হোস্টনেম তৈরি করার সুযোগ দেয়।

আপনার নিজস্ব ডোমেইন ব্যবহার করার পরামর্শ দেওয়া হচ্ছে, তবে প্রদর্শনের উদ্দেশ্যে এই টিউটোরিয়ালে nip.io ব্যবহার করা হয়েছে।

নীচে বর্ণিত ডেপ্লয়মেন্ট সিনারিওতে (চিত্র ১) এজেন্টস্পেস একটি ডেটাস্টোর প্রকাশ করেছে, যেটিতে একটি ক্যালেন্ডার অ্যাপ্লিকেশন রয়েছে এবং যা একটি পাবলিক গুগল-পরিচালিত ইউআরএল-এর মাধ্যমে অ্যাক্সেস করা যায়।

চিত্র ১

27591afa06891dcb.png

ডেটাস্টোর এবং পরবর্তী অ্যাপ্লিকেশনগুলির ক্রমাগত বৃদ্ধির ফলে পাবলিক গুগল-পরিচালিত ইউআরএলগুলির আরও ব্যবস্থাপনার প্রয়োজন হয়, যেমনটি নীচের ডেপ্লয়মেন্ট সিনারিওতে (চিত্র ২) দেখানো হয়েছে, যার ফলস্বরূপ এজেন্টস্পেস অ্যাপ্লিকেশন এবং ইউআরএল-এর মধ্যে একটি ১:১ ম্যাপিং তৈরি হয়।

চিত্র ২।

7e31bfae7ac56b22.png

একটি কাস্টম ডোমেইন বিভিন্ন AgentSpace অ্যাপ্লিকেশনকে একটি একক, ব্যবহারকারী-নির্দিষ্ট কাস্টমার ডোমেইনের সাথে ম্যাপ করার সুযোগ দেয়। এই ফিচারটি প্রতিটি Agentspace অ্যাপ্লিকেশনের সাথে একটি নির্দিষ্ট URL পাথ যুক্ত করার সুযোগ দেয়, যা নিচের ডেপ্লয়মেন্ট সিনারিওতে (চিত্র ৩) দেখানো অনুযায়ী আরও বেশি নমনীয়তা প্রদান করে। উদাহরণস্বরূপ, একটি কাস্টমার-পরিচালিত ডোমেইন agentspace.cosmopup.com-কে পাথ রুলে বিভক্ত করা হয়, যার প্রতিটি একটি নির্দিষ্ট Agentspace অ্যাপ্লিকেশনের সাথে ম্যাপ করা থাকে, যেমন:

  • agentspace.cosmopup.com/drive-app যা ওয়ার্কস্পেস ড্রাইভের জন্য এজেন্টস্পেস অ্যাপ্লিকেশনের সাথে ম্যাপ করা আছে।
  • agentspace.cosmopup.com/calendar-app যা ওয়ার্কস্পেস ক্যালেন্ডারের জন্য এজেন্টস্পেস অ্যাপ্লিকেশনের সাথে ম্যাপ করা আছে।

ইউআরএল ম্যাপের মাধ্যমে কনফিগার করা এক্সটার্নাল অ্যাপ্লিকেশন লোড ব্যালান্সারের হোস্ট এবং পাথ রুলগুলো, কাস্টম ডোমেইনকে গুগল-পরিচালিত ইউআরএল-এর সাথে ম্যাপ করার লজিককে নিয়ন্ত্রণ করে। এটি agentspace.cosmopup.com/drive-app উদাহরণটি ব্যবহার করে নিম্নলিখিত কাজটি সম্পাদন করে।

  • কাস্টম ডোমেইন হোস্ট পাথ agentspace.cosmopup.com/drive-app লোডব্যালেন্সার দ্বারা গৃহীত হয়েছে।
  • ইউআরএল ম্যাপটি অ্যাডভান্সড হোস্ট এবং পাথ রুল ম্যাচিংয়ের জন্য কনফিগার করা হয়েছে।
  • হোস্ট agentspace.cosmopup.com পাথ ম্যাচিং এবং রিরাইটের জন্য যোগ্য।
  • কাস্টম ডোমেইন হোস্ট পাথ agentspace.cosmopup.com/drive-app, UrlRewrite-এর অধীন।
  • PathPrefixRewrite হলো Agentspace পাথ: /us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd
  • hostRewrite হলো Agentspace হোস্ট: vertexaisearch.cloud.google.com
  • ব্যাকএন্ড সার্ভিসে রাউটিং করার আগে রিরাইট অপারেশনটি সম্পন্ন করা হয়।
  • ব্যাকএন্ড পরিষেবা Agentspace URL-এর উপর ভিত্তি করে drive-app অ্যাপ্লিকেশনে ট্র্যাফিক রাউট করে।

চিত্র ৩

f8d84ec5fef9af5a.png

আপনি যা শিখবেন

  • একটি গ্লোবাল এক্সটার্নাল অ্যাপ্লিকেশন লোড ব্যালেন্সার তৈরি করুন
  • একটি এজেন্টস্পেস অ্যাপ্লিকেশনে কাস্টম ডোমেইন এবং রিরাইট অপারেশন ব্যবহার করে একটি ব্যাকএন্ড সার্ভিস রিরাইট তৈরি করুন।
  • কাস্টম ডোমেইন তৈরি করতে nip.io এবং Cloud DNS কীভাবে ইন্টিগ্রেট করবেন
  • এজেন্টস্পেস কাস্টম ডোমেইনে অ্যাক্সেস কীভাবে যাচাই করবেন

তোমার যা লাগবে

  • মালিকের অনুমতি সহ গুগল ক্লাউড প্রজেক্ট
  • বিদ্যমান এজেন্টস্পেস অ্যাপ্লিকেশন ইউআরএল(গুলি)
  • স্ব-মালিকানাধীন কাস্টম ডোমেইন (ঐচ্ছিক)
  • সার্টিফিকেট - সেলফ সাইনড অথবা গুগল ম্যানেজড

২. আপনি যা তৈরি করবেন

আপনি হোস্ট এবং পাথ রিরাইট ব্যবহার করে এজেন্টস্পেস অ্যাপ্লিকেশনগুলির জন্য কাস্টম ডোমেইন পাথ ম্যাচ সক্ষম করতে উন্নত ট্র্যাফিক ম্যানেজমেন্ট ক্ষমতা সহ একটি গ্লোবাল এক্সটার্নাল অ্যাপ্লিকেশন লোড ব্যালেন্সার স্থাপন করবেন। একবার স্থাপন করা হলে, এজেন্টস্পেস অ্যাপ্লিকেশনে অ্যাক্সেস যাচাই করার জন্য আপনি নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করবেন:

  • একটি ওয়েব ব্রাউজার খুলে আপনার কাস্টম ডোমেইন এবং নির্দিষ্ট পাথে গিয়ে আপনার এজেন্টস্পেস অ্যাপ্লিকেশনটি অ্যাক্সেস করুন।

c62938d91e00ffa7.png

৩. নেটওয়ার্কের প্রয়োজনীয়তা

নিম্নে নেটওয়ার্কের প্রয়োজনীয়তার বিবরণ দেওয়া হলো:

উপাদান

বর্ণনা

ভিপিসি (এজেন্টস্পেস-ভিপিসি)

কাস্টম মোড ভিপিসি

ইন্টারনেট নেতিবাচক

লোড ব্যালান্সারের জন্য একটি এক্সটার্নাল ব্যাকএন্ড নির্ধারণ করতে ব্যবহৃত একটি রিসোর্স, যা এজেন্টস্পেস গুগল-ম্যানেজড এফকিউডিএন (vertexaisearch.cloud.google.com) নির্দেশক এফকিউডিএন হিসেবে কনফিগার করা থাকে। ইন্টারনেট এফকিউডিএন রেজোলিউশনের জন্য ভিপিসি-র মধ্যে ডিএনএস লুকআপ সম্পাদন করে।

ব্যাকএন্ড পরিষেবা

একটি ব্যাকএন্ড সার্ভিস আপনার লোড ব্যালেন্সার এবং ব্যাকএন্ড রিসোর্সগুলোর মধ্যে একটি সেতু হিসেবে কাজ করে। এই টিউটোরিয়ালে, ব্যাকএন্ড সার্ভিসটি ইন্টারনেট NEG-এর সাথে যুক্ত করা হয়েছে।

সার্টিফিকেট

গুগল ক্লাউডে একটি অ্যাপ্লিকেশন লোড ব্যালেন্সারের জন্য সার্টিফিকেট কনফিগার করতে, আপনাকে সার্টিফিকেট ম্যানেজার পরিষেবা এবং গুগল-পরিচালিত অথবা স্ব-পরিচালিত SSL সার্টিফিকেট ব্যবহার করতে হবে।

ক্লাউড ডিএনএস

এক্সটার্নাল অ্যাপ্লিকেশন লোড ব্যালান্সারের এক্সটার্নাল আইপি-কে nip.io (agentspace.externalip.nip.io)-তে রিজলভ করার জন্য ক্লাউড ডিএনএস পাবলিক জোন ব্যবহার করা হয়। বিকল্পভাবে, আপনার কাস্টম ডোমেইন এবং লোড ব্যালান্সারের আইপি অ্যাড্রেস সম্বলিত একটি এ রেকর্ড ব্যবহার করুন।

৪. কোডল্যাব টপোলজি

c62938d91e00ffa7.png

f712980116d973a3.png

৫. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিতে পরিবেশ সেটআপ

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রজেক্ট আইডি উল্লেখ করতে হবে (যা সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি আপনার নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে।
  • আপনার অবগতির জন্য জানাচ্ছি যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নম্বর , এবং কিছু এপিআই এটি ব্যবহার করে থাকে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
  1. এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হবে না, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর বিলিং এড়াতে রিসোর্সগুলো বন্ধ করার জন্য, আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা প্রজেক্টটি ডিলিট করে দিতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।

গুগল ক্লাউড কনসোল থেকে, উপরের ডানদিকের টুলবারে থাকা ক্লাউড শেল আইকনটিতে ক্লিক করুন:

55efc1aaa7a4d3ad.png

পরিবেশটি প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে। এটি শেষ হলে, আপনি এইরকম কিছু দেখতে পাবেন:

7ffe5cbb04455448.png

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

৬. শুরু করার আগে

এপিআই সক্ষম করুন

ক্লাউড শেলের ভিতরে, নিশ্চিত করুন যে আপনার প্রজেক্ট আইডি সেট আপ করা আছে:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
echo $project
echo $region

সকল প্রয়োজনীয় পরিষেবা সক্রিয় করুন:

gcloud services enable compute.googleapis.com
gcloud services enable dns.googleapis.com

৭. ভিপিসি নেটওয়ার্ক তৈরি করুন

ভিপিসি নেটওয়ার্ক

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

gcloud compute networks create agentspace-vpc --subnet-mode custom

৮. লোড ব্যালান্সারের উপাদানগুলো স্থাপন করুন

লোড ব্যালেন্সারের এক্সটার্নাল আইপি অ্যাড্রেসটি রিজার্ভ করুন।

ক্লাউড শেলের ভিতরে, লোড ব্যালান্সারের জন্য একটি এক্সটার্নাল আইপি অ্যাড্রেস রিজার্ভ করুন:

gcloud compute addresses create external-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

ক্লাউড শেলের ভিতরে, সংরক্ষিত আইপি অ্যাড্রেসটি দেখুন:

gcloud compute addresses describe external-ip \
  --global | grep -i address:

উদাহরণ আউটপুট:

user@cloudshell$ gcloud compute addresses describe external-ip \
  --global | grep -i address:
address: 34.54.158.206

ইন্টারনেট সেট আপ করুন NEG

একটি ইন্টারনেট এনইজি (NEG) তৈরি করুন, এবং –network-endpoint-type-কে internet-fqdn-port (যে হোস্টনেম ও পোর্টের মাধ্যমে আপনার এক্সটার্নাল ব্যাকএন্ডে পৌঁছানো যায়) হিসেবে সেট করুন। এজেন্টস্পেস (Agentspace) রিজলভ করার জন্য FQDN vertexaisearch.cloud.google.com এবং পোর্ট 443 ব্যবহৃত হয়।

gcloud compute network-endpoint-groups create agentspace-ineg \
    --network-endpoint-type="internet-fqdn-port" \
    --global
gcloud compute network-endpoint-groups update agentspace-ineg \
    --add-endpoint="fqdn=vertexaisearch.cloud.google.com,port=443" \
    --global

লোড ব্যালেন্সার তৈরি করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

gcloud compute backend-services create agentspace-ineg-bes \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTPS \
      --global
gcloud compute backend-services add-backend agentspace-ineg-bes \
      --network-endpoint-group=agentspace-ineg \
      --global-network-endpoint-group \
      --global  

সার্টিফিকেট তৈরি করুন

এই পর্যায়ে, আপনি ইন্টারনেট নেগেটিভ এবং ব্যাকএন্ড সার্ভিস তৈরি করেছেন। পরবর্তী অংশে, আপনাকে HTTPs টার্গেট প্রক্সিতে ব্যবহারের জন্য একটি সার্টিফিকেট রিসোর্স তৈরি করতে হবে। আপনি গুগল-পরিচালিত SSL সার্টিফিকেট অথবা সেলফ-ম্যানেজড SSL সার্টিফিকেট ব্যবহার করে একটি SSL সার্টিফিকেট রিসোর্স তৈরি করতে পারেন। আমরা গুগল-পরিচালিত সার্টিফিকেট ব্যবহারের পরামর্শ দিই, কারণ গুগল ক্লাউড এই সার্টিফিকেটগুলো স্বয়ংক্রিয়ভাবে সংগ্রহ, পরিচালনা এবং নবায়ন করে থাকে।

এই টিউটোরিয়ালে ব্যবহৃত গ্লোবাল এক্সটার্নাল অ্যাপ্লিকেশন লোড ব্যালান্সারের জন্য সমর্থিত সার্টিফিকেটগুলো সম্পর্কে আরও জানতে নিম্নলিখিত বিষয়গুলো দেখুন:

এসএসএল সার্টিফিকেটের সংক্ষিপ্ত বিবরণ | লোড ব্যালান্সিং | গুগল ক্লাউড

পরবর্তী অংশে, আপনি একটি সেলফ-সাইন্ড সার্টিফিকেট তৈরি করবেন (যদিও এর পরিবর্তে একটি গুগল ম্যানেজড সার্টিফিকেটও ব্যবহার করা যেতে পারে)। এই সার্টিফিকেটের জন্য কমন নেম-কে ফুললি কোয়ালিফাইড ডোমেইন নেম (যেমন agentspace.YOUR-EXTERNAL-IP.nip.io)- এর সাথে ম্যাপ করতে হবে, যা পূর্বে জেনারেট করা লোড ব্যালান্সারের এক্সটার্নাল আইপি অ্যাড্রেসের সাথে সঙ্গতিপূর্ণ হবে। উদাহরণ নিচে দেওয়া হলো:

সাধারণ নাম: agentspace.34.54.158.206.nip.io

ক্লাউড শেলের ভিতরে, প্রাইভেট কী তৈরি করুন।

openssl genrsa -out private-key-file.pem 2048

ক্লাউড শেলের ভিতরে একটি config.txt ফাইল তৈরি করুন যা pem ফাইল তৈরি করতে ব্যবহৃত হবে। DNS 1 এন্ট্রিতে সম্পূর্ণ ডোমেইন নামটি উল্লেখ করুন, যেমন agentspace.YOUR-EXTERNAL-IP.nip.io (উদাহরণস্বরূপ, নিচের কনফিগে agentspace.34.54.158.206.nip.io)।

cat <<'EOF' >config.txt
[req]
default_bits              = 2048
req_extensions            = extension_requirements
distinguished_name        = dn_requirements

[extension_requirements]
basicConstraints          = CA:FALSE
keyUsage                  = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName            = @sans_list

[dn_requirements]
countryName               = Country Name (2 letter code)
stateOrProvinceName       = State or Province Name (full name)
localityName              = Locality Name (eg, city)
organizationName          = Organization Name (eg, company)
organizationalUnitName    = Organizational Unit Name (eg, section)
commonName                = Common Name (e.g. server FQDN or YOUR name)
emailAddress              = Email Address

[sans_list]
DNS.1                     = agentspace.YOUR-EXTERNAL-IP.nip.io

EOF

ক্লাউড শেলের ভিতরে, config.txt এবং private-key-file.pem ফাইল দুটি তৈরি হয়েছে কিনা তা যাচাই করুন।

user@cloudshell:$ ls
config.txt  private-key-file.pem

ক্লাউড শেলের ভিতরে নিম্নলিখিতগুলি সম্পাদন করুন।

sudo openssl req -new -key private-key-file.pem \
    -out csr.pem \
    -config config.txt

উদাহরণ:

user@cloudshell:$ sudo openssl req -new -key private-key-file.pem \
    -out csr.pem \
    -config config.txt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) []:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name)[]:agentspace.34.54.158.206.nip.io
Email Address []:

ক্লাউড শেলের ভিতরে, সার্টিফিকেট সাইনিং রিকোয়ার্ড pem ফাইলটি তৈরি হয়েছে কিনা তা যাচাই করুন।

user@cloudshell:$ ls
config.txt  csr.pem  private-key-file.pem

ক্লাউড শেলের ভিতরে সার্টিফিকেটটি তৈরি করুন।

sudo openssl x509 -req \
    -signkey private-key-file.pem \
    -in csr.pem \
    -out cert.cert \
    -extfile config.txt \
    -extensions extension_requirements \
    -days 365

উদাহরণ আউটপুট:

user@cloudshell:$ sudo openssl x509 -req \
    -signkey private-key-file.pem \
    -in csr.pem \
    -out cert.cert \
    -extfile config.txt \
    -extensions extension_requirements \
    -days 365
Certificate request self-signature ok
subject=CN = agentspace.34.54.158.206.nip.io

ক্লাউড শেলের ভিতরে, cert.cert ফাইলটির তৈরি হওয়া যাচাই করুন।

user@cloudshell:$ ls
cert.cert  config.txt  csr.pem  private-key-file.pem

আপনার এক্সটার্নাল লোড ব্যালান্সারের সাথে যুক্ত করার জন্য একটি সার্টিফিকেট রিসোর্স তৈরি করুন। সার্টিফিকেট এবং প্রাইভেট-কী প্যারামিটারগুলো আপনার নির্দিষ্ট ফাইলের নাম দিয়ে প্রতিস্থাপন করুন।

ক্লাউড শেলে, নিম্নলিখিতগুলি সম্পাদন করুন:

gcloud compute ssl-certificates create agentspace-self-signed-cert \
    --certificate=cert.cert \
    --private-key=private-key-file.pem \
    --global

ক্লাউড শেলে, নিম্নলিখিতগুলি সম্পাদন করুন:

gcloud compute url-maps create agentspace-lb \
      --default-service=agentspace-ineg-bes \
      --global  

ক্লাউড শেলে, নিম্নলিখিতগুলি সম্পাদন করুন:

gcloud compute target-https-proxies create https-proxy \
      --ssl-certificates=agentspace-self-signed-cert \
      --url-map=agentspace-lb \
      --global 

ক্লাউড শেলে, নিম্নলিখিতগুলি সম্পাদন করুন:

gcloud compute forwarding-rules create agentspace-fr \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=PREMIUM \
      --address=external-ip \
      --target-https-proxy=https-proxy \
      --global \
      --ports=443

৯. পাবলিক ডিএনএস জোন তৈরি করুন

পরবর্তী অংশে, আপনি একটি পাবলিক ডিএনএস জোন তৈরি করবেন যা nip.io এক্সটার্নাল লোড ব্যালান্সারের আইপি অ্যাড্রেস রিজলভ করার জন্য ব্যবহার করবে।

ক্লাউড শেলে, আপনার এক্সটার্নাল লোড ব্যালেন্সারের আইপি অ্যাড্রেসের জন্য ভ্যারিয়েবল তৈরি করতে নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করুন:

externalip=<YOUR-EXTERNAL-IP>
echo $externalip

ক্লাউড শেলে, নিম্নলিখিতগুলি সম্পাদন করুন:

gcloud dns --project=$project managed-zones create agentspace-dns --description="Agentspace public dns" --dns-name="$externalip.nip.io." --visibility="public"

ক্লাউড শেলে, নিম্নলিখিতগুলি সম্পাদন করুন:

gcloud dns --project=$project record-sets create agentspace.$externalip.nip.io. --zone="agentspace-dns" --type="A" --ttl="300" --rrdatas="$externalip"

১০. OAuth ক্রেডেনশিয়াল

পরবর্তী অংশে, আপনি ওয়েব অ্যাপ্লিকেশনের জন্য একটি Oauth ক্রেডেনশিয়াল তৈরি করবেন যা প্রমাণীকরণের জন্য Google-পরিচালিত URL-কে oauth-redirect-এ রিডাইরেক্ট করবে। তৈরি করা ক্রেডেনশিয়ালগুলো এই টিউটোরিয়ালের জন্য প্রয়োজনীয় নয়।

Oauth সম্পর্কে আরও জানতে, নিম্নলিখিত বিষয়গুলো দেখুন:

গুগল ক্যালেন্ডার এবং জিমেইল অ্যাকশন যোগ করুন | গুগল এজেন্টস্পেস

একটি OAuth অ্যাপ তৈরি করুন এবং স্কোপ যোগ করুন

  1. API ও পরিষেবা > OAuth সম্মতি স্ক্রিনে যান: OAuth সম্মতি স্ক্রিনে যান
  2. ইন্টারনাল নির্বাচন করুন এবং তারপর ক্রিয়েট-এ ক্লিক করুন।
  3. আপনার OAuth অ্যাপের জন্য একটি নাম লিখুন।
  4. ব্যবহারকারী সহায়তার জন্য একটি ইমেল দিন।
  5. ডেভেলপারের যোগাযোগের তথ্য প্রবেশ করান।
  6. সংরক্ষণ করুন এবং চালিয়ে যান।

একটি OAuth ক্লায়েন্ট আইডি তৈরি করুন

এই পদ্ধতিতে গুগল ক্লাউড অ্যাকশনের জন্য একটি নতুন OAuth ক্লায়েন্ট আইডি তৈরি করার উপায় বর্ণনা করা হয়েছে। এই OAuth ক্লায়েন্ট আইডি এবং সিক্রেট অন্যান্য গুগল ক্লাউড অ্যাকশনের জন্যও ব্যবহার করা যেতে পারে। যদি গুগল ক্লাউড অ্যাকশনের জন্য আপনার আগে থেকেই কোনো গুগল ক্লাউড OAuth ক্লায়েন্ট আইডি থাকে, তবে নতুন ক্লায়েন্ট আইডি তৈরি করার পরিবর্তে আপনি সেই ক্লায়েন্ট আইডি এবং সিক্রেটটি গুগল ক্যালেন্ডার অ্যাকশনের জন্যও ব্যবহার করতে পারেন।

  1. ক্রেডেনশিয়ালস পেজে যান এবং ক্রিয়েট ক্রেডেনশিয়ালস > ওঅথ ক্লায়েন্ট আইডি-তে ক্লিক করুন।
  2. ওয়েব অ্যাপ্লিকেশন নির্বাচন করুন।
  3. আপনার ক্লায়েন্ট আইডির জন্য একটি নাম লিখুন।
  4. Add URI-তে ক্লিক করুন এবং নিম্নলিখিত URI-টি প্রবেশ করান: https://vertexaisearch.cloud.google.com/oauth-redirect
  5. Create-এ ক্লিক করুন এবং নিম্নলিখিত তথ্যগুলো কপি করুন:
  • ক্লায়েন্ট আইডি
  • ক্লায়েন্টের গোপনীয়তা

১১. এজেন্টস্পেস অ্যাপ্লিকেশন ইউআরএলগুলি শনাক্ত করুন

নিম্নলিখিত পদ্ধতিটি গুগল দ্বারা তৈরি এবং প্রতিটি এজেন্টস্পেস অ্যাপ্লিকেশনের সাথে ম্যাপ করা গুগল-পরিচালিত এজেন্টস্পেস পাবলিক ইউআরএলগুলো শনাক্ত করে। ইউআরএলগুলোর আউটপুট রেফারেন্স আর্কিটেকচারের উপর ভিত্তি করে তৈরি উদাহরণ, তাই আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনার ইউআরএলগুলো নির্ভুল।

প্রতিটি অ্যাপ্লিকেশনের জন্য আপনার ওয়েব অ্যাপের লিঙ্কটি সংরক্ষণ করা নিশ্চিত করুন।

ক্যালেন্ডার অ্যাপ্লিকেশন

এজেন্টস্পেস ওয়েব ইউআরএল: https://vertexaisearch.cloud.google.com/us/home/cid/bb6b8b27-939b-494d-9227-45903bb8afcf

b90c67aafd825ccd.png

ড্রাইভ অ্যাপ্লিকেশন

এজেন্টস্পেস ওয়েব ইউআরএল:

https://vertexaisearch.cloud.google.com/us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd

f8f850425fd11190.png

১২. উন্নত হোস্ট এবং পাথ নিয়ম তৈরি করুন

পরবর্তী অংশে, আপনি ক্লাউড কনসোল ব্যবহার করে হোস্ট এবং পাথ নিয়ম নির্ধারণের বিকল্পটি সক্রিয় করতে লোড ব্যালেন্সারের রাউটিং নিয়মগুলো আপডেট করবেন। নিচের সারণিতে কাস্টম মানগুলো (উপর থেকে নিচে ক্রমানুসারে) উল্লেখ করা হলো, আপনার পরিবেশ অনুযায়ী এগুলো আপডেট করুন:

কাস্টম ভ্যালু

টিউটোরিয়ালের উপর ভিত্তি করে উদাহরণ

হোস্টরা

agentspace.YOUR-EXTERNAL-IP.nip.io

agentspace.34.54.158.206.nip.io

ডিফল্ট পরিষেবা

projects/<projectid>/global/backendServices/agentspace-ineg-bes

স্ক্রিনশট দেখুন

প্রিফিক্সম্যাচ

<এজেন্টস্পেস অ্যাপ#১ এর নাম>

/ড্রাইভ-অ্যাপ

ব্যাকএন্ডসার্ভিস

projects/<projectid>/global/backendServices/agentspace-ineg-bes

স্ক্রিনশট দেখুন

পাথপ্রিফিক্সরিরাইট

<অ্যাপ#১ এর এজেন্টস্পেস ইউআরএল পাথ>

/us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd

হোস্টরিরাইট

vertexaisearch.cloud.google.com

vertexaisearch.cloud.google.com

প্রিফিক্সম্যাচ

<এজেন্টস্পেস অ্যাপ#২ এর নাম>

/ক্যালেন্ডার-অ্যাপ

ব্যাকএন্ডসার্ভিস

projects/<projectid>/global/backendServices/agentspace-ineg-bes

স্ক্রিনশট দেখুন

পাথপ্রিফিক্সরিরাইট

<অ্যাপ#২ এর এজেন্টস্পেস ইউআরএল পাথ>

/us/home/cid/bb6b8b27-939b-494d-9227-45903bb8afcf

হোস্টরিরাইট

vertexaisearch.cloud.google.com

vertexaisearch.cloud.google.com

হোস্ট এবং পাথ নিয়মাবলী অ্যাক্সেস করতে নিম্নলিখিত স্থানে যান।

লোড ব্যালেন্সিং → এজেন্টস্পেস-এলবি → সম্পাদনা নির্বাচন করুন

রাউটিং নিয়ম নির্বাচন করুন → উন্নত হোস্ট এবং পাথ নিয়ম

হোস্ট এবং পাথ নিয়ম যোগ করুন নির্বাচন করুন

4bc965db43aed21b.png

এখন আপনাকে একটি নতুন হোস্ট এবং পাথ রুল তৈরি করতে বলা হচ্ছে, হোস্ট সেকশনে agentspace.YOUR-EXTERNAL-IP.nip.io অথবা কাস্টম ডোমেইন প্রবেশ করান।

f36e4fa11c950d8d.png

পাথ ম্যাচিং ফিল্ডে (ম্যাচ, অ্যাকশন এবং সার্ভিস), নিচের বিষয়বস্তু আপনার পরিবেশগত কনফিগারেশন দিয়ে আপডেট করুন এবং তারপর আপডেট নির্বাচন করুন।

defaultService: projects/<projectid>/global/backendServices/agentspace-ineg-bes
name: matcher1
routeRules:
- matchRules:
 - prefixMatch: /<name of Agentspace app#1>
 priority: 1
 routeAction:
   weightedBackendServices:
   - backendService: projects/<projectid>/global/backendServices/agentspace-ineg-bes
     weight: 100
   urlRewrite:
     pathPrefixRewrite: /<Agentspace URL path of app#1>
     hostRewrite: vertexaisearch.cloud.google.com
- matchRules:
 - prefixMatch: /<name of Agentspace app#2>
 priority: 2
 routeAction:
   weightedBackendServices:
   - backendService: projects/<projectid>/global/backendServices/agentspace-ineg-bes
     weight: 101
   urlRewrite:
     pathPrefixRewrite: /<Agentspace URL path of app#2>
     hostRewrite: vertexaisearch.cloud.google.com

উদাহরণ স্ক্রিনশট:

22788283124c59ec.png

cef8f571ca17bf42.png

১৩. বৈধতা যাচাই

ডেপ্লয়মেন্ট সম্পন্ন হয়েছে! আপনি একটি ওয়েব ব্রাউজার বা টার্মিনালের মাধ্যমে কাস্টম ডোমেন ব্যবহার করে Agentspace অ্যাপ্লিকেশনটি অ্যাক্সেস করতে পারেন। এর জন্য agentspace.YOUR-EXTERNAL-IP.nip.io/path উল্লেখ করুন, যেমন agentspace.34.54.158.206.nip.io। নিচে উদাহরণ দেওয়া হলো:

এজেন্টস্পেস অ্যাপ্লিকেশন: ড্রাইভ-অ্যাপ

পথ: agentspace.34.54.158.206.nip.io/drive-app

এজেন্টস্পেস অ্যাপ্লিকেশন: ড্রাইভ-অ্যাপ

পথ: agentspace.34.54.158.206.nip.io/calendar-app

১৪. পরিষ্কার করা

OAuth ক্রেডেনশিয়াল মুছে ফেলতে, নিম্নলিখিতগুলি সম্পাদন করুন:

APIS ও পরিষেবা → পরিচয়পত্র-এ যান

OAuth 2.0 ক্লায়েন্ট আইডি-এর অধীনে, আপনার ক্রেডেনশিয়ালগুলি নির্বাচন করুন এবং তারপর মুছে ফেলুন।

একটিমাত্র ক্লাউড শেল টার্মিনাল থেকে ল্যাবের উপাদানগুলো মুছে ফেলুন:

gcloud compute forwarding-rules delete agentspace-fr --global -q

gcloud compute target-https-proxies delete https-proxy --global -q

gcloud compute url-maps delete agentspace-lb --global -q

cloud compute ssl-certificates delete agentspace-self-signed-cert --global -q

gcloud compute backend-services delete agentspace-ineg-bes --global -q

gcloud compute network-endpoint-groups delete agentspace-ineg --global -q

gcloud dns --project=$projectid record-sets delete agentspace.$externalip.nip.io --zone="agentspace-dns" --type="A"

gcloud dns --project=$projectid managed-zones delete agentspace-dns

gcloud compute addresses delete external-ip --global -q

gcloud compute networks delete agentspace-vpc -q

১৫. অভিনন্দন

অভিনন্দন, আপনি উন্নত ট্র্যাফিক ব্যবস্থাপনা সহ একটি এক্সটার্নাল অ্যাপ্লিকেশন লোড ব্যালেন্সার ব্যবহার করে একটি কাস্টম ডোমেনের মাধ্যমে এজেন্টস্পেসের সাথে সংযোগ সফলভাবে কনফিগার এবং যাচাই করেছেন।

আপনি লোড ব্যালেন্সার পরিকাঠামো তৈরি করেছেন এবং ইন্টারনেট এনইজি (NEG), ক্লাউড ডিএনএস (Cloud DNS) ও উন্নত ট্র্যাফিক ম্যানেজমেন্ট তৈরি করতে শিখেছেন, যা হোস্ট ও পাথ রিরাইট (host and path rewrite) সক্ষম করে একটি কাস্টম ডোমেইন ব্যবহার করে এজেন্টস্পেস (Agentspace)-এর সাথে সংযোগ স্থাপন করতে সাহায্য করেছে।

কসমোপাপের মতে কোডল্যাবগুলো অসাধারণ!!

c911c127bffdee57.jpeg

রেফারেন্স নথি