ক্লাউড স্টোরেজ গ্লোবাল এন্ডপয়েন্ট এবং রিজিওনাল এন্ডপয়েন্টে ক্লাউড রান প্রাইভেট অ্যাক্সেস

১. ভূমিকা

গুগল এপিআই এন্ডপয়েন্ট

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

এপিআই এন্ডপয়েন্টের প্রকারভেদ সম্পর্কে জানতে অনুগ্রহ করে পণ্যের ডকুমেন্টেশন দেখুন।

এখানে বৈশ্বিক, আঞ্চলিক এবং অবস্থানগত এন্ডপয়েন্টগুলোর একটি বিশদ বিবরণ দেওয়া হলো:

  1. গ্লোবাল এন্ডপয়েন্ট
  • ফর্ম্যাট: {service}.googleapis.com (উদাহরণস্বরূপ, storage.googleapis.com)
  • বিবরণ: এই এন্ডপয়েন্টগুলো কোনো একটি পরিষেবাতে প্রবেশের জন্য একটি একক, বৈশ্বিক পথ প্রদান করে। এগুলো URL-এ কোনো অঞ্চল নির্দিষ্ট করে না।
  • রাউটিং: অনুরোধগুলি গ্লোবাল গুগল ফ্রন্ট এন্ডস (GFE) এবং গ্লোবাল সার্ভিস লোড ব্যালান্সিং দ্বারা রাউট করা হয়, যা সাধারণত লেটেন্সি কমানোর জন্য ট্র্যাফিককে নিকটতম সুস্থ অঞ্চলে প্রেরণ করে।
  • TLS টার্মিনেশন: এটি ক্লায়েন্টের সবচেয়ে কাছের GFE-তে সংঘটিত হয়, যা ডেটা বা রিসোর্সসমূহ যেখানে থাকে সেই Google Cloud অঞ্চলের বাইরে হতে পারে।
  • ডেটার স্থায়িত্ব: স্থানান্তরিত ডেটার জন্য কোনো নিশ্চয়তা প্রদান করা হয় না । GFE-তে ডিক্রিপশনের পর ডেটা আঞ্চলিক সীমানা অতিক্রম করতে পারে।
  • আঞ্চলিক বিচ্ছিন্নতা: সীমিত। যদিও ব্যাকএন্ডগুলো প্রায়শই আঞ্চলিক হয়, এন্ট্রি পয়েন্ট এবং লোড ব্যালান্সিং বৈশ্বিক, যার অর্থ হলো বৈশ্বিক অবকাঠামোর কোনো একটি অংশের সমস্যা অন্যান্য অঞ্চলের পরিষেবাগুলোকেও সম্ভাব্যভাবে প্রভাবিত করতে পারে।
  • ব্যবহারের ক্ষেত্র: সাধারণ অ্যাক্সেস, যেখানে ভৌগোলিকভাবে বিচ্ছিন্ন ব্যবহারকারীদের জন্য কম লেটেন্সি গুরুত্বপূর্ণ এবং স্থানান্তরের সময় ডেটার কঠোর স্থায়িত্ব একটি প্রাথমিক বিবেচ্য বিষয় নয়।
  1. আঞ্চলিক প্রান্তবিন্দু (REP)
  • ফর্ম্যাট: {পরিষেবা}.{অবস্থান}.rep.googleapis.com (উদাহরণস্বরূপ, storage.us-east1.rep.googleapis.com)
  • বিবরণ: এগুলো শক্তিশালী আঞ্চলিক বিচ্ছিন্নতা এবং ডেটা রেসিডেন্সির নিশ্চয়তা প্রদানের জন্য ডিজাইন করা হয়েছে। অবস্থানটি (একটি নির্দিষ্ট গুগল ক্লাউড অঞ্চল) একটি সাবডোমেইন হিসেবে নির্দিষ্ট করা হয়। এটিই আধুনিক মান এবং এটি লোকেশনাল এন্ডপয়েন্টগুলোকে প্রতিস্থাপন করছে।
  • রাউটিং: একটি সম্পূর্ণ আঞ্চলিক ফ্রন্টএন্ড স্ট্যাক ব্যবহার করে, যার মধ্যে রয়েছে রিজিওনাল এক্সটার্নাল লোড ব্যালান্সার এবং রিজিওনাল সার্ভিস লোড ব্যালান্সিং। ডিএনএস থেকে সার্ভিস ব্যাকএন্ড পর্যন্ত সম্পূর্ণ রিকোয়েস্ট পাথ নির্দিষ্ট অঞ্চলের মধ্যেই থাকে।
  • টিএলএস টার্মিনেশন: রিজিওনাল এক্সটার্নাল লোড ব্যালেন্সারগুলিতে নির্দিষ্ট অঞ্চলের মধ্যে সংঘটিত হয়।
  • ডেটার স্থায়িত্ব: কঠোর পরিপালন এবং সার্বভৌমত্বের শর্তাবলী মেনে, ডেটা স্থানান্তর এবং ব্যবহার উভয় অবস্থাতেই নির্ধারিত অঞ্চলের মধ্যে থাকে তা নিশ্চিত করে।
  • আঞ্চলিক বিচ্ছিন্নতা: শক্তিশালী। একটি অঞ্চলের ফ্রন্টএন্ড অবকাঠামোগত ব্যর্থতা অন্যান্য অঞ্চলকে প্রভাবিত করে না।
  • ব্যবহারের ক্ষেত্র: যেসব অ্যাপ্লিকেশনের জন্য কঠোর ডেটা রেসিডেন্সি, উচ্চ আঞ্চলিক বিচ্ছিন্নতা এবং কমপ্লায়েন্স প্রয়োজন।

অনুগ্রহ করে মনে রাখবেন, সব গুগল এপিআই-এর আঞ্চলিক এন্ডপয়েন্ট নেই এবং সমর্থিত সমস্ত আঞ্চলিক এন্ডপয়েন্টের জন্য এখানে দেখুন।

বহু-অঞ্চলীয় আঞ্চলিক এন্ডপয়েন্ট (mREP)-গুলোও আঞ্চলিক এন্ডপয়েন্ট, যেমন us (মার্কিন যুক্তরাষ্ট্র), eu (ইউরোপীয় ইউনিয়ন) ইত্যাদি। (উদাহরণস্বরূপ, storage.us.rep.googleapis.com)

  1. অবস্থানগত প্রান্তবিন্দু (LEP)
  • ফর্ম্যাট: {location}-{service}.googleapis.com (উদাহরণস্বরূপ, us-east1-storage.googleapis.com)
  • বিবরণ: এই এন্ডপয়েন্টগুলো ছিল অবস্থান-ভিত্তিক অ্যাক্সেস প্রদানের একটি পূর্ববর্তী পদ্ধতি। অবস্থানটি মূল হোস্টনেমের একটি অংশ। দ্রষ্টব্য: অবস্থান-ভিত্তিক এন্ডপয়েন্টগুলোর পরিবর্তে আঞ্চলিক এন্ডপয়েন্ট চালু করা হচ্ছে।
  • রাউটিং: এখনও গ্লোবাল গুগল ফ্রন্ট এন্ড-এর উপর নির্ভরশীল।
  • TLS টার্মিনেশন: সাধারণত GFE-তে ঘটে, যা হোস্টনেমে উল্লেখিত অঞ্চলে নাও থাকতে পারে।
  • ডেটার অবস্থান: পাবলিক ইন্টারনেট থেকে আসা ট্র্যাফিকের ক্ষেত্রে, ডেটা স্থানান্তরের সময় নির্দিষ্ট অঞ্চলের মধ্যে থাকবে—এই নিশ্চয়তা দেওয়া যায় না
  • আঞ্চলিক বিচ্ছিন্নতা: আঞ্চলিক এন্ডপয়েন্টের চেয়ে দুর্বল, কারণ এগুলি বৈশ্বিক ফ্রন্টএন্ড পরিকাঠামো ব্যবহার করে।
  • ব্যবহারের ক্ষেত্র: ঐতিহাসিকভাবে কিছু আঞ্চলিক অ্যাক্সেস পরিস্থিতিতে ব্যবহৃত হলেও, এখন আরও শক্তিশালী নিশ্চয়তার জন্য রিজিওনাল এন্ডপয়েন্টের পক্ষে এটিকে সাধারণত নিরুৎসাহিত করা হয়।

গুগল এপিআই-এর জন্য প্রাইভেট সার্ভিস কানেক্ট

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

গুগল এপিআই অ্যাক্সেস করতে পিএসসি এন্ডপয়েন্ট কীভাবে ব্যবহার করবেন:

পিএসসি ব্যাকএন্ড ব্যবহার করে কীভাবে গুগল এপিআই অ্যাক্সেস করবেন:

ক্লাউড রান ভিপিসি নেটওয়ার্কে ট্র্যাফিক পাঠায়

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

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

আপনি Direct VPC egress ব্যবহার করে আপনার Cloud Run সার্ভিস, ফাংশন, জব বা ওয়ার্কার পুলের সমস্ত ট্র্যাফিক একটি VPC নেটওয়ার্কে পাঠানোর ব্যবস্থা করতে পারেন।

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

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

৩. সামগ্রিক ল্যাব স্থাপত্য

8f5328678688f210.png

৪. প্রস্তুতির ধাপসমূহ

ল্যাবে কাজ করার জন্য IAM পদের প্রয়োজন

প্রজেক্ট লেভেলে GCP অ্যাকাউন্টে প্রয়োজনীয় IAM রোলগুলো অ্যাসাইন করার মাধ্যমে আপনি শুরু করবেন।

  • কম্পিউট নেটওয়ার্ক অ্যাডমিন ( roles/compute.networkAdmin ) এই রোলটি আপনাকে কম্পিউট ইঞ্জিনের নেটওয়ার্কিং রিসোর্সগুলোর উপর সম্পূর্ণ নিয়ন্ত্রণ দেয়।
  • লগিং অ্যাডমিন ( roles/logging.admin ) এই রোলটি আপনাকে সমস্ত লগিং পারমিশন এবং এর উপর নির্ভরশীল পারমিশনগুলো ব্যবহারের সুযোগ দেয়।
  • সার্ভিস ইউসেজ অ্যাডমিন ( roles/serviceusage.serviceUsageAdmin ) এই রোলটি আপনাকে একটি কনজিউমার প্রজেক্টের জন্য সার্ভিসের অবস্থা চালু, বন্ধ ও পরিদর্শন করা, অপারেশন পরিদর্শন করা এবং কোটা ও বিলিং ব্যবহার করার ক্ষমতা দেয়।
  • ডিএনএস অ্যাডমিনিস্ট্রেটর ( roles/dns.admin ) এই রোলটি আপনাকে সমস্ত ক্লাউড ডিএনএস রিসোর্সে রিড-রাইট অ্যাক্সেস প্রদান করে।
  • ক্লাউড রান অ্যাডমিন ( roles/run.admin ) এই রোলটি আপনাকে সমস্ত ক্লাউড রান রিসোর্সের উপর পূর্ণ নিয়ন্ত্রণ দেয়।
  • স্টোরেজ অ্যাডমিন ( roles/storage.admin ) এই রোলটি আপনাকে অবজেক্ট এবং বাকেটগুলির উপর সম্পূর্ণ নিয়ন্ত্রণ দেয়।

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

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

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

gcloud auth login
gcloud config set project <your project id>
export project_id=<your project id>
export region=<your region>
export zone=$region-a
echo $project_id
echo $region

প্রজেক্টে প্রয়োজনীয় সকল গুগল এপিআই (API) সক্রিয় করুন। ক্লাউড শেল (Cloud Shell)-এর ভিতরে নিম্নলিখিত কাজগুলো করুন:

gcloud services enable \
  artifactregistry.googleapis.com \
  cloudbuild.googleapis.com \
  run.googleapis.com \
  compute.googleapis.com \
  dns.googleapis.com \
  servicedirectory.googleapis.com \
  networkconnectivity.googleapis.com

ভিপিসি তৈরি করুন

প্রজেক্টটিতে কাস্টম সাবনেট মোড সহ একটি VPC নেটওয়ার্ক তৈরি করুন। ক্লাউড শেলের ভিতরে নিম্নলিখিতগুলি সম্পাদন করুন:

gcloud compute networks create mynet \
    --subnet-mode=custom

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

ক্লাউড শেলের ভিতরে, একটি IPV4 সাবনেট তৈরি করতে নিম্নলিখিতগুলি করুন:

gcloud compute networks subnets create mysubnet \
    --network=mynet \
    --range=10.0.0.0/24 \
    --region=$region

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

ক্লাউড রান জবগুলোকে বাহ্যিক ওয়েবসাইটের সাথে সংযোগ স্থাপনের অনুমতি দেওয়ার জন্য ক্লাউড ন্যাট (Cloud NAT) ব্যবহার করা হয়।

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

৫. ক্লাউড স্টোরেজের জন্য পিএসসি এন্ডপয়েন্ট তৈরি করুন

আপনি ক্লাউড স্টোরেজের জন্য দুটি PSC এন্ডপয়েন্ট তৈরি করবেন, একটি গ্লোবাল স্কোপের জন্য এবং অন্যটি রিজিওনাল স্কোপের জন্য।

গ্লোবাল স্কোপের PSC এন্ডপয়েন্ট তৈরি করুন

প্রাইভেট সার্ভিস কানেক্টের মাধ্যমে, আপনি আপনার ভিপিসি নেটওয়ার্কের মধ্যে গ্লোবাল ইন্টারনাল আইপি অ্যাড্রেস ব্যবহার করে গ্লোবাল স্কোপড প্রাইভেট এন্ডপয়েন্ট তৈরি করতে পারেন।

আপনাকে একটি অনন্য আইপি অ্যাড্রেস বরাদ্দ করতে হবে যা আপনার ভিপিসি-তে সংজ্ঞায়িত নয়। এই আইপি অ্যাড্রেসের প্রয়োজনীয়তা সম্পর্কে জানতে অনুগ্রহ করে ডকুমেন্টটি দেখুন।

ক্লাউড শেলের ভিতরে, একটি আইপি অ্যাড্রেস তৈরি করতে নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন। আপনার বরাদ্দ করা আইপি অ্যাড্রেসটি ব্যবহার করার জন্য অনুগ্রহ করে –addresses=<pscendpointip> পরিবর্তন করুন।

gcloud compute addresses create pscglobalip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=<pscendpointip> \
    --network=mynet
pscendpointip=$(gcloud compute addresses list --filter=name:pscglobalip --format="value(address)")
echo $pscendpointip

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

gcloud compute forwarding-rules create pscendpoint \
    --global \
    --network=mynet \
    --address=pscglobalip \
    --target-google-apis-bundle=all-apis

ক্লাউড ডিএনএস-এ p.googleapis.com চেক করুন

যখন আপনি একটি এন্ডপয়েন্ট তৈরি করেন, তখন নিম্নলিখিত DNS কনফিগারেশনগুলি স্বয়ংক্রিয়ভাবে তৈরি হয়ে যায়:

গ্লোবাল এন্ডপয়েন্টগুলো সার্ভিস ডিরেক্টরিতে নিবন্ধিত থাকে। ক্লাউড স্টোরেজ অ্যাক্সেস করার জন্য আপনি storage-[psc endpoint name].p.googleapis.com ব্যবহার করবেন। বিস্তারিত জানতে প্রোডাক্ট ডকুমেন্টেশন দেখুন।

কমান্ডটি চালিয়ে পরীক্ষা করুন p.googleaps.com জোনটি আগে থেকেই তৈরি করা আছে কিনা।

gcloud dns managed-zones list

আপনি যদি ডিফল্ট ডিএনএস নাম, storage.googleapis.com, ব্যবহার করতে চান, তাহলে আপনাকে ক্লাউড ডিএনএস-এ storage.googleapis.com নামে একটি প্রাইভেট জোন তৈরি করতে হবে এবং একটি অ্যাপেক্স রেকর্ড যোগ করতে হবে যা গ্লোবাল স্কোপ আইপি অ্যাড্রেসের পিএসসি এন্ডপয়েন্টকে নির্দেশ করে।

ক্লাউড স্টোরেজের জন্য আঞ্চলিক পরিধির পিএসসি এন্ডপয়েন্ট তৈরি করুন

আপনার VPC সাবনেট থেকে একটি IP লাগবে। নিচের কমান্ডটি চালান, PSC এন্ডপয়েন্টের জন্য সাবনেটওয়ার্ক থেকে একটি IP বরাদ্দ করা হবে।

gcloud network-connectivity regional-endpoints create psc-regional-endpoint \
    --region=$region \
    --network=projects/$project_id/global/networks/mynet \
    --subnetwork=projects/$project_id/regions/$region/subnetworks/mysubnet \
    --target-google-api=storage.us-central1.rep.googleapis.com

উপরের ধাপ থেকে তৈরি করা এন্ডপয়েন্ট আইপি অ্যাড্রেসটি নিন।

regionalip=$(gcloud network-connectivity regional-endpoints describe psc-regional-endpoint --region=$region --format="value(address)")
echo $regionalip

ক্লাউড স্টোরেজ অ্যাক্সেস করার জন্য আপনি storage.us-central1.rep.googleapis.com ব্যবহার করবেন। ক্লাউড ডিএনএস-এ regional endpoint-এর জন্য আপনাকে storage.us-central1.rep.googleapis.com-এর জন্য একটি private zone এবং আপনার সদ্য তৈরি করা IP address-টির apex record তৈরি করতে হবে।

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

ক্লাউড স্টোরেজ আঞ্চলিক এন্ডপয়েন্ট অ্যাক্সেস করতে আপনাকে storage.[অঞ্চলের নাম].rep.googleapis.com ব্যবহার করতে হবে।

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

নিচের কমান্ডে, us-central1 হলো উদাহরণস্বরূপ একটি অঞ্চল। আপনাকে আপনার অঞ্চলের নামে জোনটি তৈরি করতে হবে।

gcloud dns managed-zones create psc-regional-endpoint-zone \
  --description="" \
  --dns-name="storage.us-central1.rep.googleapis.com" \
  --visibility="private" \
  --networks="mynet"

gcloud dns record-sets create storage.us-central1.rep.googleapis.com. \
  --rrdatas=$regionalip \
  --ttl=300 \
  --type=A \
  --zone=psc-regional-endpoint-zone

৬. গ্লোবাল স্কোপের PSC এন্ডপয়েন্ট ব্যবহার করে ক্লাউড রান জব কনফিগার করুন।

কোডটি নিন

প্রথমে আপনি ওয়েব পেজের স্ক্রিনশট নিয়ে ক্লাউড স্টোরেজে সংরক্ষণ করার জন্য একটি Node.js অ্যাপ্লিকেশন ব্যবহার করবেন। পরবর্তীতে, আপনি অ্যাপ্লিকেশনটির জন্য একটি কন্টেইনার ইমেজ তৈরি করে ক্লাউড রানে একটি জব হিসেবে চালাবেন।

ক্লাউড শেল থেকে, এই রিপো থেকে অ্যাপ্লিকেশন কোড ক্লোন করতে নিম্নলিখিত কমান্ডটি চালান:

git clone https://github.com/GoogleCloudPlatform/jobs-demos.git

অ্যাপ্লিকেশনটি যে ডিরেক্টরিতে রয়েছে সেখানে যান:

cd jobs-demos/screenshot

আপনার এই ফাইল বিন্যাসটি দেখা উচিত:

|

├── ডকারফাইল

├── README.md

├── screenshot.js

├── package.json

এখানে প্রতিটি ফাইলের সংক্ষিপ্ত বিবরণ দেওয়া হলো:

  • screenshot.js ফাইলে অ্যাপ্লিকেশনটির Node.js কোড রয়েছে। অ্যাপ্লিকেশনটি ওয়েব পেজের স্ক্রিনশট নেয় এবং সেগুলো ক্লাউড স্টোরেজে সংরক্ষণ করে।
  • package.json লাইব্রেরি নির্ভরতাগুলো নির্ধারণ করে।
  • ডকারফাইল কন্টেইনার ইমেজ নির্ধারণ করে।

screenshot.js কোডটি খুলুন, আপনাকে apiEndpoint পরিবর্তন করে PSC গ্লোবাল এন্ডপয়েন্ট করতে হবে। কোডটি খুঁজুন এবং const storage = new Storage(); কে নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন:

const storage = new Storage(
    {
      apiEndpoint:'https://storage-pscendpoint.p.googleapis.com.',
      useAuthWithCustomEndpoint: true
    }
  );

একটি কাজ স্থাপন করুন

জব তৈরি করার আগে, আপনাকে একটি সার্ভিস অ্যাকাউন্ট তৈরি করতে হবে যা জবটি চালানোর জন্য ব্যবহার করা হবে।

gcloud iam service-accounts create screenshot-sa --display-name="Screenshot app service account"

সার্ভিস অ্যাকাউন্টটিকে storage.admin রোল প্রদান করুন, যাতে এটি ব্যবহার করে বাকেট এবং অবজেক্ট তৈরি করা যায়।

gcloud projects add-iam-policy-binding $project_id \
  --role roles/storage.admin \
  --member serviceAccount:screenshot-sa@$project_id.iam.gserviceaccount.com

ডিফল্ট কম্পিউট সার্ভিস অ্যাকাউন্টকে স্টোরেজ অবজেক্ট ইউজার রোল, লগস রাইটার রোল এবং আর্টিফ্যাক্ট রেজিস্ট্রি রিপোজিটরি অ্যাডমিনিস্ট্রেটর রোল প্রদান করুন।

project_number=$(gcloud projects describe $project_id --format="value(projectNumber)")

gcloud projects add-iam-policy-binding $project_id \
  --role roles/storage.objectUser \
  --member serviceAccount:$project_number-compute@developer.gserviceaccount.com

gcloud projects add-iam-policy-binding $project_id \
  --role roles/logging.logWriter \
  --member serviceAccount:$project_number-compute@developer.gserviceaccount.com

gcloud projects add-iam-policy-binding $project_id \
  --role roles/artifactregistry.repoAdmin \
  --member serviceAccount:$project_number-compute@developer.gserviceaccount.com

সমস্ত ট্র্যাফিক একটি ভিপিসি নেটওয়ার্কে পাঠানোর জন্য আপনি ক্লাউড রান জবগুলির জন্য ডাইরেক্ট ভিপিসি ইগ্রেস সক্ষম করবেন।

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

gcloud run jobs deploy screenshot-1 \
  --source=. \
  --args="https://example.com" \
  --args="https://cloud.google.com" \
  --tasks=2 \
  --task-timeout=5m \
  --region=$region \
  --set-env-vars=BUCKET_NAME=screenshot-$project_id-$RANDOM \
  --service-account=screenshot-sa@$project_id.iam.gserviceaccount.com \
  --vpc-egress=all-traffic \
  --network=mynet \
  --subnet=mysubnet

কাজটি চালান

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

gcloud run jobs execute screenshot-1 --region=$region

জবটির স্ট্যাটাস এবং লগ চেক করুন। ক্লাউড রান কনসোলে গিয়ে জবটি খুঁজুন। জবটিতে ক্লিক করে লগের হিস্ট্রি চেক করুন। আপনি নীচের মতো জব এক্সিকিউশনের ফলাফল দেখতে পাবেন।

bae25d504ea20384.png

কাজের বিস্তারিত এক্সিকিউশন লগ দেখতে, টাস্কের পাশে থাকা 'ভিউ লগ'-এ ক্লিক করুন। আপনি নীচের মতো কাজের লগ দেখতে পাবেন।

aa0468dc463f4320.png

একটি নতুন বাকেট তৈরি করা হয়েছে। আপনি ক্লাউড স্টোরেজ কনসোলে গিয়ে নতুন তৈরি হওয়া বাকেটটি দেখতে পারেন। অনুগ্রহ করে মনে রাখবেন, যেহেতু আপনি ক্লাউড স্টোরেজ গ্লোবাল এন্ডপয়েন্ট ব্যবহার করছেন, তাই বাকেটটি একটি মাল্টি-রিজিওন বাকেট। আপনি বাকেটটিতে আপলোড করা ইমেজগুলো দেখতে পারেন।

পরীক্ষার ফলাফল দেখাচ্ছে যে ক্লাউড রান ব্যক্তিগতভাবে ক্লাউড স্টোরেজ গ্লোবাল এন্ডপয়েন্ট অ্যাক্সেস করেছে, যেটি আপনি ক্লাউড রান জবে পরিবর্তন করেছেন:

apiEndpoint:'https://storage-pscendpoint.p.googleapis.com.'

৭. রিজিওনাল স্কোপের PSC এন্ডপয়েন্ট ব্যবহার করে ক্লাউড রান জব কনফিগার করুন।

কোডে, আপনাকে apiEndpoint পরিবর্তন করে regional scope সহ PSC endpoint দিতে হবে।

কোডটি খুঁজুন এবং const storage = new Storage(); নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন (আমরা উদাহরণ হিসেবে us-central1 ব্যবহার করেছি। অনুগ্রহ করে আপনার অঞ্চলের তথ্য অনুযায়ী পরিবর্তন করুন):

const storage = new Storage(
    {
      apiEndpoint:'https://storage.us-central1.rep.googleapis.com.',
      useAuthWithCustomEndpoint: true
    }
  );

একটি কাজ স্থাপন করুন

নিশ্চিত করুন যে আপনি অ্যাপ্লিকেশনটি যে ডিরেক্টরিতে রয়েছে (jobs-demos/screenshot), সেখানেই আছেন।

pwd

সমস্ত ট্র্যাফিক একটি VPC নেটওয়ার্কে পাঠানোর জন্য আপনি জবগুলির জন্য Direct VPC egress সক্ষম করেন।

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

gcloud run jobs deploy screenshot-2 \
  --source=. \
  --args="https://example.com" \
  --args="https://cloud.google.com" \
  --tasks=2 \
  --task-timeout=5m \
  --region=$region \
  --set-env-vars=BUCKET_NAME=screenshot-$PROJECT_ID-$RANDOM \
  --service-account=screenshot-sa@$project_id.iam.gserviceaccount.com \
  --vpc-egress=all-traffic \
  --network=mynet \
  --subnet=mysubnet

কাজটি চালান

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

gcloud run jobs execute screenshot-2 --region=$region

জবটির স্ট্যাটাস এবং লগ চেক করুন। ক্লাউড রান কনসোলে গিয়ে জবটি খুঁজুন। জবটিতে ক্লিক করে এর হিস্ট্রি চেক করুন। আপনি নীচের মতো জব এক্সিকিউশনের ফলাফল দেখতে পাবেন।

1065ce25136d355e.png

কাজের বিস্তারিত এক্সিকিউশন লগ দেখতে, 'ভিউ লগ'-এ ক্লিক করুন। আপনি নীচের মতো কাজের লগ দেখতে পাবেন।

837afb2f95a7049b.png

একটি নতুন বাকেট তৈরি করা হয়েছে। আপনি ক্লাউড স্টোরেজ কনসোলে গিয়ে নতুন তৈরি হওয়া বাকেটটি দেখতে পারেন। অনুগ্রহ করে মনে রাখবেন, যেহেতু আপনি ক্লাউড স্টোরেজ রিজিওনাল এন্ডপয়েন্ট ব্যবহার করছেন, তাই বাকেটটি একটি সিঙ্গেল রিজিওন বাকেট। আপনি বাকেটটিতে আপলোড করা ইমেজগুলো দেখতে পারেন।

পরীক্ষার ফলাফল দেখাচ্ছে যে ক্লাউড রান ব্যক্তিগতভাবে ক্লাউড স্টোরেজ রিজিওনাল এন্ডপয়েন্ট অ্যাক্সেস করেছে, যেটি আপনি ক্লাউড রান জবে পরিবর্তন করেছেন:

apiEndpoint:'https://storage.us-central1.rep.googleapis.com.'

৮. পরিষ্কার করুন

ক্লিনআপ ক্লাউড রান জব

gcloud run jobs delete screenshot-1 \
  --region=$region --quiet
gcloud run jobs delete screenshot-2 \
  --region=$region --quiet

gcloud iam service-accounts delete screenshot-sa@$project_id.iam.gserviceaccount.com --quiet

PSC এন্ডপয়েন্ট পরিষ্কার করুন

gcloud compute forwarding-rules delete pscendpoint \
    --global --quiet
gcloud network-connectivity regional-endpoints delete psc-regional-endpoint \
    --region=$region --quiet
gcloud compute addresses delete pscglobalip \
    --global --quiet

ক্লাউড NAT, ক্লাউড রাউটার এবং VPC পরিষ্কার করুন

gcloud compute routers nats delete $region-nat \
    --router=$region-cr \
    --region=$region --quiet
gcloud compute routers delete $region-cr \
    --region=$region --quiet
gcloud compute networks subnets delete mysubnet \
    --region=$region --quiet
gcloud compute networks delete mynet --quiet

৯. অভিনন্দন

আপনি গ্লোবাল এন্ডপয়েন্ট এবং রিজিওনাল এন্ডপয়েন্টের মাধ্যমে ক্লাউড স্টোরেজে ক্লাউড রান প্রাইভেট অ্যাক্সেস সফলভাবে পরীক্ষা করেছেন।