প্রাইভেট সার্ভিস কানেক্ট মিউটেবিলিটি কোডল্যাব

১. ভূমিকা

প্রাইভেট সার্ভিস কানেক্ট হলো গুগল ক্লাউড নেটওয়ার্কিং-এর একটি সক্ষমতা, যা গ্রাহকদের তাদের ভিপিসি নেটওয়ার্কের ভেতর থেকে ব্যক্তিগতভাবে পরিচালিত পরিষেবাগুলো অ্যাক্সেস করার সুযোগ দেয়। একইভাবে, এটি পরিচালিত পরিষেবা প্রদানকারীদের তাদের নিজস্ব পৃথক ভিপিসি নেটওয়ার্কে এই পরিষেবাগুলো হোস্ট করতে এবং তাদের গ্রাহকদের একটি ব্যক্তিগত সংযোগ প্রদান করতে সক্ষম করে।

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

এই সময়ে, PSC পরিবর্তনশীলতা সমর্থন করবে

  • একই ধরনের লোড ব্যালেন্সার ফরওয়ার্ডিং নিয়মে স্থানান্তর (যেমন, নেটওয়ার্ক পাসথ্রু থেকে নেটওয়ার্ক পাসথ্রু)
  • ভিন্ন ধরনের লোড ব্যালেন্সার ফরওয়ার্ডিং নিয়মে স্থানান্তর (যেমন, নেটওয়ার্ক পাসথ্রু থেকে অ্যাপ্লিকেশন লোড ব্যালেন্সার)

PSC পরিবর্তনযোগ্যতা বিদ্যমান ফরওয়ার্ডিং নিয়ম সম্পাদনা সমর্থন করে না।

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

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

  • একটি সাধারণ অ্যাপাচি ওয়েব সার্ভিস তৈরি করুন যা একটি PSC প্রডিউসার সার্ভিস হিসেবে উন্মুক্ত থাকবে।
  • একটি PSC এন্ডপয়েন্ট তৈরি করুন।
  • গ্রাহক পরিষেবা কলগুলির জন্য একটি ক্লাউড ডিএনএস প্রাইভেট জোন তৈরি করুন।
  • PSC Mutability ব্যবহার করে সার্ভিস অ্যাটাচমেন্টের সাথে যুক্ত ফরওয়ার্ডিং রুলটি আপডেট করুন।

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

  • মালিকের অনুমতি সহ একটি গুগল ক্লাউড প্রজেক্ট
  • গুগল ক্লাউড নেটওয়ার্কিং সম্পর্কে প্রাথমিক জ্ঞান

২. পরীক্ষার পরিবেশ

ঐতিহ্যগতভাবে, প্রডিউসার এবং কনজিউমাররা ভিন্ন ভিন্ন প্রজেক্টে কাজ করে। সরলতার জন্য, আমরা সমস্ত কাজ একই প্রজেক্টে সম্পাদন করব, কিন্তু ব্যবহারকারী যদি ভিন্ন ভিন্ন প্রজেক্টে কাজ করতে পছন্দ করেন, সেই ক্ষেত্রে প্রতিটি ধাপকে প্রডিউসার বা কনজিউমার প্রজেক্ট হিসেবে চিহ্নিত করা হবে।

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

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

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

683e2b440a0cc07f.png

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

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

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

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

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

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

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

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

ক্লাউড শেল সক্রিয় করুন

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

গুগল ক্লাউড শেল টার্মিনালের স্ক্রিনশট, যা দেখাচ্ছে যে পরিবেশটি সংযুক্ত হয়েছে।

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

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

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

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

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export project=[YOUR-PROJECT-NAME]
export region=us-central1
export zone=$region-a
echo $project
echo $region
echo $zone

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

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

৫. প্রযোজক নেটওয়ার্ক গড়ে তুলুন [প্রযোজক প্রকল্প]

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

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

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

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

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

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

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

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

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

ক্লাউড NAT তৈরি করুন

আমাদের প্রডিউসার সার্ভিসগুলোর জন্য সঠিক প্যাকেজগুলো ইনস্টল করতে একটি ক্লাউড ন্যাট (Cloud NAT) প্রয়োজন।

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

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

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

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

নেটওয়ার্ক ফায়ারওয়াল নীতি ও নিয়ম তৈরি করুন

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

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

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

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

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

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

আমরা তিনটি ফায়ারওয়াল নিয়ম দিয়ে শুরু করব। একটি লোড ব্যালেন্সারের স্বাস্থ্য পরীক্ষার জন্য ভিএম-গুলোতে অ্যাক্সেসের অনুমতি দেবে (2000), একটি পিএসসি এনএটি রেঞ্জ থেকে ভিএম-গুলোতে অ্যাক্সেসের অনুমতি দেবে (3000), এবং একটি পরীক্ষার উদ্দেশ্যে সার্ভিস সাবনেটের ভিএম-গুলোর মধ্যে সংযোগের অনুমতি দেবে (4000)। আমরা সমস্ত নিয়ম পোর্ট 80-এর জন্য তৈরি করব, কারণ আমরা আমাদের সার্ভিসের জন্য এই পোর্টটি ব্যবহার করব।

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

gcloud compute network-firewall-policies rules create 2000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "LB healthchecks" \
    --direction INGRESS \
    --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

gcloud compute network-firewall-policies rules create 3000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access from PSC NAT subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.100.0.0/28 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

 gcloud compute network-firewall-policies rules create 4000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access between producer service VMs and testing client for testing purposes" \
    --direction INGRESS \
    --src-ip-ranges 10.0.0.0/28 \
    --layer4-configs tcp:80 \
    --global-firewall-policy

৬. প্রযোজক পরিষেবা তৈরি করুন [প্রযোজক প্রকল্প]

আমরা একটি আনম্যানেজড ইনস্ট্যান্স গ্রুপ ব্যবহার করে একটি সাধারণ অ্যাপাচি ওয়েব সার্ভিস তৈরি করব যা "আমি একটি প্রোডিউসার সার্ভিস" প্রদর্শন করবে।

ইনস্ট্যান্স তৈরি করুন

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

gcloud compute instances create producer-service-vm \
    --network producer-vpc \
    --subnet producer-service-subnet \
    --zone $zone \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "I am a Producer Service." | \
    tee /var/www/html/index.html
    systemctl restart apache2'

অব্যবস্থাপিত ইনস্ট্যান্স গ্রুপ তৈরি করুন

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

gcloud compute instance-groups unmanaged create producer-uig \
  --zone=$zone

আমরা এইমাত্র যে আনম্যানেজড ইনস্ট্যান্স গ্রুপটি তৈরি করেছি, তাতে producer-service-vm যোগ করুন।

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

gcloud compute instance-groups unmanaged add-instances producer-uig \
  --zone=$zone \
  --instances=producer-service-vm

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

প্রডিউসার সার্ভিসের ভার্সন ১-এর জন্য, আমরা একটি নেটওয়ার্ক পাসথ্রু লোড ব্যালান্সার ব্যবহার করে পোর্ট ৮০-তে সার্ভিসটিকে উন্মুক্ত করব।

পোর্ট ৮০-এর জন্য স্বাস্থ্য পরীক্ষাটি চালু করুন।

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

gcloud compute health-checks create http producer-hc \
        --region=$region

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

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

gcloud compute backend-services create producer-bes \
  --load-balancing-scheme=internal \
  --protocol=tcp \
  --region=$region \
  --health-checks=producer-hc \
  --health-checks-region=$region

gcloud compute backend-services add-backend producer-bes \
  --region=$region \
  --instance-group=producer-uig \
  --instance-group-zone=$zone

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

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

gcloud compute addresses create producer-fr-ip\
  --region $region \
  --subnet producer-fr-subnet \
  --addresses 192.168.0.2

পূর্বে তৈরি করা ব্যাকএন্ড সার্ভিস এবং আইপি অ্যাড্রেস ব্যবহার করে পোর্ট ৮০ উন্মুক্ত করে লোড ব্যালেন্সার ফরওয়ার্ডিং রুলটি তৈরি করুন।

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

gcloud compute forwarding-rules create producer-fr \
  --region=$region \
  --load-balancing-scheme=internal \
  --network=producer-vpc \
  --subnet=producer-fr-subnet \
  --address=producer-fr-ip \
  --ip-protocol=TCP \
  --ports=80 \
  --backend-service=producer-bes \
  --backend-service-region=$region

৭. প্রযোজক পরিষেবা পরীক্ষা করুন [প্রযোজক প্রকল্প]

প্রডিউসার-সার্ভিস-সাবনেটে একটি টেস্ট ভিএম তৈরি করুন, ভিএম-এ লগ ইন করুন এবং অ্যাপাচি সার্ভিসে একটি কল পরীক্ষা করুন।

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

 gcloud compute instances create producer-test-vm \
    --zone=$zone \
    --subnet=producer-service-subnet \
    --no-address

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

gcloud compute ssh producer-test-vm \
    --zone=$zone \
    --command="curl -s 192.168.0.2/index.html"

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

I am a Producer Service.

৮. সার্ভিস অ্যাটাচমেন্টের মাধ্যমে প্রযোজক পরিষেবা উন্মোচন করুন [প্রযোজক প্রকল্প]

সার্ভিস অ্যাটাচমেন্টটি তৈরি করুন। এটিকে আমাদের psc-nat-subnet ব্যবহার করে তৈরি করা ফরওয়ার্ডিং রুলটির সাথে যুক্ত করুন।

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

gcloud compute service-attachments create producer-attachment \
    --region=$region \
    --producer-forwarding-rule=producer-fr  \
    --connection-preference=ACCEPT_AUTOMATIC \
    --nat-subnets=psc-nat-subnet

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

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

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

নমুনা আউটপুট

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2026-02-10T07:50:04.250-08:00'
description: ''
enableProxyProtocol: false
fingerprint: xxx
id: 'xxx'
kind: compute#serviceAttachment
name: producer-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/psc-nat-subnet
pscServiceAttachmentId:
  high: 'xxx'
  low: 'xxx'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/producer-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-fr

প্রজেক্ট থেকে শুরু করে URI কপি করুন

উদাহরণ: projects/$project/regions/$region/serviceAttachments/producer-attachment

৯. ভোক্তা নেটওয়ার্ক গড়ে তুলুন [ভোক্তা প্রকল্প]

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

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

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

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

একটি একক সাবনেট স্থাপন করা হবে যেখানে আমরা PSC এন্ডপয়েন্ট এবং একটি টেস্ট ক্লায়েন্ট ভিএম স্থাপন করব।

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

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

নেটওয়ার্ক ফায়ারওয়াল নীতি ও নিয়ম তৈরি করুন

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

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

আমরা কনজিউমার-ভিপিসি-টিকেও SSH-এর জন্য IAP ব্যবহার করতে কনফিগার করব।

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

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

১০. প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট তৈরি করুন [কনজিউমার প্রজেক্ট]

PSC এন্ডপয়েন্টের জন্য ব্যবহৃত হবে এমন স্ট্যাটিক আইপি অ্যাড্রেসটি রিজার্ভ করুন।

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

gcloud compute addresses create psc-endpoint-ip \
    --region=$region \
    --subnet=consumer-subnet \
    --addresses 10.0.0.2

পূর্বে উল্লিখিত সংরক্ষিত স্ট্যাটিক আইপি অ্যাড্রেস এবং সার্ভিস অ্যাটাচমেন্ট ইউআরআই ব্যবহার করে পিএসসি এন্ডপয়েন্টটি তৈরি করুন।

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

gcloud compute forwarding-rules create psc-endpoint \
  --region=$region \
  --network=consumer-vpc \
  --address=psc-endpoint-ip \
  --target-service-attachment=projects/$project/regions/$region/serviceAttachments/producer-attachment

১১. পিএসসি এন্ডপয়েন্টের জন্য একটি প্রাইভেট ডিএনএস জোন কনফিগার করুন [কনজিউমার প্রজেক্ট]

ক্লাউড ডিএনএস ব্যবহার করে, আমরা myservice.com ডিএনএস নাম দিয়ে একটি প্রাইভেট ডিএনএস জোন কনফিগার করব, যা আমাদের পিএসসি এন্ডপয়েন্টের সাথে ব্যবহৃত হবে।

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

gcloud dns managed-zones create "consumer-service" \
    --dns-name=myservice.com \
    --description="consumer service dns" \
    --visibility=private \
    --networks=consumer-vpc

gcloud dns record-sets transaction start \
   --zone="consumer-service"

myservice.com- এর জন্য একটি A রেকর্ড তৈরি করুন এবং এটিকে PSC এন্ডপয়েন্ট IP অ্যাড্রেসের দিকে নির্দেশ করুন।

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

gcloud dns record-sets transaction add 10.0.0.2 \
   --name=myservice.com \
   --ttl=300 \
   --type=A \
   --zone="consumer-service"

gcloud dns record-sets transaction execute \
   --zone="consumer-service"

১২. পিএসসি এন্ডপয়েন্ট পরীক্ষা করুন [ভোক্তা প্রকল্প]

একটি ক্লায়েন্ট ভিএম তৈরি করুন

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

gcloud compute instances create consumer-client-vm \
    --zone=$zone \
    --subnet=consumer-subnet \
    --no-address

PSC এন্ডপয়েন্ট সংযোগ পরীক্ষা করুন

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

gcloud compute ssh consumer-client-vm \
    --zone=$zone \
    --command="curl -s myservice.com/index.html"

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

I am a Producer Service.

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

১৩. হালনাগাদকৃত প্রডিউসার সার্ভিস তৈরি করুন [প্রডিউসার প্রজেক্ট]

আমাদের প্রডিউসার সার্ভিস আপডেট করার জন্য, আমরা একটি নতুন ভিএম (VM) ডেপ্লয় করব, যেটিতে "আমি একটি নতুন প্রডিউসার সার্ভিস" বার্তা সহ একটি অনুরূপ অ্যাপাচি ওয়েব সার্ভার চলবে। আমরা সেই ভিএম-টিকে একটি নতুন আনম্যানেজড ইনস্ট্যান্স গ্রুপে যুক্ত করব এবং আমাদের নতুন লোড ব্যালান্সারের ব্যাকএন্ড হিসেবে সেটি ব্যবহার করব। নেটওয়ার্ক পাসথ্রু লোড ব্যালান্সার ব্যবহার করার পরিবর্তে, আমরা আমাদের লোড ব্যালান্সারকে একটি আঞ্চলিক অভ্যন্তরীণ অ্যাপ্লিকেশন লোড ব্যালান্সারে আপডেট করব।

নেটওয়ার্ক আপডেট করুন

একটি নতুন সাবনেট তৈরি করুন যা অ্যাপ্লিকেশন লোড ব্যালান্সারের জন্য প্রক্সি-অনলি সাবনেট হিসেবে ব্যবহৃত হবে।

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

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

একটি নতুন সাবনেট তৈরি করুন যেখানে আমাদের নতুন পরিষেবাটি হোস্ট করা হবে।

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

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

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

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

 gcloud compute network-firewall-policies rules create 3001 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access from proxy only subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.200.0.0/24 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

ইনস্ট্যান্স তৈরি করুন

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

gcloud compute instances create new-producer-service-vm \
    --network producer-vpc \
    --subnet producer-service-new-subnet \
    --zone $zone \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "I am a NEW Producer Service." | \
    tee /var/www/html/index.html
    systemctl restart apache2'

অব্যবস্থাপিত ইনস্ট্যান্স গ্রুপ তৈরি করুন

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

gcloud compute instance-groups unmanaged create producer-new-uig \
  --zone=$zone

gcloud compute instance-groups unmanaged add-instances producer-new-uig \
  --zone=$zone \
  --instances=new-producer-service-vm

gcloud compute instance-groups unmanaged set-named-ports producer-new-uig \
    --named-ports=http:80 \
    --zone=$zone

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

ব্যাকএন্ড সার্ভিসটি তৈরি করুন। উল্লেখ্য যে, আমরা INTERNAL_MANAGED লোড ব্যালান্সিং স্কিমটি ব্যবহার করছি, কারণ আমরা একটি অভ্যন্তরীণ অ্যাপ্লিকেশন লোড ব্যালান্সারে আপডেট করছি।

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

gcloud compute backend-services create producer-new-bes \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --protocol=http \
  --region=$region \
  --health-checks=producer-hc \
  --health-checks-region=$region

আনম্যানেজড ইনস্ট্যান্স গ্রুপটিকে ব্যাকএন্ড সার্ভিসে একটি ব্যাকএন্ড হিসেবে যুক্ত করুন।

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

gcloud compute backend-services add-backend producer-new-bes \
  --region=$region \
  --instance-group=producer-new-uig \
  --instance-group-zone=$zone

ইউআরএল ম্যাপ এবং টার্গেট এইচটিটিপি প্রক্সিগুলো তৈরি করুন।

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

gcloud compute url-maps create producer-url-map \
  --default-service=producer-new-bes \
  --region=$region

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

আমাদের ফরওয়ার্ডিং রুলের জন্য একটি স্ট্যাটিক আইপি অ্যাড্রেস তৈরি করুন। এটি সেই একই সাবনেট থেকে আসবে যা আমরা মূল ফরওয়ার্ডিং রুলের জন্য ব্যবহার করেছিলাম।

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

gcloud compute addresses create producer-fr-new-ip\
  --region $region \
  --subnet producer-fr-subnet \
  --addresses 192.168.0.3

ফরওয়ার্ডিং নিয়মটি তৈরি করুন।

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

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

১৪. আপডেট করা প্রোডিউসার সার্ভিস পরীক্ষা করুন [প্রোডিউসার প্রজেক্ট]

প্রাথমিকভাবে ডেপ্লয় করা সার্ভিসটি পরীক্ষা করার জন্য আমরা যে টেস্ট ভিএমটি তৈরি করেছিলাম, সেটিই ব্যবহার করব।

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

gcloud compute ssh producer-test-vm \
    --zone=$zone \
    --command="curl -s 192.168.0.3/index.html"

লক্ষ্য করুন যে আমরা একটি আপডেট করা আইপি অ্যাড্রেস ব্যবহার করছি! 192.168.0.3 হলো আমাদের আঞ্চলিক অভ্যন্তরীণ অ্যাপ্লিকেশন লোড ব্যালান্সারের আইপি অ্যাড্রেস।

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

I am a NEW Producer Service.

১৫. সার্ভিস অ্যাটাচমেন্ট আপডেট করুন [প্রযোজক প্রকল্প]

সার্ভিস অ্যাটাচমেন্ট ফরওয়ার্ডিং রুলের আপডেটটি আরও ভালোভাবে দেখার জন্য, আমরা পরিবর্তনের আগে ও পরে সার্ভিস অ্যাটাচমেন্টটির উপর একটি 'describe' কমান্ড চালাতে পারি।

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

gcloud compute service-attachments describe producer-attachment \
    --region=$region \
    --format="value(targetService)"

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

https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-fr

সার্ভিস অ্যাটাচমেন্টটি আপডেট করুন।

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

gcloud compute service-attachments update producer-attachment \
  --region=$region \
  --target-service=projects/$project/regions/$region/forwardingRules/new-producer-fr

এখন নতুন ফরওয়ার্ডিং নিয়মটি দেখতে describe কমান্ডটি আবার চালান।

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

gcloud compute service-attachments describe producer-attachment \
    --region=$region \
    --format="value(targetService)"

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

https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/new-producer-fr

১৬. কনজিউমার পিএসসি সংযোগ পুনরায় পরীক্ষা করুন [কনজিউমার প্রজেক্ট]

একই কনজিউমার ক্লায়েন্টে লগ ইন করুন।

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

gcloud compute ssh consumer-client-vm \
    --zone=$zone \
    --command="curl -s myservice.com/index.html"

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

 I am a NEW Producer Service.

অভিনন্দন! আপনি সফলভাবে একটি PSC প্রডিউসার সার্ভিস লোড ব্যালেন্সার আপডেট করেছেন এবং এর জন্য কনজিউমার প্রান্তে কোনো কনফিগারেশন পরিবর্তনের প্রয়োজন হয়নি!

১৭. পরিষ্করণ পদক্ষেপ [ভোক্তা প্রকল্প]

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

gcloud dns record-sets delete myservice.com --zone="consumer-service" --type=A -q

gcloud dns managed-zones delete "consumer-service" -q

gcloud compute forwarding-rules delete psc-endpoint --region=$region -q

gcloud compute addresses delete psc-endpoint-ip --region=$region -q

gcloud compute instances delete consumer-client-vm --zone=$zone --project $project -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 networks subnets delete consumer-subnet --region $region -q

gcloud compute networks delete consumer-vpc -q

১৮. পরিষ্করণ পদক্ষেপ [প্রযোজকের প্রকল্প]

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

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

gcloud compute instances delete producer-test-vm --zone=$zone --project $project -q

gcloud compute forwarding-rules delete new-producer-fr --region=$region -q

gcloud compute addresses delete producer-fr-new-ip --region $region -q

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

gcloud compute url-maps delete producer-url-map --region $region -q

gcloud compute backend-services delete producer-new-bes --region $region -q

gcloud compute instance-groups unmanaged delete producer-new-uig --zone $zone -q

gcloud compute instances delete new-producer-service-vm --zone $zone --project $project -q

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

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

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

gcloud compute addresses delete producer-fr-ip --region $region -q

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

gcloud compute health-checks delete producer-hc --region $region -q

gcloud compute instance-groups unmanaged delete producer-uig --zone $zone -q

gcloud compute instances delete producer-service-vm --zone $zone --project $project -q

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

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

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

gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -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 routers nats delete $region-nat --router=$region-cr --region=$region -q

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

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

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

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

gcloud compute networks delete producer-vpc -q

১৯. অভিনন্দন!

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

আমরা যা আলোচনা করেছি

  • একটি সাধারণ অ্যাপাচি ওয়েব সার্ভিস তৈরি করুন যা একটি PSC প্রডিউসার সার্ভিস হিসেবে উন্মুক্ত থাকবে।
  • একটি PSC এন্ডপয়েন্ট তৈরি করুন।
  • গ্রাহক পরিষেবা কলগুলির জন্য একটি ক্লাউড ডিএনএস প্রাইভেট জোন তৈরি করুন।
  • PSC Mutability ব্যবহার করে সার্ভিস অ্যাটাচমেন্টের সাথে যুক্ত ফরওয়ার্ডিং রুলটি আপডেট করুন।