Vertex AI ব্যক্তিগতভাবে PSC ব্যবহার করে অনলাইন ভবিষ্যদ্বাণীর শেষ পয়েন্টগুলি অ্যাক্সেস করে

১. ভূমিকা

অন-প্রিমিসেস হোস্টগুলি সরাসরি পাবলিক ইন্টারনেটের মাধ্যমে (বিকল্প ১) অথবা ক্লাউড ভিপিএন বা প্রাইভেট সার্ভিস কানেক্ট (পিএসসি) সহ ক্লাউড ইন্টারকানেক্ট ব্যবহার করে (বিকল্প ২) অনলাইন প্রেডিকশনে পৌঁছাতে পারে, উভয় ক্ষেত্রেই SSL/TLS এনক্রিপশন পাওয়া যায়। ইন্টারকানেক্টের মাধ্যমে অনলাইন প্রেডিকশনের জন্য হাইব্রিড কানেক্টিভিটি ইন্টারনেটের চেয়ে বেশি পারফরম্যান্স দেয়, তাই চিত্র ১-এ দেখানো অনুযায়ী গুরুত্বপূর্ণ অ্যাপ্লিকেশনগুলির জন্য এটি সুপারিশ করা হয়।

এই টিউটোরিয়ালে আমরা দেখাবো কিভাবে হাই-অ্যাভেইলেবিলিটি ভিপিএন (HA VPN) ব্যবহার করে দুটি ভিপিসি নেটওয়ার্কের মধ্যে ব্যক্তিগতভাবে অনলাইন প্রেডিকশন অ্যাক্সেস করা যায়, যা মাল্টি-ক্লাউড এবং অন-প্রিমিসেস ব্যক্তিগত সংযোগের ভিত্তি হিসেবে কাজ করতে পারে।

উল্লেখ্য, Vertex Online Prediction একটি পাবলিক এন্ডপয়েন্ট, তাই Vertex এবং অন্যান্য Googleapi-তে অ্যাক্সেস অনুমোদন বা অস্বীকার করার জন্য সুরক্ষিত পরিধি তৈরি করতে আপনাকে VPC Service Controls (VPC-SC) ব্যবহার করে অ্যাক্সেস সীমাবদ্ধ করতে হবে। এই টিউটোরিয়ালে VPC-SC নিয়ে আলোচনা করা হয়নি, আরও বিস্তারিত জানতে VPC Service Controls with Vertex AI দেখুন।

24a07ba49a7bcb16.png

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

আপনি একটি অন-প্রেমিস পরিবেশকে উপস্থাপন করার জন্য on-prem-vpc নামে একটি ভিপিসি নেটওয়ার্ক সেট আপ করবেন। আপনার ডেপ্লয়মেন্টের জন্য, এই on-prem-vpc কোনো অস্তিত্ব থাকবে না, এর পরিবর্তে আপনার অন-প্রেমিস ডেটা সেন্টার বা ক্লাউড প্রোভাইডারের সাথে হাইব্রিড নেটওয়ার্কিং ব্যবহার করা হবে।

আপনি একটি বিশদ প্রাইভেট সার্ভিস কানেক্ট আর্কিটেকচার তৈরি করবেন যা নিচের বিবরণ অনুযায়ী ক্লাউড NAT-এর মাধ্যমে সর্বজনীনভাবে এবং HA VPN-এর উপর PSC ব্যবহার করে ব্যক্তিগতভাবে অনলাইন প্রেডিকশন অ্যাক্সেস করার পদ্ধতি প্রদর্শন করবে।

b545c808b366341a.png

গুগল ক্লাউড প্রজেক্টে অনলাইন প্রেডিকশন চালু হয়ে গেলে নিম্নলিখিত ব্যবহারের ক্ষেত্রগুলো অন্বেষণ করা হবে:

অনলাইন ভবিষ্যদ্বাণীতে জনসাধারণের প্রবেশাধিকার নিম্নলিখিত বিষয়গুলো নিয়ে গঠিত:

  • বহির্গামী ইন্টারনেট অ্যাক্সেসের জন্য NAT ব্যবহার করে এমন একটি GCE ইনস্ট্যান্স (nat-client) তৈরি করুন।
  • মডেলের বিরুদ্ধে অনুমান করতে CURL ব্যবহার করুন।
  • অনলাইন প্রেডিকশন একটি পাবলিক ভিআইপি-এর মাধ্যমে অ্যাক্সেস করা হচ্ছে কিনা তা যাচাই করতে TCPDUMP ব্যবহার করুন।

অনলাইন ভবিষ্যদ্বাণীতে ব্যক্তিগত প্রবেশাধিকারের মধ্যে নিম্নলিখিত বিষয়গুলো অন্তর্ভুক্ত:

  • প্রকল্পে aVertex অনলাইন প্রেডিকশন এন্ডপয়েন্টে একটি মডেল স্থাপন করুন।
  • aiml-vpc-তে একটি প্রাইভেট সার্ভিস কানেক্ট (Googleapis) এন্ডপয়েন্ট তৈরি করুন
  • ক্লাউড রাউটারের মাধ্যমে পিএসসি আইপি অ্যাড্রেসটিকে একটি কাস্টম অ্যাডভার্টাইজমেন্ট হিসেবে অন-প্রেম ভিপিসিতে এক্সপোর্ট করুন।
  • একটি GCE ইনস্ট্যান্স (প্রাইভেট-ক্লায়েন্ট) তৈরি করুন এবং PSC এন্ডপয়েন্ট IP দিয়ে etc/hosts ফাইলটি আপডেট করুন।
  • মডেলের বিরুদ্ধে অনুমান করতে CURL ব্যবহার করুন।
  • অনলাইন প্রেডিকশন যে PSC এন্ডপয়েন্ট IP অ্যাড্রেসের মাধ্যমে অ্যাক্সেস করা হচ্ছে, তা যাচাই করতে TCPDUMP ব্যবহার করুন।

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

  • কীভাবে একটি ব্যক্তিগত সার্ভিস কানেক্ট এন্ডপয়েন্ট স্থাপন করবেন
  • ক্লাউড রাউটারের মাধ্যমে পিএসসি এন্ডপয়েন্ট আইপি কীভাবে প্রচার করবেন
  • পাবলিক এবং প্রাইভেট উভয় অনলাইন প্রেডিকশন অ্যাক্সেস যাচাই করতে TCPDUMP কীভাবে ব্যবহার করবেন

আপনার যা যা লাগবে

  • গুগল ক্লাউড প্রজেক্ট

আইএএম অনুমতি

কম্পিউটার নেটওয়ার্ক অ্যাডমিন

পরিষেবা ডিরেক্টরি সম্পাদক

ডিএনএস প্রশাসক

নেটওয়ার্ক অ্যাডমিন

কোটা প্রশাসক

নোটবুক অ্যাডমিন

পরিষেবা অ্যাকাউন্ট ব্যবহারকারী

স্টোরেজ প্রশাসক

ভার্টেক্স এআই ব্যবহারকারী

পরিষেবা অ্যাকাউন্ট অ্যাডমিন

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

টিউটোরিয়ালটি সমর্থন করার জন্য প্রজেক্টটি আপডেট করুন।

এই টিউটোরিয়ালটিতে ক্লাউড শেলে gcloud কনফিগারেশন বাস্তবায়নে সহায়তার জন্য $variables ব্যবহার করা হয়েছে।

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

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

৩. পরিষেবাগুলি সক্রিয় করুন

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

gcloud services enable dns.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable iam.googleapis.com 
gcloud services enable compute.googleapis.com 
gcloud services enable notebooks.googleapis.com

৪. aiml-vpc সেটআপ

aiml-vpc তৈরি করুন

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

gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom

ব্যবহারকারী-পরিচালিত নোটবুক সাবনেট তৈরি করুন

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

gcloud compute networks subnets create workbench-subnet --project=$projectid --range=172.16.10.0/28 --network=aiml-vpc --region=us-central1 --enable-private-ip-google-access

ক্লাউড রাউটার এবং NAT কনফিগারেশন

টিউটোরিয়ালে নোটবুক সফটওয়্যার প্যাকেজ ডাউনলোডের জন্য ক্লাউড ন্যাট (Cloud NAT) ব্যবহার করা হয়, কারণ ব্যবহারকারী-পরিচালিত নোটবুক ইনস্ট্যান্সটির কোনো বাহ্যিক আইপি অ্যাড্রেস থাকে না। ক্লাউড ন্যাট ইগ্রেস ন্যাট (egress NAT) সুবিধাও প্রদান করে, যার অর্থ হলো ইন্টারনেট হোস্টগুলোকে ব্যবহারকারী-পরিচালিত নোটবুকের সাথে যোগাযোগ শুরু করার অনুমতি দেওয়া হয় না, যা এটিকে আরও সুরক্ষিত করে তোলে।

ক্লাউড শেলের ভিতরে আঞ্চলিক ক্লাউড রাউটারটি তৈরি করুন।

gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1

ক্লাউড শেলের ভিতরে আঞ্চলিক ক্লাউড ন্যাট গেটওয়ে তৈরি করুন।

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-aiml-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

৫. অন-প্রেম-ভিপিসি সেটআপ

অন-প্রেম-ভিপিসি তৈরি করুন

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

gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom

nat-subnet তৈরি করুন

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

gcloud compute networks subnets create nat-subnet --project=$projectid --range=192.168.10.0/28 --network=on-prem-vpc --region=us-central1

প্রাইভেট-আইপি-সাবনেট তৈরি করুন

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

gcloud compute networks subnets create private-ip-subnet --project=$projectid --range=192.168.20.0/28 --network=on-prem-vpc --region=us-central1

ক্লাউড রাউটার এবং NAT কনফিগারেশন

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

ক্লাউড শেলের ভিতরে আঞ্চলিক ক্লাউড রাউটারটি তৈরি করুন।

gcloud compute routers create cloud-router-us-central1-on-prem-nat --network on-prem-vpc --region us-central1

ক্লাউড শেলের ভিতরে আঞ্চলিক ক্লাউড ন্যাট গেটওয়ে তৈরি করুন।

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-on-prem-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

৬. প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট তৈরি করুন।

পরবর্তী অংশে, আপনি একটি প্রাইভেট সার্ভিস কানেক্ট (PSC) এন্ডপয়েন্ট তৈরি করবেন যা অন-প্রেম-ভিপিসি থেকে ভার্টেক্স এপিআই (Vertex API) অ্যাক্সেস করতে ব্যবহৃত হবে। একটি আসন্ন ধাপে, PSC আইপি অ্যাড্রেস 100.100.10.10-কে aiml-vpc-cloud-router-vpn থেকে অন-প্রেমিসেস নেটওয়ার্কে একটি কাস্টম রাউটার অ্যাডভার্টাইজমেন্ট হিসেবে প্রচার করা হবে।

ক্লাউড শেল থেকে

gcloud compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=100.100.10.10 \
    --network=aiml-vpc

PSC এন্ডপয়েন্ট তৈরি করুন

ক্লাউড শেল থেকে

gcloud compute forwarding-rules create pscvertex \
    --global \
    --network=aiml-vpc \
    --address=psc-ip \
    --target-google-apis-bundle=all-apis

কনফিগার করা প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্টগুলির তালিকা

ক্লাউড শেল থেকে

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

কনফিগার করা প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্টগুলো বর্ণনা করুন

ক্লাউড শেল থেকে

gcloud compute forwarding-rules describe \
    pscvertex --global

৭. হাইব্রিড সংযোগ

পরবর্তী অংশে, আপনি বর্ডার গেটওয়ে প্রোটোকল (BGP) ব্যবহার করে একটি ক্লাউড রাউটার তৈরি করবেন, যা আপনাকে আপনার ভার্চুয়াল প্রাইভেট ক্লাউড (VPC) এবং পিয়ার নেটওয়ার্কের মধ্যে গতিশীলভাবে রুট বিনিময় করতে সক্ষম করবে।

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

এই টিউটোরিয়ালে আপনি aiml-vpc এবং on-prem-vpc-এর মধ্যে HA VPN স্থাপন করবেন।

aiml-vpc- এর জন্য HA VPN গেটওয়ে তৈরি করুন

প্রতিটি গেটওয়ে তৈরি করার সময়, প্রতিটি গেটওয়ে ইন্টারফেসের জন্য একটি করে মোট দুটি এক্সটার্নাল IPv4 অ্যাড্রেস স্বয়ংক্রিয়ভাবে বরাদ্দ করা হয়।

ক্লাউড শেলের ভিতরে, HA VPN গেটওয়ে তৈরি করুন।

gcloud compute vpn-gateways create aiml-vpn-gw \
   --network=aiml-vpc\
   --region=us-central1

অন-প্রেম-ভিপিসি- এর জন্য HA VPN গেটওয়ে তৈরি করুন

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

ক্লাউড শেলের ভিতরে HA VPN গেটওয়েটি তৈরি করুন।

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-vpc\
   --region=us-central1

HA VPN গেটওয়ে তৈরি যাচাই করুন

কনসোল ব্যবহার করে HYBRID CONNECTIVITY → VPN → CLOUD VPN GATEWAYS- এ যান এবং যাচাই করুন যে গেটওয়ে আইপিগুলো তৈরি হয়েছে।

66312b1b53c233d7.png

aiml-vpc এর জন্য ক্লাউড রাউটার তৈরি করুন

ক্লাউড শেলের ভিতরে, us-central1-এ অবস্থিত ক্লাউড রাউটারটি তৈরি করুন।

gcloud compute routers create aiml-cr-us-central1 \
   --region=us-central1 \
   --network=aiml-vpc\
   --asn=65001

অন-প্রেম-ভিপিসির জন্য ক্লাউড রাউটার তৈরি করুন

ক্লাউড শেলের ভিতরে, us-central1-এ অবস্থিত ক্লাউড রাউটারটি তৈরি করুন।

gcloud compute routers create on-prem-cr-us-central1 \
   --region=us-central1 \
   --network=on-prem-vpc \
   --asn=65002

aiml-vpc এর জন্য ভিপিএন টানেল তৈরি করুন

আপনি প্রতিটি HA VPN গেটওয়েতে দুটি VPN টানেল তৈরি করবেন।

ভিপিএন টানেল0 তৈরি করুন

ক্লাউড শেলের ভিতরে, tunnel0 তৈরি করুন:

gcloud compute vpn-tunnels create aiml-vpc-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router aiml-cr-us-central1 \
    --vpn-gateway aiml-vpn-gw \
    --interface 0

ভিপিএন টানেল তৈরি করুন১

ক্লাউড শেলের ভিতরে, টানেল১ তৈরি করুন:

gcloud compute vpn-tunnels create aiml-vpc-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router aiml-cr-us-central1 \
    --vpn-gateway aiml-vpn-gw \
    --interface 1

অন-প্রেম-ভিপিসির জন্য ভিপিএন টানেল তৈরি করুন

আপনি প্রতিটি HA VPN গেটওয়েতে দুটি VPN টানেল তৈরি করবেন।

ভিপিএন টানেল0 তৈরি করুন

ক্লাউড শেলের ভিতরে, tunnel0 তৈরি করুন:

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway aiml-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 0

ভিপিএন টানেল তৈরি করুন১

ক্লাউড শেলের ভিতরে, টানেল১ তৈরি করুন:

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway aiml-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

ভিপিএন টানেল তৈরি যাচাই করুন

কনসোল ব্যবহার করে HYBRID CONNECTIVITY → VPN → CLOUD VPN TUNNELS-এ যান।

e8e13ebaed09f1.png

৮. বিজিপি নেইবার স্থাপন করুন

BGP সেশন তৈরি করুন

এই অংশে আপনি ক্লাউড রাউটার ইন্টারফেস এবং বিজিপি পিয়ার কনফিগার করবেন।

aiml-vpc এর জন্য একটি BGP ইন্টারফেস এবং পিয়ারিং তৈরি করুন।

ক্লাউড শেলের ভিতরে, BGP ইন্টারফেস তৈরি করুন:

gcloud compute routers add-interface aiml-cr-us-central1 \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel aiml-vpc-tunnel0 \
    --region us-central1

ক্লাউড শেলের ভিতরে, BGP পিয়ার তৈরি করুন:

gcloud compute routers add-bgp-peer aiml-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region us-central1

ক্লাউড শেলের ভিতরে, BGP ইন্টারফেস তৈরি করুন:

gcloud compute routers add-interface aiml-cr-us-central1 \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel aiml-vpc-tunnel1 \
    --region us-central1

ক্লাউড শেলের ভিতরে, BGP পিয়ার তৈরি করুন:

gcloud compute routers add-bgp-peer aiml-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region us-central1

অন-প্রেম-ভিপিসির জন্য একটি বিজিপি ইন্টারফেস এবং পিয়ারিং তৈরি করুন।

ক্লাউড শেলের ভিতরে, BGP ইন্টারফেস তৈরি করুন:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel0-to-aiml-vpc\
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region us-central1

ক্লাউড শেলের ভিতরে, BGP পিয়ার তৈরি করুন:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-aiml-vpc-tunnel0 \
    --interface if-tunnel1-to-aiml-vpc\
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region us-central1

ক্লাউড শেলের ভিতরে, BGP ইন্টারফেস তৈরি করুন:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel1-to-aiml-vpc\
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region us-central1

ক্লাউড শেলের ভিতরে, BGP পিয়ার তৈরি করুন:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-aiml-vpc-tunnel1\
    --interface if-tunnel2-to-aiml-vpc\
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region us-central1

VPN টানেলের বিবরণ দেখতে Hybrid CONNECTIVITY → VPN- এ যান।

cb91b4476a88acd3.png

HA VPN-এর মাধ্যমে aiml-vpc দ্বারা শেখা রুটগুলি যাচাই করুন

কনসোল ব্যবহার করে, VPC network → VPC networks → aiml-vpc → ROUTES → REGION → US-CENTRAL1 → VIEW- এ যান।

লক্ষ্য করুন যে aiml-vpc, on-prem-vpc-এর nat-subnet এবং private-ip-subnet থেকে রাউট শিখেছে।

f407ed6e1a6233db.png

যাচাই করুন যে অন-প্রেম-ভিপিসি HA-VPN-এর মাধ্যমে ওয়ার্কবেঞ্চ-সাবনেটটি চিনে নিয়েছে।

কনসোল ব্যবহার করে, VPC network → VPC networks → on-prem-vpc → ROUTES → REGION → US-CENTRAL1 → VIEW- এ যান।

7957e5d898a9e7e0.png

৯. aiml-vpc-এর জন্য কাস্টম রুট বিজ্ঞাপন তৈরি করুন

aiml-cr-us-central1 ক্লাউড রাউটারটি প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট আইপি স্বয়ংক্রিয়ভাবে প্রচার করে না, কারণ ভিপিসি-তে সাবনেটটি কনফিগার করা নেই।

এর পরিবর্তে, আপনাকে aiml-cr-us-central ক্লাউড রাউটার থেকে এন্ডপয়েন্ট আইপি অ্যাড্রেস 100.100.10.10-এর জন্য একটি কাস্টম রুট অ্যাডভার্টাইজমেন্ট তৈরি করতে হবে, যা BGP-এর মাধ্যমে অন-প্রেম-ভিপিসি-তে অন-প্রেমিসেস এনভায়রনমেন্টে অ্যাডভার্টাইজ করা হবে।

কনসোল থেকে HYBRID CONNECTIVITY → CLOUD ROUTERS → aiml-cr-us-central1 -এ যান, তারপর EDIT নির্বাচন করুন।

c8fb02ed59a5b068.png

'Advertised routes' বিভাগে, 'Create custom routes' অপশনটি নির্বাচন করুন, নীচের উদাহরণ অনুযায়ী ফিল্ডগুলি আপডেট করুন, 'DONE' নির্বাচন করুন এবং তারপরে 'SAVE'-এ ক্লিক করুন।

5996464e3aae0665.png

f799082ab2cd7e31.png

বৈধতা

যাচাই করুন যে অন-প্রেম-ভিপিসি, HA-VPN-এর মাধ্যমে PSC এন্ডপয়েন্ট আইপি অ্যাড্রেসটি শিখেছে।

কনসোল ব্যবহার করে, VPC network → VPC networks → on-prem-vpc → ROUTES → REGION → US-CENTRAL1 → VIEW- এ যান।

1b42673e6f940bf2.png

১০. অন-প্রেম-ভিপিসিতে কাস্টম রুট অ্যাডভার্টাইজমেন্ট তৈরি করুন

অন-প্রেম-ভিপিসি ক্লাউড রাউটার ডিফল্টরূপে সমস্ত সাবনেট প্রচার করে, কিন্তু শুধুমাত্র প্রাইভেট-আইপি-সাবনেটটিই প্রয়োজন।

পরবর্তী অংশে, অন-প্রেম-সিআর-ইউএস-সেন্ট্রাল১ ক্লাউড রাউটার থেকে রাউট অ্যাডভার্টাইজমেন্টগুলো আপডেট করুন।

কনসোল থেকে HYBRID CONNECTIVITY → CLOUD ROUTERS → on-prem-cr-us-central1 -এ যান, তারপর EDIT নির্বাচন করুন।

bd96bde9550d516a.png

'Advertised routes' বিভাগে, 'Create custom routes' অপশনটি নির্বাচন করুন, নীচের উদাহরণ অনুযায়ী ফিল্ডগুলি আপডেট করুন, 'DONE' নির্বাচন করুন এবং তারপরে 'SAVE'-এ ক্লিক করুন।

f8b61f669a9cfeef.png

বৈধতা

যাচাই করুন যে aiml-vpc, on-prem-vpc থেকে private-ip-subnet রুটটি শিখেছে।

কনসোল ব্যবহার করে, VPC network → VPC networks → aiml-vpc → ROUTES → REGION → US-CENTRAL1 → VIEW- এ যান।

2b1a7a5f918e9f50.png

১১. একটি ব্যবহারকারী পরিচালিত পরিষেবা অ্যাকাউন্ট তৈরি করুন (GCE ইনস্ট্যান্স)

ভার্টেক্স এপিআই-কে সূক্ষ্ম স্তরের নিয়ন্ত্রণ দেওয়ার জন্য একটি ইউজার-ম্যানেজড সার্ভিস অ্যাকাউন্ট প্রয়োজন, যা ন্যাট (nat) এবং প্রাইভেট ক্লায়েন্ট ইনস্ট্যান্সগুলিতে প্রয়োগ করা হবে। একবার তৈরি হয়ে গেলে, ব্যবসায়িক প্রয়োজন অনুসারে সার্ভিস অ্যাকাউন্টের অনুমতিগুলি পরিবর্তন করা যেতে পারে। এই টিউটোরিয়ালে, ইউজার-ম্যানেজড সার্ভিস অ্যাকাউন্ট, vertex-sa-তে নিম্নলিখিত রোলগুলি প্রয়োগ করা হবে:

এগিয়ে যাওয়ার আগে আপনাকে অবশ্যই সার্ভিস অ্যাকাউন্ট এপিআই (Service Account API) হবে।

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

gcloud iam service-accounts create gce-vertex-sa \
    --description="service account for vertex" \
    --display-name="gce-vertex-sa"

ক্লাউড শেলের ভিতরে, সার্ভিস অ্যাকাউন্টটিকে 'compute instance admin' রোল দিয়ে আপডেট করুন।

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"

Cloud Shell-এর ভিতরে, Vertex AI User রোলটি দিয়ে সার্ভিস অ্যাকাউন্টটি আপডেট করুন।

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

১২. একটি ব্যবহারকারী পরিচালিত পরিষেবা অ্যাকাউন্ট (নোটবুক) তৈরি করুন।

পরবর্তী অংশে, আপনি একটি ব্যবহারকারী-পরিচালিত পরিষেবা অ্যাকাউন্ট তৈরি করবেন যা এই টিউটোরিয়ালে ব্যবহৃত Vertex Workbench (নোটবুক)-এর সাথে যুক্ত থাকবে।

এই টিউটোরিয়ালে, সার্ভিস অ্যাকাউন্টে নিম্নলিখিত ভূমিকাগুলো প্রয়োগ করা হবে:

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

gcloud iam service-accounts create user-managed-notebook-sa \
    --display-name="user-managed-notebook-sa"

ক্লাউড শেলের ভিতরে, সার্ভিস অ্যাকাউন্টটিকে স্টোরেজ অ্যাডমিন রোল দিয়ে আপডেট করুন।

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"

ক্লাউড শেলের ভিতরে, সার্ভিস অ্যাকাউন্টটিকে 'Vertex AI User' রোল দিয়ে আপডেট করুন।

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

ক্লাউড শেলের ভিতরে, সার্ভিস অ্যাকাউন্টটিকে আর্টিফ্যাক্ট রেজিস্ট্রি অ্যাডমিন রোল দিয়ে আপডেট করুন।

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"

ক্লাউড শেলের ভিতরে, সার্ভিস অ্যাকাউন্টটি তালিকাভুক্ত করুন এবং ব্যবহারকারী-পরিচালিত নোটবুক তৈরি করার সময় যে ইমেল ঠিকানাটি ব্যবহার করা হবে তা নোট করে রাখুন।

gcloud iam service-accounts list

১৩. টেস্ট ইনস্ট্যান্সগুলো তৈরি করা হয়েছে

পরবর্তী অংশে, আপনি ভার্টেক্স এপিআই-তে পৌঁছানোর বিভিন্ন পদ্ধতি যাচাই করার জন্য টেস্ট ইনস্ট্যান্স তৈরি করবেন, বিশেষত:

  • nat-client, যার ফলে এটি ইন্টারনেটের মাধ্যমে Online Prediction এন্ডপয়েন্টটি অ্যাক্সেস করতে পারবে।
  • private-client ইনস্ট্যান্সটি HA-VPN-এর মাধ্যমে অনলাইন প্রেডিকশন এন্ডপয়েন্ট অ্যাক্সেস করার জন্য প্রাইভেট সার্ভিস কানেক্ট আইপি 100.100.10.10 ব্যবহার করবে।

ক্লাউড শেলের ভিতরে nat-client ইনস্ট্যান্সটি তৈরি করুন।

gcloud compute instances create nat-client \
    --zone=us-central1-a \
    --image-family=debian-11 \
    --image-project=debian-cloud \
    --subnet=nat-subnet \
    --service-account=vertex-sa@$projectid.iam.gserviceaccount.com \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --no-address \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump dnsutils -y"

ক্লাউড শেলের ভিতরে private-client ইনস্ট্যান্সটি তৈরি করুন।

gcloud compute instances create private-client \
    --zone=us-central1-a \
    --image-family=debian-11 \
    --image-project=debian-cloud \
    --subnet=private-ip-subnet \
    --service-account=vertex-sa@$projectid.iam.gserviceaccount.com \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --no-address \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump dnsutils -y"

আপনার VM ইনস্ট্যান্সগুলিতে আইডেন্টিটি-অ্যাওয়্যার প্রক্সি (IAP)-কে সংযোগ করার অনুমতি দিতে , এমন একটি ফায়ারওয়াল নিয়ম তৈরি করুন যা:

  • এটি সেই সমস্ত VM ইনস্ট্যান্সের ক্ষেত্রে প্রযোজ্য, যেগুলোকে আপনি IAP ব্যবহার করে অ্যাক্সেসযোগ্য করতে চান।
  • 35.235.240.0/20 আইপি রেঞ্জ থেকে ইনগ্রেস ট্র্যাফিকের অনুমতি দেয়। এই রেঞ্জে সেই সমস্ত আইপি অ্যাড্রেস রয়েছে যা IAP টিসিপি ফরওয়ার্ডিংয়ের জন্য ব্যবহার করে।

ক্লাউড শেলের ভিতরে IAP ফায়ারওয়াল নিয়মটি তৈরি করুন।

gcloud compute firewall-rules create ssh-iap-on-prem-vpc \
    --network on-prem-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

১৪. একটি ব্যবহারকারী পরিচালিত নোটবুক তৈরি করুন

নোটবুক এপিআই

পরবর্তী অংশে, পূর্বে তৈরি করা সার্ভিস অ্যাকাউন্ট user-managed-notebook-sa-কে অন্তর্ভুক্ত করে একটি ইউজার-ম্যানেজড নোটবুক তৈরি করুন।

ক্লাউড শেলের ভিতরে প্রাইভেট-ক্লায়েন্ট ইনস্ট্যান্সটি তৈরি করুন।

gcloud notebooks instances create workbench-tutorial \
      --vm-image-project=deeplearning-platform-release \
      --vm-image-family=common-cpu-notebooks \
      --machine-type=n1-standard-4 \
      --location=us-central1-a \
      --subnet-region=us-central1 \
      --subnet=workbench-subnet \
      --no-public-ip    --service-account=user-managed-notebook-sa@$projectid.iam.gserviceaccount.com

১৫. মডেল এবং অনলাইন পূর্বাভাস স্থাপন করুন

পরবর্তী অংশে, প্রদত্ত কোডল্যাব ‘ Vertex AI: Use custom prediction routines with Sklearn to preprocess and post process data for predictions’ ব্যবহার করুন এবং ৭ নং সেকশন থেকে শুরু করুন, যেহেতু আপনি আগের ধাপে একটি নোটবুক তৈরি করে রেখেছেন। মডেলটি ডেপ্লয় করা হয়ে গেলে, পরবর্তী সেকশন শুরু করার জন্য টিউটোরিয়ালে ফিরে যান।

ee68b7ba0cfd2746.png

১৬. ইন্টারনেটের মাধ্যমে ভার্টেক্স এপিআই-তে প্রবেশাধিকার যাচাই করুন।

পরবর্তী অংশে, আপনি ইনস্ট্যান্স ও ন্যাট-ক্লায়েন্টে লগ ইন করবেন এবং ভার্টেক্স এপিআই রিজলভ করতে ব্যবহৃত us-central1-aiplatform.googleapis.com ডোমেইনের বিপরীতে dig এবং tcpdump ব্যবহার করে ভার্টেক্স এআই-এর সাথে সংযোগ যাচাই করবেন।

cloud Shell-এ IAP ব্যবহার করে nat-client-এ লগ ইন করুন এবং us-central1-aiplatform.googleapis.com ভার্টেক্স ডোমেনের বিরুদ্ধে একটি dig অপারেশন চালিয়ে Vertex API-এর সাথে সংযোগ যাচাই করুন।

gcloud compute ssh nat-client --project=$projectid --zone=us-central1-a --tunnel-through-iap

খননকার্যটি সম্পাদন করুন।

dig us-central1-aiplatform.googleapis.com

উদাহরণস্বরূপ, DNS রেসপন্সে থাকা পাবলিক IP-গুলো লক্ষ্য করুন।

user@nat-client:~$ dig us-central1-aiplatform.googleapis.com

; <<>> DiG 9.16.42-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56761
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A

;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.111.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.1.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.121.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.103.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.120.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.171.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.159.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.120.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.161.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.172.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.126.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.70.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.132.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.201.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.202.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.69.95

;; Query time: 4 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Thu Jun 29 01:35:57 UTC 2023
;; MSG SIZE  rcvd: 322

nat-client OS থেকে, Online Prediction-এর বিরুদ্ধে curl চালানোর সময় DNS রেজোলিউশন যাচাই করতে tcpdump চালান।

 sudo tcpdump -i any port 53 -n

উদাহরণ:

user@nat-client:~$ sudo tcpdump -i any port 53 -n 
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes

"+" চিহ্নটি নির্বাচন করে একটি নতুন ক্লাউড শেল টার্মিনাল খুলুন। নতুন ট্যাবটি খুলে গেলে, প্রজেক্ট নেম ভেরিয়েবলটি আপডেট করুন।

ক্লাউড শেলের ভিতরে, প্রোজেক্টের নামের ভেরিয়েবলটি আপডেট করুন।

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

ক্লাউড শেল দুই-এর ভিতরে, nat-client ইনস্ট্যান্সে ssh করুন।

gcloud compute ssh --zone "us-central1-a" "nat-client" --project "$projectid"

পরবর্তী অংশে, আপনি sudo VI editor অথবা nano ব্যবহার করে একটি instances.json ফাইল তৈরি করবেন এবং ডেপ্লয় করা মডেল থেকে প্রেডিকশন পাওয়ার জন্য ব্যবহৃত ডেটা স্ট্রিংটি তাতে প্রবেশ করাবেন।

nat-client OS থেকে, নিচের ডেটা স্ট্রিংটি দিয়ে একটি instances.json ফাইল তৈরি করুন:

{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

উদাহরণ:

user@nat-client:$ more instances.json 
{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

user@nat-client:$

ক্লাউড কনসোল থেকে আপনার অনলাইন প্রেডিকশন এন্ডপয়েন্ট আইডি সংগ্রহ করুন, যা পরবর্তী ধাপগুলোতে ব্যবহার করা হবে।

VERTEX AI → অনলাইন প্রেডিকশন- এ যান

237d413ccde1e95b.png

nat-client OS থেকে, নিম্নলিখিত ভেরিয়েবলগুলো তৈরি করুন:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

উদাহরণ:

ENDPOINT_ID="3328226095324463104"

nat-client os থেকে, মডেলের প্রতিক্রিয়া পেতে curl কমান্ডটি চালান।

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json

উদাহরণস্বরূপ, সফল ভবিষ্যদ্বাণীটি লক্ষ্য করুন।

user@nat-client$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
{
  "predictions": [
    "$479.0",
    "$586.0"
  ],
  "deployedModelId": "1949163636186415104",
  "model": "projects/234086459238/locations/us-central1/models/947543727654567936",
  "modelDisplayName": "diamonds-cpr",
  "modelVersionId": "1"
}

১৭. যাচাইকরণ - ভার্টেক্স এপিআই-তে ইন্টারনেট অ্যাক্সেস

এখন যেহেতু আপনি প্রেডিকশনটি সম্পন্ন করেছেন, চলুন TCPDUMP-এর ফলাফলগুলো (টার্মিনাল ১) দেখে নেওয়া যাক। এটি নির্দেশ করে যে nat-client ইনস্ট্যান্সটি (192.168.10.2) Vertex AI ডোমেইন us-central1-aiplatform.googleapis.com- এর জন্য স্থানীয় dns সার্ভার 169.254.169.254-এ একটি DNS কোয়েরি চালাচ্ছে। DNS কোয়েরিটির ফলাফল হলো Vertex API-এর জন্য পাবলিক ভার্চুয়াল আইপি অ্যাড্রেস (VIPS), যা নিচে উল্লেখ করা হলো:

user@nat-client:~$ sudo tcpdump -i any port 53 -n
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
20:05:09.260937 ens4  Out IP 192.168.10.2.40782 > 169.254.169.254.53: 47190+ A? oauth2.googleapis.com. (39)
20:05:09.260946 ens4  Out IP 192.168.10.2.40782 > 169.254.169.254.53: 28075+ AAAA? oauth2.googleapis.com. (39)
20:05:09.263556 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.40782: 28075 4/0/0 AAAA 2607:f8b0:4001:c34::5f, AAAA 2607:f8b0:4001:c54::5f, AAAA 2607:f8b0:4001:c16::5f, AAAA 2607:f8b0:4001:c17::5f (151)
20:05:09.265018 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.40782: 47190 16/0/0 A 74.125.201.95, A 74.125.202.95, A 74.125.69.95, A 64.233.183.95, A 173.194.193.95, A 173.194.194.95, A 173.194.195.95, A 173.194.196.95, A 173.194.197.95, A 64.233.191.95, A 173.194.74.95, A 173.194.192.95, A 209.85.145.95, A 209.85.146.95, A 209.85.147.95, A 142.250.125.95 (295)
20:05:09.474478 ens4  Out IP 192.168.10.2.57356 > 169.254.169.254.53: 36008+ A? us-central1-aiplatform.googleapis.com. (55)
20:05:09.474488 ens4  Out IP 192.168.10.2.57356 > 169.254.169.254.53: 47020+ AAAA? us-central1-aiplatform.googleapis.com. (55)
20:05:09.477190 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.57356: 36008 16/0/0 A 173.194.194.95, A 173.194.195.95, A 173.194.196.95, A 173.194.197.95, A 173.194.74.95, A 173.194.192.95, A 209.85.145.95, A 209.85.146.95, A 209.85.147.95, A 142.250.125.95, A 142.250.136.95, A 142.250.148.95, A 209.85.200.95, A 209.85.234.95, A 142.250.152.95, A 142.250.128.95 (311)
20:05:09.478607 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.57356: 47020 4/0/0 AAAA 2607:f8b0:4001:c1b::5f, AAAA 2607:f8b0:4001:c0c::5f, AAAA 2607:f8b0:4001:c0e::5f, AAAA 2607:f8b0:4001:c1e::5f (167)

১৮. ভার্টেক্স এপিআই-গুলিতে ব্যক্তিগত অ্যাক্সেস সক্ষম করুন

পরবর্তী অংশে, আপনি ব্যক্তিগতভাবে অনলাইন প্রেডিকশনে পৌঁছানোর জন্য হাইব্রিড নেটওয়ার্কিং (HA VPN) এর মাধ্যমে প্রাইভেট সার্ভিস কানেক্ট ব্যবহার করে ভার্টেক্স এপিআই (Vertex APIs) অ্যাক্সেস করবেন। টিউটোরিয়ালে ব্যবহৃত উদাহরণে, আপনি প্রাইভেট-ক্লায়েন্ট ইনস্ট্যান্সের /etc/hosts ফাইলটি আপডেট করবেন।

আপনার অন-প্রিমিসেস পরিবেশে পরীক্ষার জন্য একটি বা কয়েকটি মেশিনের /etc/hosts ফাইল আপডেট করা উপযুক্ত হলেও, বৃহৎ পরিসর এবং প্রোডাকশন পরিবেশের জন্য PSC এন্ডপয়েন্ট FQDN ব্যবহার করে একটি নতুন ফরওয়ার্ডিং জোন তৈরি করা অধিকতর বাঞ্ছনীয়।

উদাহরণস্বরূপ, টিউটোরিয়ালে তৈরি করা psc এন্ডপয়েন্টটির নাম pscvertex, যা pscvertex.p.googleapis.com- এ রূপান্তরিত হয়। vertex-এর জন্য এন্ডপয়েন্ট ব্যবহার করার সময়, FQDN-এর সাথে সার্ভিসটির নাম যুক্ত করুন, যেমন us-central1-aiplatform-pscvertex.p.googleapis.com

PSC এন্ডপয়েন্ট দিয়ে অন-প্রিমিসেস DNS আপডেট করার জন্য স্থানীয় অ্যাপ্লিকেশনগুলিকেও রিফ্যাক্টর করতে হবে, যাতে সেগুলি নেটিভ পাবলিক এন্ডপয়েন্ট us-central1-aiplatform.googleapis.com- এর পরিবর্তে FDQN, যেমন us-central1-aiplatform-pscvertex.p.googleapis.com , কল করে।

যেসব ক্লায়েন্টকে কাস্টম এন্ডপয়েন্ট ব্যবহার করার জন্য কনফিগার করা যায়, তারা এন্ডপয়েন্টে অনুরোধ পাঠানোর জন্য p.googleapis.com DNS নামগুলো ব্যবহার করতে পারে।

কাস্টম এন্ডপয়েন্ট ব্যবহার করার জন্য আপনার ক্লায়েন্ট বা ক্লায়েন্ট লাইব্রেরি কনফিগার করার তথ্য জানতে এর ডকুমেন্টেশন দেখুন। উদাহরণস্বরূপ:

  • পাইথন: আপনি google-api-core প্যাকেজের Client options ক্লাসে api_endpoint কনফিগার করতে পারেন।
  • যান: আপনি api প্যাকেজের অন্তর্গত Client options প্যাকেজে WithEndpoint কনফিগার করতে পারেন।
  • gcloud: আপনি api_endpoint_overrides কনফিগার করতে পারেন

"+" চিহ্নটি নির্বাচন করে একটি নতুন ক্লাউড শেল টার্মিনাল খুলুন। নতুন ট্যাবটি খুলে গেলে, প্রজেক্ট নেম ভেরিয়েবলটি আপডেট করুন।

ক্লাউড শেল থেকে।

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

একটি নতুন ক্লাউড শেলে IAP ব্যবহার করে প্রাইভেট-ক্লায়েন্টে লগ ইন করুন এবং us-central1-aiplatform.googleapis.com ভার্টেক্স ডোমেনের বিরুদ্ধে একটি dig কমান্ড চালিয়ে ভার্টেক্স এপিআই-এর সাথে সংযোগ যাচাই করুন।

ক্লাউড শেল থেকে প্রাইভেট-ক্লায়েন্ট ওএস ইনস্ট্যান্সে লগ ইন করুন।

gcloud compute ssh private-client --project=$projectid --zone=us-central1-a --tunnel-through-iap

খননকার্যটি সম্পাদন করুন।

dig us-central1-aiplatform.googleapis.com

উদাহরণস্বরূপ, DNS প্রতিক্রিয়ার উপর ভিত্তি করে পাবলিক আইপিগুলো লক্ষ্য করুন।

user@private-client:~$ dig us-central1-aiplatform.googleapis.com

; <<>> DiG 9.16.42-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33311
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A

;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.132.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.201.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.202.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.69.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.182.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.183.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.193.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.194.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.195.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.196.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.197.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.191.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.74.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.192.95
us-central1-aiplatform.googleapis.com. 300 IN A 209.85.145.95
us-central1-aiplatform.googleapis.com. 300 IN A 209.85.146.95

;; Query time: 4 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Sun Jul 02 20:5

sudo VI editor অথবা nano ব্যবহার করে প্রাইভেট-ক্লায়েন্ট ইনস্ট্যান্সের /etc/hosts ফাইলটি আপডেট করুন এবং PSC এন্ডপয়েন্ট 100.100.10.10-এর দিকে নির্দেশ করে Vertext AI FQDN us-central1-aiplatform.googleapis.com- এর একটি রেকর্ড তৈরি করুন, এ ছাড়া আর কোনো পরিবর্তনের প্রয়োজন নেই।

উদাহরণ:

user@private-client:~$ more /etc/hosts
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

100.100.10.10 us-central1-aiplatform.googleapis.com
192.168.20.2 private-client.c.$projectid.internal private-client  # Added by Google
169.254.169.254 metadata.google.internal  # Added by Google

প্রাইভেট-ক্লায়েন্ট ওএস থেকে ভার্টেক্স এপিআই এন্ডপয়েন্টে একটি পিং (PING) করুন।

ping us-central1-aiplatform.googleapis.com

উদাহরণস্বরূপ, PING করলে PSC এন্ডপয়েন্ট IP ফেরত আসে, অথচ কোনো উত্তর প্রত্যাশিত নয়।

user@private-client:~$ ping us-central1-aiplatform.googleapis.com
PING us-central1-aiplatform.googleapis.com (100.100.10.10) 56(84) bytes of data.

অনলাইন প্রেডিকশনের বিরুদ্ধে কার্ল (curl) চালানোর সময়, প্রাইভেট-ক্লায়েন্ট ওএস থেকে টিসিপিডাম্প (tcpdump) চালিয়ে পিএসসি এন্ডপয়েন্টের ডিএনএস রেজোলিউশন এবং আইপি ডেটাপাথ যাচাই করুন।

 sudo tcpdump -i any port 53 -n or host 100.100.10.10

"+" চিহ্নটি নির্বাচন করে চতুর্থ একটি ক্লাউড শেল টার্মিনাল খুলুন। নতুন ট্যাবটি খুলে গেলে, প্রজেক্ট নেম ভেরিয়েবলটি আপডেট করুন।

ক্লাউড শেলের ভিতরে, প্রোজেক্টের নামের ভেরিয়েবলটি আপডেট করুন।

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

ক্লাউড শেল চারের ভিতরে, প্রাইভেট-ক্লায়েন্ট ইনস্ট্যান্সে ssh করুন।

gcloud compute ssh --zone "us-central1-a" "private-client" --project "$projectid"

পরবর্তী অংশে, আপনি sudo VI editor অথবা nano ব্যবহার করে একটি instances.json ফাইল তৈরি করবেন এবং ডেপ্লয় করা মডেল থেকে প্রেডিকশন পাওয়ার জন্য ব্যবহৃত ডেটা স্ট্রিংটি তাতে প্রবেশ করাবেন।

প্রাইভেট-ক্লায়েন্ট অপারেটিং সিস্টেম থেকে, নিচের ডেটা স্ট্রিংটি দিয়ে একটি instances.json ফাইল তৈরি করুন:

{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

উদাহরণ:

user@private-client:$ more instances.json 
{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

user@private-client:$

প্রাইভেট-ক্লায়েন্ট ওএস থেকে নিম্নলিখিত ভেরিয়েবলগুলো তৈরি করুন:

gcloud config list project
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

উদাহরণ:

ENDPOINT_ID="3328226095324463104"

ক্লাউড শেল ফোর-এর প্রাইভেট-ক্লায়েন্ট ওএস থেকে মডেল থেকে প্রতিক্রিয়া পেতে একটি 'curl' কমান্ড চালান।

curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json

১৯. বৈধতা যাচাই - ভার্টেক্স এপিআই-তে ব্যক্তিগত অ্যাক্সেস

ক্লাউড শেল ফোর-এর প্রাইভেট-ক্লায়েন্ট ওএস থেকে লক্ষ্য করুন, ভার্টেক্স এপিআই অ্যাক্সেস করার জন্য পিএসসি এন্ডপয়েন্ট আইপি (100.100.10.10) ব্যবহার করা হয়েছিল।

user@private-client$ curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying 100.100.10.10:443...
* Connected to us-central1-aiplatform.googleapis.com (100.100.10.10) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=upload.video.google.com
*  start date: May 29 08:21:36 2023 GMT
*  expire date: Aug 21 08:21:35 2023 GMT
*  subjectAltName: host "us-central1-aiplatform.googleapis.com" matched cert's "*.googleapis.com"
*  issuer: C=US; O=Google Trust Services LLC; CN=GTS CA 1C3
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55f2ab65c2c0)
> POST /v1/projects/$projectid/locations/us-central1/endpoints/3328226095324463104:predict HTTP/2
> Host: us-central1-aiplatform.googleapis.com
> user-agent: curl/7.74.0
> accept: */*
> authorization: Bearer ya29.a0AbVbY6NdCbIJYj0mQROeq-xYgQCw534TTtjRc1kBAEOimKCFxb3gqgD5AvhfefJatSNr33eW1YJirfQVMptFoqfjRoB-i8zEJJ_GGCVqhsVnpSOjK0hzJQSuo2YGjIiSe1o1zdo7lWmh1Px-vLe8FImieGkrQ1hqVaa6aCgYKAXgSARESFQFWKvPlUQ_FuKB2hrDJRyFDjupL1g0171
> content-type: application/json
> content-length: 154
> 
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
* We are completely uploaded and fine
< HTTP/2 200 
< content-type: application/json; charset=UTF-8
< x-vertex-ai-internal-prediction-backend: harpoon
< date: Mon, 03 Jul 2023 22:13:35 GMT
< vary: X-Origin
< vary: Referer
< vary: Origin,Accept-Encoding
< server: scaffolding on HTTPServer2
< cache-control: private
< x-xss-protection: 0
< x-frame-options: SAMEORIGIN
< x-content-type-options: nosniff
< accept-ranges: none
< 
{
  "predictions": [
    "$479.0",
    "$586.0"
  ],
  "deployedModelId": "1949163636186415104",
  "model": "projects/234086459238/locations/us-central1/models/947543727654567936",
  "modelDisplayName": "diamonds-cpr",
  "modelVersionId": "1"
}
* Connection #0 to host us-central1-aiplatform.googleapis.com left intact

ক্লাউড শেল থ্রি-এর TCPDUMP টার্মিনাল থেকে আমরা যাচাই করতে পারি যে us-central1-aiplatform.googleapis.com- এ কোনো DNS লুকআপ পরিলক্ষিত হয়নি, কারণ /etc/host ফাইলটি প্রাধান্য পেলেও ডেটা পাথে PSC IP Address 100.100.10.10 ব্যবহৃত হয়েছিল।

user@private-client:~$ sudo tcpdump -i any port 53 -n or host 100.100.10.10
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
22:13:35.507625 ens4  Out IP 192.168.20.2.37004 > 169.254.169.254.53: 58585+ A? oauth2.googleapis.com. (39)
22:13:35.507631 ens4  Out IP 192.168.20.2.37004 > 169.254.169.254.53: 15580+ AAAA? oauth2.googleapis.com. (39)
22:13:35.511796 ens4  In  IP 169.254.169.254.53 > 192.168.20.2.37004: 58585 16/0/0 A 142.251.6.95, A 108.177.112.95, A 74.125.124.95, A 172.217.212.95, A 172.217.214.95, A 172.253.114.95, A 172.253.119.95, A 108.177.111.95, A 142.250.1.95, A 108.177.121.95, A 142.250.103.95, A 108.177.120.95, A 142.251.171.95, A 142.250.159.95, A 142.251.120.95, A 142.251.161.95 (295)
22:13:35.512002 ens4  In  IP 169.254.169.254.53 > 192.168.20.2.37004: 15580 4/0/0 AAAA 2607:f8b0:4001:c2b::5f, AAAA 2607:f8b0:4001:c18::5f, AAAA 2607:f8b0:4001:c5f::5f, AAAA 2607:f8b0:4001:c58::5f (151)
22:13:35.722145 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [S], seq 1951267724, win 65320, options [mss 1420,sackOK,TS val 1371205990 ecr 0,nop,wscale 7], length 0
22:13:35.730727 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [S.], seq 3198878726, ack 1951267725, win 65535, options [mss 1366,sackOK,TS val 67847676 ecr 1371205990,nop,wscale 8], length 0
22:13:35.730760 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 1, win 511, options [nop,nop,TS val 1371205999 ecr 67847676], length 0
22:13:35.738339 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 1:518, ack 1, win 511, options [nop,nop,TS val 1371206006 ecr 67847676], length 517
22:13:35.739922 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [.], ack 518, win 261, options [nop,nop,TS val 67847688 ecr 1371206006], length 0
22:13:35.740860 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [.], seq 1:2709, ack 518, win 261, options [nop,nop,TS val 67847689 ecr 1371206006], length 2708
22:13:35.740863 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [P.], seq 2709:4699, ack 518, win 261, options [nop,nop,TS val 67847689 ecr 1371206006], length 1990
22:13:35.740874 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 2709, win 497, options [nop,nop,TS val 1371206009 ecr 67847689], length 0
22:13:35.740886 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 4699, win 485, options [nop,nop,TS val 1371206009 ecr 67847689], length 0
22:13:35.742709 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 518:598, ack 4699, win 501, options [nop,nop,TS val 1371206011 ecr 67847689], length 80
22:13:35.743996 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 598:644, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 46
22:13:35.744011 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 644:693, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 49
22:13:35.744082 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 693:728, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 35
22:13:35.744165 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 728:1069, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 341

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

২০. পরিষ্কার করা

ক্লাউড শেল থেকে টিউটোরিয়াল উপাদানগুলো মুছে ফেলুন।

gcloud compute forwarding-rules delete pscvertex --global --quiet

gcloud compute instances delete workbench-tutorial --zone=us-central1-a --quiet 

gcloud compute addresses delete psc-ip --global --quiet

gcloud compute networks subnets delete workbench-subnet --region=us-central1 --quiet 

gcloud compute vpn-tunnels delete aiml-vpc-tunnel0 aiml-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet

gcloud compute vpn-gateways delete aiml-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet 

gcloud compute routers delete aiml-cr-us-central1 cloud-router-us-central1-aiml-nat --region=us-central1 --quiet 

gcloud compute routers delete cloud-router-us-central1-on-prem-nat on-prem-cr-us-central1 --region=us-central1 --quiet

gcloud compute instances delete nat-client private-client --zone=us-central1-a --quiet

gcloud compute firewall-rules delete ssh-iap-on-prem-vpc --quiet

gcloud compute networks subnets delete nat-subnet  private-ip-subnet --region=us-central1 --quiet

gcloud compute networks delete on-prem-vpc --quiet

gcloud compute networks delete aiml-vpc --quiet

ভার্টেক্স উপাদানগুলি মুছুন

কন্টেইনার ইমেজটি ডিলিট করতে, আর্টিফ্যাক্ট রেজিস্ট্রি-তে যান, আপনার তৈরি করা রিপোজিটরিটি সিলেক্ট করুন এবং ডিলিট সিলেক্ট করুন।

616a3108bc2e48c8.png

স্টোরেজ বাকেটটি ডিলিট করতে, আপনার ক্লাউড কনসোলের নেভিগেশন মেনু ব্যবহার করে স্টোরেজ-এ যান, আপনার বাকেটটি সিলেক্ট করুন এবং ডিলিট-এ ক্লিক করুন:

eddd1f9fdfaede8.png

এন্ডপয়েন্ট থেকে মডেলটি আনডিপ্লয় করুন। Vertex AI → Online prediction-এ যান → diamonds-cpr_endpoint নির্বাচন করুন → Undeploy Model from endpoint → Undeploy

bc95f092d21d4698.png

মডেলটি মুছে ফেলুন। Vertex AI → Model Registry → Delete Model-এ যান।

ec4afff091e11606.png

অনলাইন প্রেডিকশন এন্ডপয়েন্টটি মুছে ফেলুন। VertexAI → অনলাইন প্রেডিকশন → diamonds-cpr_endpoint নির্বাচন করুন → এন্ডপয়েন্ট মুছুন-এ যান।

7453760299bdfb9a.png

২১. অভিনন্দন

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

আপনি একটি nat-client এবং private-client তৈরি করেছেন এবং Vertex API-গুলোতে পৌঁছানোর জন্য ব্যবহৃত IP Address-গুলো যাচাই করতে TCPDUMP ব্যবহার করেছেন। এছাড়াও, আপনি Private Service Connect (googleapis) সম্পর্কে জেনেছেন এবং শিখেছেন কীভাবে একটি কাস্টমার PSC এন্ডপয়েন্ট কাজে লাগিয়ে অন-প্রিমিসেস ও মাল্টি-ক্লাউড অ্যাপ্লিকেশনগুলোকে আলাদা করা যায়।

কসমোপাপ মনে করে টিউটোরিয়ালগুলো অসাধারণ!!

e6d3675ca7c6911f.jpeg

এরপর কী?

এই টিউটোরিয়ালগুলো দেখে নিন...

আরও পড়ুন ও ভিডিও

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