প্রাইভেট সার্ভিস কানেক্ট: ক্লাউড রানের সাহায্যে পরিষেবা প্রকাশ এবং ব্যবহার করতে প্রাইভেট সার্ভিস কানেক্ট ব্যবহার করা

এই কোডল্যাব সম্পর্কে
schedule৬১ মিনিট
subject২৮ মার্চ, ২০২৫-এ শেষবার আপডেট করা হয়েছে
account_circleLorin Price-এর লেখা

প্রাইভেট সার্ভিস কানেক্ট (PSC) হল Google ক্লাউড নেটওয়ার্কিংয়ের একটি ক্ষমতা যা গ্রাহকদের তাদের VPC নেটওয়ার্কের ভিতর থেকে ব্যক্তিগতভাবে পরিচালিত পরিষেবাগুলি অ্যাক্সেস করতে দেয়। একইভাবে, এটি পরিচালিত পরিষেবা প্রযোজকদের তাদের নিজস্ব আলাদা ভিপিসি নেটওয়ার্কে এই পরিষেবাগুলি হোস্ট করতে এবং তাদের গ্রাহকদের একটি ব্যক্তিগত সংযোগ অফার করার অনুমতি দেয়।

ক্লাউড রান হল একটি পরিচালিত গণনা প্ল্যাটফর্ম যা আপনাকে সরাসরি Google এর মাপযোগ্য পরিকাঠামোর উপরে কন্টেইনার চালাতে দেয়।

ক্লাউড রান দুটি ভিন্ন উপায়ে একটি পিএসসি পরিষেবা হিসাবে ব্যবহার করা যেতে পারে।

  1. Google API-এর জন্য PSC-এর মাধ্যমে Cloud Run-এর মাধ্যমে Cloud Run-এর মাধ্যমে run.app URL প্রদান করা হয়েছে
  2. একটি কাস্টম PSC প্রযোজক পরিষেবার মাধ্যমে যেখানে ক্লাউড রান একটি সার্ভারহীন NEG সহ একটি অভ্যন্তরীণ অ্যাপ্লিকেশন লোড ব্যালেন্সারের মাধ্যমে একটি পরিষেবা সংযুক্তির মাধ্যমে উন্মুক্ত করা হয়।

এই কোডল্যাব এই উভয় পরিস্থিতির জন্য PSC-এর সাথে ক্লাউড রান কীভাবে সেট আপ করতে হয় তা অন্বেষণ করবে

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

  • ক্লাউড রানে মৌলিক অ্যাপ স্থাপন করা হচ্ছে
  • ক্লাউড রান ইনগ্রেস এবং এগ্রেস নিয়ন্ত্রণ
  • একটি সার্ভারহীন NEG সহ একটি অভ্যন্তরীণ অ্যাপ্লিকেশন লোড ব্যালেন্সারের মাধ্যমে ক্লাউড রান স্থাপন করা
  • একটি পরিষেবা সংযুক্তির মাধ্যমে একটি PSC প্রযোজক পরিষেবা সেট আপ করা
  • PSC এন্ডপয়েন্ট স্থাপন করা হচ্ছে

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

  • মালিকের অনুমতি সহ Google ক্লাউড প্রকল্প

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

455a040761a8fab9.png

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

ভোক্তা-ভিপিসি-তে অগ্রসর হয়ে, আপনি প্রযোজক-ভিপিসি-তে সেট আপ করা ক্লাউড রান পরিষেবা সংযুক্তির দিকে নির্দেশ করে একটি PSC এন্ডপয়েন্ট স্থাপন করবেন। তারপর আপনি যাচাই করবেন যে পরিষেবাটি ভোক্তা-ভিপিসি-তে গ্রাহক-ক্লায়েন্ট থেকে PSC-এর মাধ্যমে অ্যাক্সেসযোগ্য। এর পরে, আপনি আরেকটি ক্লাউড রান পরিষেবা তৈরি করবেন যা আপনার PSC এন্ডপয়েন্টকে কল করবে। অবশেষে, আপনি Google API-এর জন্য একটি PSC এন্ডপয়েন্ট স্থাপন করবেন। ভোক্তা-ক্লায়েন্ট থেকে, আপনি ক্লাউড রান প্রদত্ত URL এর মাধ্যমে ক্লাউড রান অ্যাক্সেস করবেন, যা 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 auth login
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
export projectid=[YOUR-PROJECT-ID]
export projectnum=[YOUR-PROJECT-NUM]
export region=us-central1
export zone=us-central1-a
echo $projectid
echo $projectnum
echo $region
echo $zone

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

gcloud services enable compute.googleapis.com
gcloud services enable run.googleapis.com
gcloud services enable servicedirectory.googleapis.com
gcloud services enable dns.googleapis.com
gcloud services enable cloudbuild.googleapis.com
gcloud services enable cloudresourcemanager.googleapis.com

5. প্রযোজক VPC নেটওয়ার্ক তৈরি করুন

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

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

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

সাবনেট তৈরি করুন

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

gcloud compute networks subnets create producer-subnet \
    --network=producer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

gcloud compute networks subnets create lb-proxy-subnet \
    --network=producer-vpc \
    --range=10.100.100.0/24 \
    --region=$region \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE

gcloud compute networks subnets create psc-nat-subnet \
    --network=producer-vpc \
    --region=$region \
    --range=10.100.101.0/24 \
    --purpose=PRIVATE_SERVICE_CONNECT

নেটওয়ার্ক ঠিকানা অনুবাদের উদ্দেশ্যে PSC সাবনেট PSC পরিষেবা সংযুক্তির সাথে যুক্ত হবে। উৎপাদন ব্যবহারের ক্ষেত্রে, সংযুক্ত এন্ডপয়েন্টের সংখ্যা সমর্থন করার জন্য এই সাবনেটটিকে যথাযথভাবে আকার দিতে হবে। আরও তথ্যের জন্য PSC NAT সাবনেট সাইজিং ডকুমেন্টেশন দেখুন।

প্রযোজক নেটওয়ার্ক ফায়ারওয়াল নীতি এবং ফায়ারওয়াল নিয়ম তৈরি করুন

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

gcloud compute network-firewall-policies create producer-vpc-policy --global

gcloud compute network-firewall-policies associations create \
    --firewall-policy producer-vpc-policy \
    --network producer-vpc \
    --name network-producer-vpc \
    --global-firewall-policy

IAP কে আপনার VM দৃষ্টান্তের সাথে সংযোগ করার অনুমতি দিতে, একটি ফায়ারওয়াল নিয়ম তৈরি করুন যা:

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

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

gcloud compute network-firewall-policies rules create 1000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "SSH with IAP" \
    --direction INGRESS \
    --src-ip-ranges 35.235.240.0/20 \
    --layer4-configs tcp:22  \
    --global-firewall-policy

6. হ্যালো ওয়ার্ল্ড ক্লাউড রান তৈরি করুন

পাইথনে একটি নমুনা অ্যাপ্লিকেশন লিখতে এখানে নির্দেশাবলী অনুসরণ করুন। ক্লাউড শেলে এই কমান্ডগুলি চালান। আপনি "নমুনা অ্যাপ্লিকেশন লিখুন" এর ধাপ 3 শেষ করার পরে এই কোডল্যাবে ফিরে যান এবং উত্স থেকে ক্লাউড রানে স্থাপন করতে নীচের নির্দেশাবলী অনুসরণ করুন৷

আপনার ক্লাউড রান পরিষেবা স্থাপন করার আগে, নিম্নলিখিত কমান্ডটি চালিয়ে আপনার ডিফল্ট কম্পিউট পরিষেবা অ্যাকাউন্টের যথাযথ অনুমতি রয়েছে তা নিশ্চিত করুন।

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

gcloud projects add-iam-policy-binding $projectid --member=serviceAccount:$projectnum-compute@developer.gserviceaccount.com --role=roles/run.builder

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

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

gcloud beta run deploy helloworld \
    --source . \
    --platform=managed \
    --ingress=internal \
    --allow-unauthenticated \
    --no-default-url \
    --region=$region

--no-default-url ফ্ল্যাগ ব্যবহার করা প্রদত্ত run.app URL ছাড়াই আপনার ক্লাউড রান পরিষেবা স্থাপন করবে৷ আমরা এই পরিষেবার জন্য URL ব্যবহার করা হবে না. এই কোডল্যাবের প্রকাশের সময়, এই বৈশিষ্ট্যটি এখনও পূর্বরূপ রয়েছে।

এগিয়ে যাওয়ার আগে, আপনার ক্লাউড শেলের প্রধান ডিরেক্টরিতে ফিরে যান।

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

cd ..

7. একটি অভ্যন্তরীণ অ্যাপ্লিকেশন লোড ব্যালেন্সারের মাধ্যমে হ্যালো ওয়ার্ল্ড ক্লাউড চালানোর প্রকাশ করুন৷

আপনার লোড ব্যালেন্সার ফরওয়ার্ডিং নিয়মের জন্য একটি স্ট্যাটিক অভ্যন্তরীণ IP ঠিকানা সংরক্ষণ করুন।

মেঘের শেলে

gcloud compute addresses create cloudrun-ip \
 --region=$region \
 --subnet=producer-subnet

gcloud compute addresses describe cloudrun-ip --region=$region

নমুনা আউটপুট

address: 10.0.1.31
addressType: INTERNAL
creationTimestamp: '2025-03-17T09:04:06.620-07:00'
description: ''
id: 'xxxx'
kind: compute#address
labelFingerprint: xxxx
name: cloudrun-ip
networkTier: PREMIUM
purpose: GCE_ENDPOINT
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/addresses/cloudrun-ip
status: RESERVED
subnetwork: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/producer-subnet

আপনি যে আইপি ঠিকানাটি তৈরি করেছেন তা নোট করুন।

আঞ্চলিক অভ্যন্তরীণ অ্যাপ্লিকেশন লোড ব্যালেন্সার তৈরি করুন

মেঘের শেলে

gcloud compute network-endpoint-groups create cloudrun-producer-neg \
    --region=$region \
    --network-endpoint-type=serverless \
    --cloud-run-service=helloworld

gcloud compute backend-services create cloudrun-producer-bes \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --protocol=HTTP \
    --region=$region

gcloud compute backend-services add-backend cloudrun-producer-bes \
        --region=$region \
        --network-endpoint-group=cloudrun-producer-neg \
        --network-endpoint-group-region=$region

gcloud compute url-maps create producer-urlmap \
        --default-service=cloudrun-producer-bes \
        --region=$region

gcloud compute target-http-proxies create producer-http-proxy \
        --url-map=producer-urlmap \
        --region=$region

মেঘের শেলে

gcloud compute forwarding-rules create cloudrun-fr \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=producer-vpc \
        --subnet=producer-subnet \
        --address=cloudrun-ip \
        --target-http-proxy=producer-http-proxy \
        --target-http-proxy-region=$region \
        --region=$region \
        --ports=80 \
        --allow-global-access

8. টেস্ট হ্যালো ওয়ার্ল্ড ক্লাউড রান লোড ব্যালেন্সারের মাধ্যমে উন্মুক্ত

টেস্ট VM তৈরি করুন

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

gcloud compute instances create producer-client \
    --zone=$zone \
    --subnet=producer-subnet \
    --no-address \
    --scopes=cloud-platform

মেঘের শেলে

gcloud compute ssh \
    --zone "$zone" "producer-client" \
    --tunnel-through-iap \
    --project $projectid

<loadbalancer-ip> আপনার আগে তৈরি করা IP ঠিকানা দিয়ে প্রতিস্থাপন করুন (উদাহরণ 10.0.0.2)।

টেস্ট হ্যালো ওয়ার্ল্ড

প্রযোজক-ভিএম-এ

curl <loadbalancer-ip>

প্রত্যাশিত আউটপুট

Hello World!

VM থেকে প্রস্থান করুন।

প্রযোজক-ভিএম-এ

exit

9. পরিষেবা সংযুক্তি তৈরি করুন

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

gcloud compute service-attachments create cloudrun-attachment \
    --region=$region \
    --producer-forwarding-rule=cloudrun-fr \
    --connection-preference=ACCEPT_MANUAL \
    --consumer-accept-list=$projectid=5 \
    --nat-subnets=psc-nat-subnet

এর পরে, ভোক্তা পরিবেশে PSC এন্ডপয়েন্ট কনফিগার করতে পরিষেবা সংযুক্তি URI পুনরুদ্ধার করুন এবং নোট করুন।

মেঘের শেলে

gcloud compute service-attachments describe cloudrun-attachment --region=$region

প্রত্যাশিত আউটপুটের উদাহরণ

connectionPreference: ACCEPT_MANUAL
consumerAcceptLists:
- connectionLimit: 5
  projectIdOrNum: $projectid
creationTimestamp: '2025-03-10T08:49:08.134-07:00'
description: ''
enableProxyProtocol: false
fingerprint: -F0Kpe3Fi8o=
id: '2679595584727463707'
kind: compute#serviceAttachment
name: cloudrun-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/psc-nat-subnet
pscServiceAttachmentId:
  high: 'xxxxx'
  low: 'xxxx'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/serviceAttachments/cloudrun-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$projectid/forwardingRules/cloudrun-fr

10. কনজিউমার ভিপিসি নেটওয়ার্ক তৈরি করুন

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

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

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

সাবনেট তৈরি করুন

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

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

gcloud compute networks subnets create cloudrun-egress \
    --network=consumer-vpc \
    --range=10.0.1.0/24 \
    --region=$region \
    --enable-private-ip-google-access

Cloud NAT তৈরি করুন

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

gcloud compute routers create central-cr \
    --network=consumer-vpc \
    --region=$region

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

কনজিউমার নেটওয়ার্ক ফায়ারওয়াল নীতি এবং ফায়ারওয়াল নিয়ম তৈরি করুন

আমরা ভোক্তা-ভিপিসির জন্য আরেকটি নেটওয়ার্ক ফায়ারওয়াল নীতি তৈরি করব।

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

gcloud compute network-firewall-policies create consumer-vpc-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy consumer-vpc-policy --network consumer-vpc --name network-consumer-vpc --global-firewall-policy

gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy consumer-vpc-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22  --global-firewall-policy

11. হ্যালো ওয়ার্ল্ড ক্লাউড রান সার্ভিসের জন্য PSC এন্ডপয়েন্ট তৈরি করুন

এই মুহুর্তে, আমরা একটি PSC এন্ডপয়েন্ট তৈরি করব এবং এটিকে ক্লাউড রান পরিষেবার সাথে সংযুক্ত করব যা আপনি পরিষেবা সংযুক্তির মাধ্যমে প্রকাশ করেছেন৷ আপনি পরিষেবা সংযুক্তি URI ব্যবহার করবেন যা আপনি এই বিভাগে আগে উল্লেখ করেছেন। gcloud কমান্ডের URI-এর বিন্যাস আপনার URI-এর সাথে মেলে তা নিশ্চিত করুন।

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

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

gcloud compute addresses create cloudrun-service-ip --region=$region --subnet=consumer-subnet --ip-version=IPV4


gcloud compute forwarding-rules create cloudrun-ep --region=$region --network=consumer-vpc --address=cloudrun-service-ip --target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/cloudrun-attachment

আপনার তৈরি করা PSC এন্ডপয়েন্টের IP ঠিকানা পান। আপনি শেষ পয়েন্ট পরীক্ষা করার জন্য পরবর্তী ধাপে IP ঠিকানা ব্যবহার করবেন।

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

gcloud compute addresses list --filter="name=cloudrun-service-ip"

প্রত্যাশিত আউটপুটের উদাহরণ

NAME: cloudrun-service-ip
ADDRESS/RANGE: 10.0.0.2
TYPE: INTERNAL
PURPOSE: GCE_ENDPOINT
NETWORK: 
REGION: us-central1
SUBNET: consumer-subnet
STATUS: IN_USE

12. ভোক্তা-ক্লায়েন্ট VM তৈরি করুন এবং এন্ডপয়েন্টে সংযোগ পরীক্ষা করুন

ভোক্তা-ক্লায়েন্ট VM তৈরি করুন

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

gcloud compute instances create consumer-client \
    --zone=$zone \
    --subnet=consumer-subnet \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install dnsutils -y'

কানেক্টিভিটি পরীক্ষা করুন

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

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

প্রকৃত IP ঠিকানা দিয়ে <cloudrun-service-ip> প্রতিস্থাপন করুন।

ভোক্তা-ক্লায়েন্ট VM থেকে

curl <cloudrun-service-ip>

প্রত্যাশিত আউটপুট

Hello World!

ভোক্তা-ক্লায়েন্ট VM থেকে

exit

13. ক্লাউড রান লুপ সার্ভিস তৈরি করুন

এর পরে আমরা একটি ক্লাউড রান পরিষেবা তৈরি করব যা PSC-এর মাধ্যমে আমাদের প্রকাশ করা আগের ক্লাউড রান হ্যালোওয়ার্ল্ড পরিষেবাটিতে কল করার জন্য গ্রাহক-ভিপিসি-তে একটি ব্যক্তিগত কল করবে৷

পিএইচপি-তে একটি লুপ অ্যাপ্লিকেশন লিখতে এখানে "নমুনা অ্যাপ্লিকেশন লিখুন" নির্দেশাবলী অনুসরণ করুন। আমি helloworld-php এর পরিবর্তে, আপনার ডিরেক্টরির নাম ক্লাউডরান-লুপ। ক্লাউড শেলে এই কমান্ডগুলি চালান। দ্বিতীয় ধাপে, আপনার index.php ফাইলে নিচের পিএইচপি কোডটি ব্যবহার করুন। আপনি যখন ক্লাউড রানে স্থাপন করতে প্রস্তুত তখন কোডল্যাবে ফিরে যান। এই ধাপের জন্য ডকুমেন্টেশনে নির্দেশাবলী অনুসরণ করবেন না।

আপনার index.php ফাইলের জন্য এই কোডটি ব্যবহার করুন। <cloudrun-service-ip> আপনার PSC এন্ডপয়েন্টের IP ঠিকানা দিয়ে প্রতিস্থাপন করুন যা আপনি পূর্ববর্তী ধাপে পরীক্ষা করেছেন।

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

<?php 

if(!function_exists('curl_init')) {
    die('cURL not available!');
}

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://<cloudrun-service-ip>/');
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$output = curl_exec($curl);
if ($output === FALSE) {
    echo 'An error has occurred: ' . curl_error($curl) . PHP_EOL;
}
else {
    echo $output;
}
?>

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

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

gcloud run deploy cloudrun-loop \
    --source . \
    --platform=managed \
    --ingress=internal \
    --allow-unauthenticated  \
    --vpc-egress=all-traffic \
    --network=consumer-vpc \
    --subnet=cloudrun-egress \
    --region=$region

ক্লাউড রান পরিষেবাটি স্থাপন করা শেষ হলে এটি https://cloudrun-loop-<projectnum>.<region>.run.app ফর্ম্যাটে একটি পরিষেবা URL প্রদান করবে৷ মনে রাখবেন এই URLটি পরবর্তী ধাপে পরীক্ষা করবে।

14. ক্লাউড রান ইউআরএলের মাধ্যমে ক্লাউডরান-লুপের সাথে কানেক্টিভিটি পরীক্ষা করুন

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

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

<Cloud-Run-ServiceURL> আগের ধাপে উল্লেখ করা পরিষেবা URL দিয়ে প্রতিস্থাপন করুন।

ভোক্তা-ক্লায়েন্ট VM থেকে

curl <Cloud-Run-ServiceURL>

প্রত্যাশিত আউটপুট

Hello World!

এই ফলাফলটি দেখায় যে আমাদের Hello World Cloud Run পরিষেবার সাথে সংযুক্ত আমাদের PSC এন্ডপয়েন্টে কল করার জন্য আমাদের CloudRun-Loop পরিষেবা সফলভাবে গ্রাহক-vpc-এ ফিরে আসছে৷ যাইহোক, এই মুহুর্তে, আমাদের গ্রাহক-ক্লায়েন্ট VM আমাদের পাবলিক ক্লাউড রান URL-এ কল করার জন্য আমাদের Cloud NAT-এর মাধ্যমে ইন্টারনেটে প্রস্থান করছে। আমরা ইউআরএলে একটি খনন চালাতে পারি তা দেখানোর জন্য যে এটি একটি সর্বজনীন আইপি ঠিকানায় সমাধান করবে।

ভোক্তা-ক্লায়েন্ট VM থেকে

dig <Cloud-Run-ServiceURL>

নমুনা আউটপুট

; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> https://cloudrun-loop-<projectnum>.<region>.run.app
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1938
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;https://cloudrun-loop-<projectnum>.<region>.run.app.        IN A

;; ANSWER SECTION:
https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.38.53
https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.36.53
https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.32.53
https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.34.53

;; Query time: 4 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Mar 11 19:05:36 UTC 2025
;; MSG SIZE  rcvd: 147

সর্বজনীন ইন্টারনেট বন্ধ রাখতে এই রেজোলিউশনটিকে ব্যক্তিগততে পরিবর্তন করতে আমরা Google API-এর শেষ পয়েন্টের জন্য একটি PSC তৈরি করতে পারি।

ভোক্তা-ক্লায়েন্ট VM থেকে

exit

15. Google APIs এন্ডপয়েন্টের জন্য PSC তৈরি করুন

এই PSC এন্ডপয়েন্টটি আমরা পূর্বে তৈরি করা থেকে আলাদা। Google API-এর জন্য PSC Google APIগুলির একটি বান্ডিলকে নির্দেশ করে (হয় সমস্ত API, বা VPC-SC সামঞ্জস্যপূর্ণ API)। আইপি অ্যাড্রেসটি কোনো আঞ্চলিক সাবনেট থেকে নেওয়া হয় না, বরং এটি একটি একক/32 আইপি অ্যাড্রেস হিসেবে তৈরি করা হয় যা গ্লোবাল যা কোনো বিদ্যমান ভিপিসি সাবনেট, পিয়ারড ভিপিসি সাবনেট বা হাইব্রিড রুটের সাথে ওভারল্যাপ করতে পারে না।

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

export pscgoogip=100.100.100.100

echo $pscgoogip

gcloud compute addresses create psc-goog-ep-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=$pscgoogip \
    --network=consumer-vpc

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

gcloud compute forwarding-rules create psc4googapi \
    --global \
    --network=consumer-vpc \
    --address=psc-goog-ep-ip \
    --target-google-apis-bundle=all-apis

16. run.app-এর জন্য ক্লাউড DNS প্রাইভেট জোন তৈরি করুন

যখন Google API-এর এন্ডপয়েন্টের জন্য একটি PSC তৈরি করা হয়, তখন googleapis.com ডোমেনের অধীনে থাকা সমস্ত API-এর জন্য একটি ক্লাউড রান ব্যক্তিগত DNS জোন তৈরি করা হবে। যেহেতু ক্লাউড রান run.app ব্যবহার করে, তাই Google API-এর এন্ডপয়েন্টের জন্য আমাদের PSC-তে run.app ম্যাপ করতে আমাদের আরেকটি ব্যক্তিগত জোন তৈরি করতে হবে।

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

gcloud dns managed-zones create "cloudrun" \
    --dns-name=run.app \
    --description="run.app psc resolution" \
    --visibility=private \
    --networks=consumer-vpc

gcloud dns record-sets transaction start \
   --zone="cloudrun"

gcloud dns record-sets transaction add $pscgoogip \
   --name=*.run.app \
   --ttl=300 \
   --type=A \
   --zone="cloudrun"

gcloud dns record-sets transaction execute \
   --zone="cloudrun"

17. ব্যক্তিগত DNS রেজোলিউশন পরীক্ষা করুন

আমরা আমাদের ভোক্তা-ক্লায়েন্ট VM-এ আবার লগ ইন করব এবং আবার ডিগ চালাব, এবং আমাদের এখন দেখা উচিত যে আমাদের ক্লাউড রান URL Google API-এর শেষ পয়েন্টের জন্য আমাদের PSC-তে সমাধান করবে।

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

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

প্রথমে আমরা DNS ক্যাশে সাফ করব। <ক্লাউড-রান-সার্ভিসইউআরএল> আপনার পূর্বে উল্লেখ করা পরিষেবা URL দিয়ে প্রতিস্থাপন করুন।

ভোক্তা-ক্লায়েন্ট VM থেকে

sudo resolvectl flush-caches

curl <CloudRun-Loop-ServiceURL>

কার্ল এখনও পূর্বে দেখা হিসাবে কাজ করা উচিত.

ভোক্তা-ক্লায়েন্ট VM থেকে

curl <CloudRun-Loop-ServiceURL>

প্রত্যাশিত আউটপুট

Hello World!

ভোক্তা-ক্লায়েন্ট VM থেকে

dig <CloudRun-Loop-ServiceURL>

খননটি দেখাবে যে আমাদের ক্লাউড রান লুপ পরিষেবাটি এখন Google API-এর শেষ পয়েন্টের জন্য আমাদের PSC-তে সমাধান করছে।

নমুনা আউটপুট

; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> https://cloudrun-loop-<projectnum>.<region>.run.app
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30179
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;https://cloudrun-loop-<projectnum>.<region>.run.app.        IN A

;; ANSWER SECTION:
https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 100.100.100.100

;; Query time: 8 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Mar 11 20:04:05 UTC 2025
;; MSG SIZE  rcvd: 99

সাফল্য!

18. পরিচ্ছন্নতার পদক্ষেপ

VM উদাহরণ থেকে প্রস্থান করুন

exit

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

gcloud dns record-sets delete *.run.app --zone="cloudrun" --type=A -q

gcloud dns managed-zones delete "cloudrun" -q

gcloud compute instances delete consumer-client --zone=$zone --project=$projectid -q

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

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

gcloud run services delete cloudrun-loop --region=$region -q 

gcloud artifacts docker images delete $region-docker.pkg.dev/$projectid/cloud-run-source-deploy/cloudrun-loop -q

gcloud compute forwarding-rules delete cloudrun-ep --region=$region -q

gcloud compute addresses delete cloudrun-service-ip --region=$region -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy consumer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy  --name=network-consumer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q

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

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

gcloud compute networks subnets delete consumer-subnet --region $region -q

এটা সম্ভব যে পরবর্তী দুটি কমান্ড চালানো "রিসোর্স ইন ইউজ" ত্রুটির সাথে ব্যর্থ হতে পারে। ক্লাউড রান ডক্স বলে যে কখনও কখনও ক্লাউড রান পরিষেবাটি মুছে ফেলার পরে সাবনেট সংস্থানগুলি প্রকাশ করতে ক্লাউড রান 1 থেকে 2 ঘন্টা সময় নেয়৷ আপনার মুছে ফেলা ব্যর্থ হলে, এই দুটি কমান্ড এড়িয়ে যান এবং পরবর্তী বিভাগে চালিয়ে যান তারপর কিছু সময় পরে মুছে ফেলার জন্য এই বিভাগে ফিরে যান।

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

gcloud compute networks subnets delete cloudrun-egress --region $region -q

gcloud compute networks delete consumer-vpc -q

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

gcloud compute service-attachments delete cloudrun-attachment --region=$region -q

gcloud compute instances delete producer-client --zone=$zone --project=$projectid -q

gcloud compute forwarding-rules delete cloudrun-fr --region=$region -q

gcloud compute target-http-proxies delete producer-http-proxy --region=$region -q

gcloud compute url-maps delete producer-urlmap --region=$region -q

gcloud compute backend-services delete cloudrun-producer-bes --region=$region -q

gcloud compute network-endpoint-groups delete cloudrun-producer-neg --region=$region -q

gcloud compute addresses delete cloudrun-ip --region=$region -q

gcloud run services delete helloworld --region=$region -q 

gcloud artifacts docker images delete $region-docker.pkg.dev/$projectid/cloud-run-source-deploy/helloworld -q

gcloud artifacts repositories delete cloud-run-source-deploy --location=$region -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy  --name=network-producer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete producer-vpc-policy --global -q

gcloud compute networks subnets delete lb-proxy-subnet --region $region -q

gcloud compute networks subnets delete psc-nat-subnet --region $region -q

gcloud compute networks subnets delete producer-subnet --region $region -q

gcloud compute networks delete producer-vpc -q

19. অভিনন্দন!

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

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

  • ক্লাউড রানে মৌলিক অ্যাপ স্থাপন করা হচ্ছে
  • ক্লাউড রান ইনগ্রেস এবং এগ্রেস নিয়ন্ত্রণ
  • একটি সার্ভারহীন NEG সহ একটি অভ্যন্তরীণ অ্যাপ্লিকেশন লোড ব্যালেন্সারের মাধ্যমে ক্লাউড রান স্থাপন করা
  • একটি পরিষেবা সংযুক্তির মাধ্যমে একটি PSC প্রযোজক পরিষেবা সেট আপ করা
  • PSC এন্ডপয়েন্ট স্থাপন করা হচ্ছে