একটি হাইব্রিড সংযোগের মাধ্যমে জেমিনি অ্যাক্সেস করতে Google API-এর জন্য ব্যক্তিগত পরিষেবা সংযোগ ব্যবহার করে৷

1. ভূমিকা

Google API-এর জন্য ব্যক্তিগত পরিষেবা সংযোগ (PSC) হল একটি Google ক্লাউড নেটওয়ার্কিং ক্ষমতা যা ব্যবহারকারীদের একটি VPC-এর মধ্যে একটি ব্যক্তিগত IP গ্লোবাল এন্ডপয়েন্টের মাধ্যমে ব্যক্তিগত অ্যাক্সেস কনফিগার করতে দেয়৷ যে ব্যবহারকারীরা একটি VPN বা ইন্টারকানেক্ট দ্বারা Google ক্লাউডের সাথে সংযুক্ত হাইব্রিড পরিবেশে কোড বা ক্লায়েন্ট সাইড অ্যাপ্লিকেশন চালাচ্ছেন তাদের জন্য, PSC সেই ব্যক্তিগত হাইব্রিড সংযোগের মাধ্যমে Google APIগুলি সমাধান করতে ব্যবহৃত হয়৷

Google API-এর জন্য PSC বিভিন্ন ডোমেন সমাধান করতে পারে, যার সম্পূর্ণ তালিকা এখানে পাওয়া যাবে। বেশিরভাগ Google API যে ডোমেনটি ব্যবহার করে তা হল <API>.googleapis.com৷ এই ডোমেনের সাথে, PSC ব্যবহারকারীদের googleapis.com-এর একটি সংস্করণও প্রদান করে যা হল <API>-<PSC-ENDPOINT-NAME>.**p.**googleapis.com। এই ডোমেন ব্যবহার করে, ব্যবহারকারীরা নির্দিষ্ট PSC এন্ডপয়েন্ট ব্যবহার করার জন্য অ্যাপ্লিকেশন কনফিগার করতে পারেন। সর্বাধিক সাধারণ ব্যবহারের ক্ষেত্রে ব্যবহারকারীরা বেছে নিতে দেয় যে কোন অ্যাপ্লিকেশনগুলি হাইব্রিড সংযোগের মাধ্যমে Google API ট্র্যাফিককে রুট করতে PSC এন্ডপয়েন্ট ব্যবহার করে, অন্য অ্যাপ্লিকেশনগুলিকে পাবলিক API এন্ডপয়েন্টে ট্র্যাফিক রুট করার অনুমতি দেয়।

Gemini Google Cloud এর Vertex AI প্রোডাক্ট স্যুটের অধীনে পড়ে এবং Google API-এর তালিকায় অন্তর্ভুক্ত করা হয়েছে যেগুলি Google API-এর জন্য PSC-এর মাধ্যমে সমাধান করা যেতে পারে।

এই কোডল্যাবে, আপনি একটি সিমুলেটেড হাইব্রিড পরিবেশ তৈরি করবেন, প্রিম-এ ওয়ার্কবেঞ্চ ইনস্ট্যান্স হোস্ট করবেন এবং জেমিনি পাইথন কোড চালাবেন যা একটি HA VPN-এর মাধ্যমে ব্যক্তিগতভাবে Gemini API অ্যাক্সেস করে, Google API-এর শেষ পয়েন্টের জন্য PSC-এর সাথে সংযোগ স্থাপন করবে।

আপনি কি শিখবেন

  • একটি NCC হাব তৈরি করুন।
  • একটি NCC হাবে VPC স্পোক কনফিগার করুন।
  • একটি ক্লাউড HA VPN তৈরি করুন।
  • একটি NCC হাবে হাইব্রিড স্পোক কনফিগার করুন।
  • Google API এর শেষ পয়েন্টের জন্য একটি PSC তৈরি করুন।
  • HA-VPN এর মাধ্যমে একটি কাস্টম রুট কনফিগার করুন।
  • একটি DNS পিয়ারিং জোন কনফিগার করুন।
  • একটি ভার্টেক্স ওয়ার্কবেঞ্চ ইনস্ট্যান্স কনফিগার করুন
  • Google APIs API এন্ডপয়েন্টের জন্য একটি PSC ব্যবহার করতে Gemini Python কোড কনফিগার করুন।

আপনি কি প্রয়োজন হবে

  • "মালিক" বা সম্পূর্ণ "সম্পাদক" অনুমতি সহ একটি Google ক্লাউড প্রকল্প৷

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

74f1027c8c8085f6.png

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

আপনি একটি NCC হাব তৈরি করবেন যাতে একটি VPC স্পোক হিসাবে একটি রাউটিং-ভিপিসি রয়েছে। সেই ভিপিসিতে, একটি HA-VPN অন-প্রিম ভিপিসি-তে কনফিগার করা হবে, যা একটি অন-প্রিম পরিবেশকে অনুকরণ করে। HA-VPN কে NCC হাবে হাইব্রিড স্পোক হিসাবে কনফিগার করা হবে। অন-প্রিম ভিপিসি-তে, আপনি একটি সাবনেট তৈরি করবেন যেখানে একটি ওয়ার্কবেঞ্চ ইনস্ট্যান্স হোস্ট করা হবে। আপনি ওয়ার্কবেঞ্চ ইনস্ট্যান্সে প্যাকেজ ডাউনলোড করার জন্য ব্যবহার করার জন্য একটি ক্লাউড NAT তৈরি করবেন।

অবশেষে, আপনি অন-প্রিম VPC-এর জন্য একটি DNS পিয়ারিং জোন তৈরি করবেন p.googleapis.com-এর জন্য পরিষেবা ডিরেক্টরি প্রাইভেট জোন ব্যবহার করতে সক্ষম হবেন যা Google API-এর জন্য PSC স্বয়ংক্রিয়ভাবে তৈরি করে।

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

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

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

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

4. আপনি শুরু করার আগে

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

ক্লাউড শেলের ভিতরে, নিশ্চিত করুন যে আপনার প্রকল্পটি সঠিকভাবে কনফিগার করা হয়েছে এবং আপনার পরিবেশের ভেরিয়েবল সেট করুন।

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

gcloud config list project
gcloud config set project <project-id>
export project=$(gcloud config get-value project)
export region=us-central1
export zone=$region-a
echo $project
echo $region
echo $zone

প্রকল্পে সমস্ত প্রয়োজনীয় Google API সক্রিয় করুন৷

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

gcloud services enable compute.googleapis.com
gcloud services enable networkconnectivity.googleapis.com
gcloud services enable dns.googleapis.com
gcloud services enable notebooks.googleapis.com
gcloud services enable servicedirectory.googleapis.com
gcloud services enable aiplatform.googleapis.com

5. ভিপিসি এবং সাবনেট তৈরি করুন

নেটওয়ার্ক তৈরি করুন

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

gcloud compute networks create routing-vpc \
    --subnet-mode=custom

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

gcloud compute networks create onprem-vpc \
    --subnet-mode=custom

gcloud compute networks subnets create onprem-$region-subnet \
    --network=onprem-vpc \
    --range=10.0.0.0/24 \
    --region=$region
    --enable-private-ip-google-access

ক্লাউড রাউটার এবং ক্লাউড NAT তৈরি করুন

একটি ক্লাউড রাউটার তৈরি করুন যা রাউটিং-ভিপিসি-তে HA VPN-এর সাথে ব্যবহার করা হবে।

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

gcloud compute routers create routing-$region-cr \
    --network=routing-vpc \
    --region=$region \
    --asn=64512

একটি ক্লাউড রাউটার তৈরি করুন যা onprem-vpc-এ HA VPN-এর সাথে ব্যবহার করা হবে।

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

gcloud compute routers create onprem-$region-cr \
    --network=onprem-vpc \
    --region=$region \
    --asn=64513

একটি ক্লাউড রাউটার তৈরি করুন যা onprem-vpc-এ Cloud NAT-এর সাথে ব্যবহার করা হবে।

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

gcloud compute routers create onprem-$region-cr-4nat \
    --network=onprem-vpc \
    --region=$region

অনপ্রেম-ভিপিসি-তে ক্লাউড NAT ভার্টেক্স এআই ওয়ার্কবেঞ্চ ইনস্ট্যান্সে প্যাকেজ ডাউনলোড করার জন্য ব্যবহার করা হবে যা পরবর্তী ধাপে কনফিগার করা হবে।

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

gcloud compute routers nats create onprem-$region-nat \
    --router=onprem-$region-cr-4nat \
    --region=$region \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips

6. ক্লাউড HA-VPN তৈরি করুন

ভিপিএন গেটওয়ে তৈরি করুন।

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

gcloud compute vpn-gateways create routing-gateway \
   --network=routing-vpc \
   --region=$region \
   --stack-type=IPV4_ONLY

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

gcloud compute vpn-gateways create onprem-gateway \
   --network=onprem-vpc \
   --region=$region \
   --stack-type=IPV4_ONLY

রাউটিং-ভিপিসি থেকে উদ্ভূত VPN টানেল তৈরি করুন।

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

gcloud compute vpn-tunnels create routing-to-onprem-tunnel0 \
    --peer-gcp-gateway=onprem-gateway \
    --region=$region \
    --ike-version=2 \
    --shared-secret=mysecret \
    --router=routing-$region-cr \
    --vpn-gateway=routing-gateway \
    --interface=0

gcloud compute vpn-tunnels create routing-to-onprem-tunnel1 \
    --peer-gcp-gateway=onprem-gateway \
    --region=$region \
    --ike-version=2 \
    --shared-secret=mysecret \
    --router=routing-$region-cr \
    --vpn-gateway=routing-gateway \
    --interface=1

onprem-vpc থেকে উদ্ভূত VPN টানেল তৈরি করুন।

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

gcloud compute vpn-tunnels create onprem-to-routing-tunnel0 \
    --peer-gcp-gateway=routing-gateway \
    --region=$region \
    --ike-version=2 \
    --shared-secret=mysecret \
    --router=onprem-$region-cr \
    --vpn-gateway=onprem-gateway \
    --interface=0

    gcloud compute vpn-tunnels create onprem-to-routing-tunnel1 \
    --peer-gcp-gateway=routing-gateway \
    --region=$region \
    --ike-version=2 \
    --shared-secret=mysecret \
    --router=onprem-$region-cr \
    --vpn-gateway=onprem-gateway \
    --interface=1

রাউটিং-ভিপিসি থেকে উদ্ভূত দুটি টানেলের জন্য BGP সেশন সেট আপ করুন।

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

gcloud compute routers add-interface routing-$region-cr \
    --interface-name=routing-interface0 \
    --ip-address=169.254.0.1 \
    --mask-length=30 \
    --vpn-tunnel=routing-to-onprem-tunnel0 \
    --region=$region

gcloud compute routers add-bgp-peer routing-$region-cr \
    --peer-name=routingtoonprem-bgp0 \
    --interface=routing-interface0 \
    --peer-ip-address=169.254.0.2 \
    --peer-asn=64513 \
    --region=$region

gcloud compute routers add-interface routing-$region-cr \
  --interface-name=routing-interface1 \
  --ip-address=169.254.1.1 \
  --mask-length=30 \
  --vpn-tunnel=routing-to-onprem-tunnel1 \
  --region=$region

gcloud compute routers add-bgp-peer routing-$region-cr \
    --peer-name=routingtoonprem-bgp1 \
    --interface=routing-interface1 \
    --peer-ip-address=169.254.1.2 \
    --peer-asn=64513 \
    --region=$region

onprem-vpc থেকে উদ্ভূত দুটি টানেলের জন্য BGP সেশন সেট আপ করুন।

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

gcloud compute routers add-interface onprem-$region-cr \
    --interface-name=onprem-interface0 \
    --ip-address=169.254.0.2 \
    --mask-length=30 \
    --vpn-tunnel=onprem-to-routing-tunnel0 \
    --region=$region

gcloud compute routers add-bgp-peer onprem-$region-cr \
    --peer-name=onpremtorouting-bgp0 \
    --interface=onprem-interface0 \
    --peer-ip-address=169.254.0.1 \
    --peer-asn=64512 \
    --region=$region

gcloud compute routers add-interface onprem-$region-cr \
  --interface-name=onprem-interface1 \
  --ip-address=169.254.1.2 \
  --mask-length=30 \
  --vpn-tunnel=onprem-to-routing-tunnel1 \
  --region=$region

gcloud compute routers add-bgp-peer onprem-$region-cr \
    --peer-name=onpremtorouting-bgp1 \
    --interface=onprem-interface1 \
    --peer-ip-address=169.254.1.1 \
    --peer-asn=64512 \
    --region=$region

কনসোলে নেটওয়ার্ক কানেক্টিভিটি > VPN পৃষ্ঠাতে যান এবং নিশ্চিত করুন যে আপনার HA-VPN টানেল এবং BGP সেশনগুলি সঠিকভাবে কনফিগার করা আছে।

7. NCC হাব এবং স্পোকস কনফিগার করুন

NCC হাব তৈরি করুন

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

gcloud network-connectivity hubs create ncc-hub \
    --project="$project" \
    --preset-topology="mesh"

এনসিসি স্পোক তৈরি করুন

NCC gcloud-এর জন্য প্রয়োজন যে সমস্ত স্পোক সম্পূর্ণ পাথের নাম, বা URI-এর সাথে কনফিগার করা আছে।

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

gcloud compute networks describe routing-vpc

নিম্নলিখিত কমান্ডের জন্য রাউটিং-ভিপিসির সম্পূর্ণ পাথ (URI) নোট করুন।

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

autoCreateSubnetworks: false
creationTimestamp: '2025-08-20T11:13:42.233-07:00'
id: 'xxx'
kind: compute#network
name: routing-vpc
networkFirewallPolicyEnforcementOrder: AFTER_CLASSIC_FIREWALL
routingConfig:
  bgpBestPathSelectionMode: LEGACY
  routingMode: REGIONAL
selfLink: https://www.googleapis.com/compute/v1/projects/$project/global/networks/routing-vpc
selfLinkWithId: https://www.googleapis.com/compute/v1/projects/$project/global/networks/355666541188722361
x_gcloud_bgp_routing_mode: REGIONAL
x_gcloud_subnet_mode: CUSTOM

রাউটিং VPC স্পোক কনফিগার করুন

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

gcloud network-connectivity spokes linked-vpc-network create routing-vpc \
    --hub=ncc-hub \
    --vpc-network=projects/$project/global/networks/routing-vpc \
    --global

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

gcloud compute vpn-tunnels describe routing-to-onprem-tunnel0 --region=$region
gcloud compute vpn-tunnels describe routing-to-onprem-tunnel1 --region=$region

রাউটিং-ভিপিসি থেকে উদ্ভূত VPN টানেলের জন্য সম্পূর্ণ পাথ (URIs) নোট করুন।

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

creationTimestamp: '2025-08-20T11:33:37.494-07:00'
description: ''
detailedStatus: Tunnel is up and running.
id: 'xxx'
ikeVersion: 2
kind: compute#vpnTunnel
labelFingerprint: xxx
localTrafficSelector:
- 0.0.0.0/0
name: routing-to-onprem-tunnel0
peerGcpGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/onprem-gateway
peerIp: 34.153.54.166
region: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1
remoteTrafficSelector:
- 0.0.0.0/0
router: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/routers/routing-us-central1-cr
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnTunnels/routing-to-onprem-tunnel0
sharedSecret: '*************'
sharedSecretHash: xxx
status: ESTABLISHED
vpnGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/routing-gateway

vpnGatewayInterface: 0
creationTimestamp: '2025-08-20T11:33:41.829-07:00'
description: ''
detailedStatus: Tunnel is up and running.
id: 'xxx'
ikeVersion: 2
kind: compute#vpnTunnel
labelFingerprint: xxx
localTrafficSelector:
- 0.0.0.0/0
name: routing-to-onprem-tunnel1
peerGcpGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/onprem-gateway
peerIp: 34.153.246.117
region: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1
remoteTrafficSelector:
- 0.0.0.0/0
router: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/routers/routing-us-central1-cr
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnTunnels/routing-to-onprem-tunnel1
sharedSecret: '*************'
sharedSecretHash: xxx
status: ESTABLISHED
vpnGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/routing-gateway
vpnGatewayInterface: 1

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

gcloud network-connectivity spokes linked-vpn-tunnels create $region-vpn-spoke \
    --hub=ncc-hub \
  --vpn-tunnels=projects/$project/regions/$region/vpnTunnels/routing-to-onprem-tunnel0,projects/$project/regions/$region/vpnTunnels/routing-to-onprem-tunnel1 \
    --region=$region 

আপনি এগিয়ে যাওয়ার আগে আপনার সমস্ত স্পোক সঠিকভাবে কনফিগার করা হয়েছে তা নিশ্চিত করতে পরীক্ষা করুন।

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

gcloud network-connectivity hubs list-spokes ncc-hub

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

NAME: routing-vpc
GROUP: default
PROJECT: $project
LOCATION: global
TYPE: VPC_NETWORK
STATE: ACTIVE
STATE REASON: 
ETAG: 2

NAME: us-central1-vpn-spoke
GROUP: default
PROJECT: $project
LOCATION: us-central1
TYPE: VPN_TUNNEL
STATE: ACTIVE
STATE REASON: 
ETAG: 

8. Google API-এর জন্য ব্যক্তিগত পরিষেবা সংযোগ সেট আপ করুন৷

Google API-এর জন্য PSC এন্ডপয়েন্টগুলি বিশ্বব্যাপী IP ঠিকানাগুলি থেকে তৈরি করা হয় যেগুলি একটি আঞ্চলিক VPC সাবনেটে বসে না। বিশ্বব্যাপী IP ঠিকানাটি অবশ্যই PRIVATE_SERVICE_CONNECT এর উদ্দেশ্যের সাথে সংরক্ষিত থাকতে হবে৷

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

gcloud compute addresses create psc-ip \
  --global \
  --purpose=PRIVATE_SERVICE_CONNECT \
  --addresses=10.100.100.0 \
  --network=routing-vpc

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

gcloud compute forwarding-rules create psc4googep \
  --global \
  --network=routing-vpc \
  --address=psc-ip \
  --target-google-apis-bundle=all-apis \
  --service-directory-registration=projects/$project/locations/$region

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

gcloud compute routers update routing-$region-cr \
   --project=$project \
   --region=$region \
   --advertisement-mode custom \
   --set-advertisement-groups=ALL_SUBNETS \
   --set-advertisement-ranges=10.100.100.0/32

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

gcloud dns managed-zones create peeringzone \
    --description="dns peer onprem to routing" \
    --dns-name=p.googleapis.com \
    --networks=onprem-vpc \
    --target-network=routing-vpc \
    --target-project=$project \
    --visibility=private

9. ভার্টেক্স ওয়ার্কবেঞ্চ ইনস্ট্যান্স সেট আপ করুন

ওয়ার্কবেঞ্চ ইনস্ট্যান্স পরিচয়ের জন্য ব্যবহার করার জন্য একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন।

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

gcloud iam service-accounts create workbench-sa \
    --display-name="workbench-sa"

আপনার পরিষেবা অ্যাকাউন্টের পুরো নামটি নোট করুন এবং Vertex AI/Jemini-এ কল চালানোর জন্য aiplatform.admin-কে অনুমতি দিন।

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

gcloud iam service-accounts list

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

DISPLAY NAME: Compute Engine default service account
EMAIL: xxx-compute@developer.gserviceaccount.com
DISABLED: False

DISPLAY NAME: workbench-sa
EMAIL: workbench-sa@$project.iam.gserviceaccount.com
DISABLED: False

নিশ্চিত করুন যে আপনি <your-project-id> আপনার প্রকৃত প্রকল্প আইডি দিয়ে প্রতিস্থাপন করেছেন। প্রয়োজনীয় উদ্ধৃতিগুলির কারণে আমরা এখানে $project পরিবর্তনশীল ব্যবহার করতে পারি না।

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

gcloud projects add-iam-policy-binding $project --member='serviceAccount:workbench-sa@<your-project-id>.iam.gserviceaccount.com' --role='roles/aiplatform.admin' --condition=None

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

gcloud workbench instances create workbench-$region --vm-image-project=cloud-notebooks-managed --vm-image-family=workbench-instances --location=$region-a --network=projects/$project/global/networks/onprem-vpc --subnet=projects/$project/regions/$region/subnetworks/onprem-$region-subnet --subnet-region=$region --disable-public-ip --service-account-email=workbench-sa@$project.iam.gserviceaccount.com

ওয়ার্কবেঞ্চ ইনস্ট্যান্সের প্রভিশনিং gcloud কমান্ডের চেয়ে বেশি সময় নিতে পারে।

10. মিথুন কোড পরীক্ষা করুন

UI-তে, "Open JupyterLab" এ ক্লিক করুন।

1b7ff959f1072aaa.png

জুপিটারল্যাবে একবার, একটি নতুন পাইথন 3 নোটবুক খুলুন।

18c26d06183faca1.png

নোটবুকে নিম্নলিখিত কোডটি চালান। আপনার নির্দিষ্ট প্রকল্প এবং অঞ্চলের তথ্য অন্তর্ভুক্ত করার জন্য আপনি কোড আপডেট করেছেন তা নিশ্চিত করুন।

JupyterLab নোটবুক থেকে

pip install --upgrade google-genai

নোটবুক কার্নেল পুনরায় চালু করুন।

fe7911ce8b54ff8a.png

API এন্ডপয়েন্ট নোট করুন। এখানে আমরা API এন্ডপয়েন্ট <YOUR_REGION>-aiplatform.googleapis.com ব্যবহার করছি। এটি Vertex AI এর জন্য আদর্শ API শেষ পয়েন্ট।

JupyterLab নোটবুক থেকে

PROJECT_ID="YOUR_PROJECT_ID" # Google Cloud Project ID
LOCATION_ID="YOUR_REGION" # Enter Vertex AI Gemini region such a s us-central1
API_ENDPOINT="https://<YOUR_REGION>-aiplatform.googleapis.com" # API Endpoint
MODEL_ID="gemini-2.0-flash" # Gemini Model ID

from google import genai
from google.genai.types import (
    GenerateContentConfig,
    HarmBlockThreshold,
    HarmCategory,
    Part,
    SafetySetting,
)

JupyterLab নোটবুক থেকে

from google import genai

client= genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION_ID, http_options={'base_url': API_ENDPOINT})

prompt = "what weighs more, 1kg of feathers or 1kg of stones"

safety_settings = [
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_HARASSMENT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_HATE_SPEECH,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
]

response = client.models.generate_content(
    model=MODEL_ID,
    contents=prompt,
    config=GenerateContentConfig(
        safety_settings=safety_settings,
    ),
)

# Response will be `None` if it is blocked.
print(response.text)

নমুনা প্রতিক্রিয়া

This is a classic trick question! They both weigh the same: 1 kilogram. The difference is in the volume they occupy and the density of the materials.

আপনি কোড চালানোর সময় যে API নামটি ব্যবহার করেছিলেন তা নোট করুন। YOUR_REGION-aiplatform.googleapis.com হল Vertex AI এর ডিফল্ট API নাম। আমাদের API নাম পরিবর্তন করতে হবে এবং কোডটি আবার চালাতে হবে। ওয়ার্কবেঞ্চ ইনস্ট্যান্সে একটি টার্মিনালে একটি TCPdump চালানোর মাধ্যমে আমরা নিশ্চিত করতে পারি যে কোডটি PSC এন্ডপয়েন্ট ব্যবহার করছে।

একটি টার্মিনালে একটি TCPdump চালান

ফাইল > নতুন > টার্মিনাল ক্লিক করে ওয়ার্কবেঞ্চে একটি টার্মিনাল খুলুন।

2cc405367de1f4c2.png

টার্মিনালে টেক্সট আউটপুট দেখতে সমস্যা হলে আপনাকে আপনার টার্মিনাল থিম আপডেট করতে হবে। সেটিংস > টার্মিনাল থিম > হালকা বা অন্ধকারে এটি করুন৷

টার্মিনাল থেকে

sudo tcpdump host 10.100.100.0

মিথুন কোড আপডেট করুন

নোটবুকে ফিরে যান, API এন্ডপয়েন্ট আপডেট করুন এবং কোডটি আবার চালান। মনে রাখবেন যে আমরা API এন্ডপয়েন্ট পরিবর্তন করে <YOUR_REGION>-aiplatform**-psc4googep.p**.googleapis.com করেছি। এটি PSC নির্দিষ্ট API ফর্ম্যাট <service>-<endpointname>.p.googleapis.com-এর সাথে সারিবদ্ধ করে।

JupyterLab নোটবুক থেকে

API_ENDPOINT="https://<YOUR_REGION>-aiplatform-psc4googep.p.googleapis.com" # API Endpoint

JupyterLab নোটবুক থেকে

from google import genai
from google.genai.types import (
    GenerateContentConfig,
    HarmBlockThreshold,
    HarmCategory,
    Part,
    SafetySetting,
)

JupyterLab নোটবুক থেকে

from google import genai

client= genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION_ID, http_options={'base_url': API_ENDPOINT})

prompt = "what weighs more, 1kg of feathers or 1kg of stones"

safety_settings = [
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_HARASSMENT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_HATE_SPEECH,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
]

response = client.models.generate_content(
    model=MODEL_ID,
    contents=prompt,
    config=GenerateContentConfig(
        safety_settings=safety_settings,
    ),
)

# Response will be `None` if it is blocked.
print(response.text)

নমুনা প্রতিক্রিয়া

They weigh the same. 1 kg is 1 kg, regardless of what it's made of.

TCPdump চেক করুন

টার্মিনালে ফিরে যান এবং PSC এন্ডপয়েন্টে কলগুলি দেখুন (10.100.100.0)। TCPdump শেষ করুন (কন্ট্রোল+সি)

নমুনা আউটপুট

listening on ens4, link-type EN10MB (Ethernet), snapshot length 262144 bytes
19:12:01.473886 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [S], seq 3367930834, win 65320, options [mss 1420,sackOK,TS val 2933602967 ecr 0,nop,wscale 7], length 0
19:12:01.476561 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [S.], seq 1863301110, ack 3367930835, win 65535, options [mss 1366,sackOK,TS val 3004118895 ecr 2933602967,nop,wscale 8], length 0
19:12:01.476602 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [.], ack 1, win 511, options [nop,nop,TS val 2933602969 ecr 3004118895], length 0
19:12:01.477283 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [P.], seq 1:1573, ack 1, win 511, options [nop,nop,TS val 2933602970 ecr 3004118895], length 1572
19:12:01.478836 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [.], ack 1573, win 1045, options [nop,nop,TS val 3004118898 ecr 2933602970], length 0
19:12:01.480181 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [P.], seq 1:6041, ack 1573, win 1045, options [nop,nop,TS val 3004118899 ecr 2933602970], length 6040
19:12:01.480183 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [P.], seq 6041:8378, ack 1573, win 1045, options [nop,nop,TS val 3004118899 ecr 2933602970], length 2337
19:12:01.480215 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [.], ack 6041, win 485, options [nop,nop,TS val 2933602973 ecr 3004118899], length 0
19:12:01.480225 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [.], ack 8378, win 473, options [nop,nop,TS val 2933602973 ecr 3004118899], length 0
19:12:01.482580 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [P.], seq 1573:1653, ack 8378, win 501, options [nop,nop,TS val 2933602975 ecr 3004118899], length 80

সাফল্য!

11. পরিষ্কার করার পদক্ষেপ

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

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

gcloud config list project
gcloud config set project <project-id>
export project=$(gcloud config get-value project)
export region=us-central1
export zone=$region-a
echo $project
echo $region
echo $zone

সমস্ত সংস্থান মুছুন।

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

gcloud workbench instances delete workbench-$region --location=$zone -q

gcloud iam service-accounts delete workbench-sa@$project.iam.gserviceaccount.com -q

gcloud dns managed-zones delete peeringzone -q

gcloud compute forwarding-rules delete psc4googep --global -q

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

gcloud network-connectivity spokes delete $region-vpn-spoke --region=$region -q

gcloud network-connectivity spokes delete routing-vpc --global -q

gcloud network-connectivity hubs delete ncc-hub -q

gcloud compute vpn-tunnels delete onprem-to-routing-tunnel1 --region=$region --project=$project -q

gcloud compute vpn-tunnels delete onprem-to-routing-tunnel0 --region=$region --project=$project -q

gcloud compute vpn-tunnels delete routing-to-onprem-tunnel1 --region=$region --project=$project -q

gcloud compute vpn-tunnels delete routing-to-onprem-tunnel0 --region=$region --project=$project -q

gcloud compute vpn-gateways delete onprem-gateway --region=$region --project=$project -q

gcloud compute vpn-gateways delete routing-gateway --region=$region --project=$project -q

gcloud compute routers nats delete onprem-$region-nat --router=onprem-$region-cr-4nat --region=$region -q

gcloud compute routers delete onprem-$region-cr-4nat --region=$region -q

gcloud compute routers delete onprem-$region-cr --region=$region -q

gcloud compute routers delete routing-$region-cr --region=$region -q

gcloud compute networks subnets delete onprem-$region-subnet --region=$region -q

gcloud compute networks delete onprem-vpc -q

gcloud compute networks delete routing-vpc -q

12. অভিনন্দন!

কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন।

আমরা কভার করেছি কি

  • একটি NCC হাব তৈরি করুন।
  • একটি NCC হাবে VPC স্পোক কনফিগার করুন।
  • একটি ক্লাউড HA VPN তৈরি করুন।
  • একটি NCC হাবে হাইব্রিড স্পোক কনফিগার করুন।
  • Google API এর শেষ পয়েন্টের জন্য একটি PSC তৈরি করুন।
  • HA-VPN এর মাধ্যমে একটি কাস্টম রুট কনফিগার করুন।
  • একটি DNS পিয়ারিং জোন কনফিগার করুন।
  • একটি ভার্টেক্স ওয়ার্কবেঞ্চ ইনস্ট্যান্স কনফিগার করুন
  • Google APIs API এন্ডপয়েন্টের জন্য একটি PSC ব্যবহার করতে Gemini Python কোড কনফিগার করুন।