Google API-এর জন্য ব্যক্তিগত পরিষেবা সংযোগ

১. ভূমিকা

প্রাইভেট সার্ভিস কানেক্ট-এর মাধ্যমে, আপনি গুগল এপিআই অ্যাক্সেস করার জন্য আপনার ভিপিসি নেটওয়ার্কের মধ্যে গ্লোবাল ইন্টারনাল আইপি অ্যাড্রেস ব্যবহার করে প্রাইভেট এন্ডপয়েন্ট তৈরি করতে পারেন। আপনি এই ইন্টারনাল আইপি অ্যাড্রেসগুলোতে storage-pscendpoint.p.googleapis.com এবং bigtable-adsteam.p.googleapis.com-এর মতো অর্থপূর্ণ ডিএনএস নাম অ্যাসাইন করতে পারেন। storage.googleapis.com-এর মতো পাবলিক সার্ভিস এন্ডপয়েন্টে এপিআই রিকোয়েস্ট পাঠানোর পরিবর্তে, আপনি রিকোয়েস্টগুলো প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্টে পাঠাতে পারেন, যা প্রাইভেট এবং আপনার ভিপিসি নেটওয়ার্কের অভ্যন্তরীণ।

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

আপনি নিয়ন্ত্রণ করতে পারেন কোন ট্র্যাফিক কোন এন্ডপয়েন্টে যাবে, এবং প্রমাণ করতে পারেন যে ট্র্যাফিক গুগল ক্লাউডের মধ্যেই থাকছে।

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

  • ব্যক্তিগত পরিষেবা সংযোগ ব্যবহারের ক্ষেত্রসমূহ
  • নেটওয়ার্কের প্রয়োজনীয়তা
  • সমর্থিত এপিআই
  • একটি ব্যক্তিগত সার্ভিস কানেক্ট এন্ডপয়েন্ট তৈরি করুন
  • একটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন
  • ক্লাউড ডিএনএস প্রাইভেট জোন তৈরি এবং আপডেট করুন
  • পাবলিক গুগল এপিআই অ্যাক্সেস করার জন্য একটি NAT GW তৈরি করুন।
  • একটি BOTO কনফিগারেশন ফাইল তৈরি এবং আপডেট করুন
  • আপনার PSC পরিষেবা এন্ডপয়েন্টের বিপরীতে VM1-এ gsutil list চালান।
  • পাবলিক googleapis.com-এর সাপেক্ষে সমাধান করা VM2-তে gsutil list চালান।
  • DNS রেজোলিউশন যাচাই করতে Tcpdump ব্যবহার করুন।

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

  • DNS, nano বা vi এডিটর সম্পর্কে জ্ঞান

২. ব্যক্তিগত পরিষেবা সংযোগ ব্যবহারের ক্ষেত্রসমূহ

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

একাধিক এন্ডপয়েন্ট থাকলে, আপনি ক্লাউড রাউটার এবং ফায়ারওয়াল নিয়ম ব্যবহার করে বিভিন্ন নেটওয়ার্ক পাথ নির্দিষ্ট করতে পারেন।

  • আপনি ফায়ারওয়াল নিয়ম তৈরি করে কিছু ভিএম-কে একটি প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্টের মাধ্যমে গুগল এপিআই অ্যাক্সেস করা থেকে বিরত রাখতে পারেন, এবং একই সাথে অন্য ভিএম-গুলোকে অ্যাক্সেসের অনুমতি দিতে পারেন।
  • আপনি একটি ভিএম ইনস্ট্যান্সে এমন একটি ফায়ারওয়াল নিয়ম রাখতে পারেন যা ইন্টারনেটে সমস্ত ট্র্যাফিককে বাধা দেয়; কিন্তু প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্টগুলিতে পাঠানো ট্র্যাফিক তবুও গুগলে পৌঁছায়।
  • আপনার যদি ক্লাউড ভিপিএন টানেল বা ক্লাউড ইন্টারকানেক্ট অ্যাটাচমেন্ট (ভিএলএএন) ব্যবহার করে ভিপিসি-র সাথে সংযুক্ত অন-প্রিমিসেস হোস্ট থাকে, তাহলে আপনি কিছু অনুরোধ টানেল বা ভিএলএএন-এর মাধ্যমে পাঠাতে পারেন এবং অন্য অনুরোধগুলো পাবলিক ইন্টারনেটের মাধ্যমে পাঠাতে পারেন। এই কনফিগারেশনটি আপনাকে গুগল বুকস-এর মতো পরিষেবাগুলির জন্য টানেল বা ভিএলএএন বাইপাস করার সুযোগ দেয়, যা প্রাইভেট গুগল অ্যাক্সেস দ্বারা সমর্থিত নয়। এই কনফিগারেশনটি তৈরি করতে, একটি প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট তৈরি করুন, ক্লাউড রাউটার কাস্টম রুট অ্যাডভার্টাইজমেন্ট ব্যবহার করে প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্টের আইপি অ্যাড্রেসগুলো অ্যাডভার্টাইজ করুন এবং একটি ক্লাউড ডিএনএস ইনবাউন্ড ফরওয়ার্ডিং পলিসি সক্রিয় করুন। অ্যাপ্লিকেশনটি প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্টের নামটি ব্যবহার করে কিছু অনুরোধ ক্লাউড ভিপিএন টানেল বা ক্লাউড ইন্টারকানেক্ট অ্যাটাচমেন্ট (ভিএলএএন)-এর মাধ্যমে এবং অন্যগুলো ডিফল্ট ডিএনএস নামটি ব্যবহার করে ইন্টারনেটের মাধ্যমে পাঠাতে পারে।
  • যদি আপনি একাধিক ক্লাউড ইন্টারকানেক্ট অ্যাটাচমেন্ট (VLAN) ব্যবহার করে আপনার অন-প্রিমিসেস নেটওয়ার্ককে আপনার VPC নেটওয়ার্কের সাথে সংযুক্ত করেন, তাহলে আপনি অন-প্রিমিসেস থেকে কিছু ট্র্যাফিক একটি VLAN-এর মাধ্যমে এবং বাকিগুলো অন্যগুলোর মাধ্যমে পাঠাতে পারবেন, যেমনটি চিত্র ২-এ দেখানো হয়েছে। এটি আপনাকে গুগলের পরিবর্তে আপনার নিজস্ব ওয়াইড-এরিয়া নেটওয়ার্কিং ব্যবহার করতে এবং ভৌগোলিক প্রয়োজনীয়তা মেটাতে ডেটা চলাচল নিয়ন্ত্রণ করতে দেয়। এই কনফিগারেশনটি তৈরি করতে, দুটি প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট তৈরি করুন। প্রথম VLAN পরিচালনাকারী ক্লাউড রাউটারের BGP সেশনে প্রথম এন্ডপয়েন্টের জন্য একটি কাস্টম রুট অ্যাডভার্টাইজমেন্ট তৈরি করুন এবং দ্বিতীয় VLAN পরিচালনাকারী ক্লাউড রাউটারের BGP সেশনে দ্বিতীয় এন্ডপয়েন্টের জন্য একটি ভিন্ন কাস্টম রুট অ্যাডভার্টাইজমেন্ট তৈরি করুন। যে অন-প্রিমিসেস হোস্টগুলো প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্টের নামটি ব্যবহার করার জন্য কনফিগার করা আছে, তারা সংশ্লিষ্ট ক্লাউড ইন্টারকানেক্ট অ্যাটাচমেন্ট (VLAN)-এর মাধ্যমে ট্র্যাফিক পাঠায়।
  • আপনি একটি অ্যাক্টিভ/অ্যাক্টিভ টপোলজিতে একাধিক ক্লাউড ইন্টারকানেক্ট অ্যাটাচমেন্ট (VLAN) ব্যবহার করতে পারেন। যদি আপনি VLAN পরিচালনাকারী ক্লাউড রাউটারগুলিতে BGP সেশনের জন্য কাস্টম রুট অ্যাডভার্টাইজমেন্ট ব্যবহার করে একই প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট আইপি অ্যাড্রেস প্রচার করেন, তাহলে অন-প্রিমিসেস সিস্টেম থেকে এন্ডপয়েন্টগুলিতে পাঠানো প্যাকেটগুলি ECMP ব্যবহার করে VLAN জুড়ে রাউট করা হয়।

5e142c2fbf6f010e.png

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

৩. নেটওয়ার্কের প্রয়োজনীয়তা

প্রাইভেট সার্ভিস কানেক্ট ব্যবহার করার জন্য, যেসব ভার্চুয়াল মেশিন (VM) ইনস্ট্যান্সের এক্সটার্নাল আইপি অ্যাড্রেস নেই, তাদের প্রাইমারি ইন্টারফেস অবশ্যই এমন একটি সাবনেটে থাকতে হবে যেখানে প্রাইভেট গুগল অ্যাক্সেস সক্রিয় করা আছে।

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

পিয়ার্ড ভিপিসি নেটওয়ার্ক থেকে প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্টগুলো অ্যাক্সেস করা যায় না।

সমর্থিত এপিআই

যখন আপনি একটি প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট তৈরি করেন, তখন আপনি বেছে নেন কোন এপিআই বান্ডেলটিতে আপনার অ্যাক্সেস প্রয়োজন: all-apis অথবা vpc-sc।

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

  • all-apis বান্ডেলটি private.googleapis.com-এর মতো একই এপিআইগুলোতে অ্যাক্সেস প্রদান করে।
  • vpc-sc বান্ডেলটি restricted.googleapis.com-এর মতো একই API-গুলোতে অ্যাক্সেস প্রদান করে।

৪. কোডল্যাব টপোলজি ও ইউজ কেস

2ac275eb86f26338.png

চিত্র ১ - কোডল্যাব টপোলজি

কোডল্যাব ব্যবহারের ক্ষেত্র -

আমাদের গ্রাহকের ক্লাউড স্টোরেজ ডেটা স্থানান্তরের জন্য প্রাইভেট (ইন্টারকানেক্ট) এবং পাবলিক গুগলএপিআই অ্যাক্সেসের মিশ্রণ প্রয়োজন। গ্রাহকের চাহিদা মেটাতে, আমরা একটি অনন্য /32 অ্যাড্রেস, BOTO কনফিগারেশন এবং DNS রেকর্ড আপডেট সমন্বিত প্রাইভেট সার্ভিস কানেক্ট (PSC) স্থাপন করব। ভার্চুয়াল মেশিন ১ ক্লাউড স্টোরেজ বাকেট অ্যাক্সেসের জন্য PSC ব্যবহার করবে; অন্যদিকে, VM2 NAT GW-এর মাধ্যমে পাবলিক googleapis.com IP রেঞ্জ ব্যবহার করবে।

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

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

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

প্রজেক্ট আইডিটি মনে রাখবেন, যা সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে ব্যবহৃত হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এই কোডল্যাবে এটিকে পরবর্তীতে PROJECT_ID হিসাবে উল্লেখ করা হবে।

  1. এরপরে, গুগল ক্লাউড রিসোর্স ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে।

এই কোডল্যাবটি চালাতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। "পরিষ্কার-পরিচ্ছন্নতা" (Cleaning up) বিভাগে দেওয়া নির্দেশাবলী অবশ্যই অনুসরণ করবেন, যেখানে রিসোর্স বন্ধ করার পরামর্শ দেওয়া হয়েছে, যাতে এই টিউটোরিয়ালের বাইরে আপনার কোনো বিল না আসে। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

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

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

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

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

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

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

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

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

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

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

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

gcloud compute networks create psc-lab --subnet-mode custom

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

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

gcloud compute networks subnets create psclab-subnet \
--network psc-lab --range 10.0.0.0/24 --region us-central1 --enable-private-ip-google-access

ফায়ারওয়াল নিয়ম তৈরি করুন

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

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

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

gcloud compute firewall-rules create psclab-ssh \
    --network psc-lab --allow tcp:22 --source-ranges=35.235.240.0/20

ক্লাউড NAT ইনস্ট্যান্স তৈরি করুন

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

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

gcloud compute routers create crnat \
    --network psc-lab \
    --asn 65000 \
    --region us-central1

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

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

gcloud compute routers nats create cloudnat \
    --router=crnat \
    --auto-allocate-nat-external-ips \
    --nat-all-subnet-ip-ranges \
    --enable-logging \
    --region us-central1

৮. ব্যক্তিগত সার্ভিস কানেক্ট এন্ডপয়েন্ট তৈরি করুন

যখন আপনি প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট আইপি <pscendpointip> কনফিগার করবেন, তখন আপনাকে একটি অনন্য আইপি অ্যাড্রেস প্রদান করতে হবে যা আপনার ভিপিসিতে সংজ্ঞায়িত নয়।

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

gcloud compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=192.168.255.250 \
    --network=psc-lab

ল্যাব চলাকালীন সময়ের জন্য 'pscendpointip' সংরক্ষণ করুন।

pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")

echo $pscendpointip

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

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

gcloud compute forwarding-rules create pscendpoint \
    --global \
    --network=psc-lab \
    --address=psc-ip \
    --target-google-apis-bundle=all-apis

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

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

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

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

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

gcloud compute forwarding-rules describe \
    pscendpoint --global

৯. একটি বাকেট তৈরি করুন

একটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন এবং BUCKET_NAME-এর জায়গায় আপনার পছন্দের একটি বিশ্বব্যাপী অনন্য নাম দিন।

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

gsutil mb  -l us-central1 -b on gs://BUCKET_NAME

ল্যাব চলাকালীন সময়ের জন্য 'BUCKET_NAME' সংরক্ষণ করুন।

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

১০. ডিএনএস কনফিগারেশন

যখন আপনি একটি প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট তৈরি করেন, তখন সার্ভিস ডিরেক্টরি সেই এন্ডপয়েন্ট ব্যবহার করে উপলব্ধ এপিআই এবং সার্ভিসগুলোর জন্য একটি ডিএনএস রেকর্ড তৈরি করে।

ডিএনএস রেকর্ডগুলো আপনার প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট আইপি অ্যাড্রেসকে নির্দেশ করে এবং এগুলো SERVICE-ENDPOINT.p.googleapis.com ফরম্যাটে থাকে।

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

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

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

  • পাইথন: আপনি google-api-core প্যাকেজের Client options ক্লাসে api_endpoint কনফিগার করতে পারেন।
  • যান: আপনি api প্যাকেজের অন্তর্গত Client options প্যাকেজে WithEndpoint কনফিগার করতে পারেন।
  • gcloud: আপনি এই কমান্ডটি ব্যবহার করে api_endpoint_overrides কনফিগার করতে পারেন। gcloud config set api_endpoint_overrides/SERVICE ENDPOINT_URL

উদাহরণস্বরূপ: gcloud config set api_endpoint_overrides/storage https://storage-xyz.p.googleapis.com/storage/v1/

যদি আপনি আপনার ক্লায়েন্ট বা অ্যাপ্লিকেশনকে একটি ভিন্ন এন্ডপয়েন্ট ব্যবহার করার জন্য কনফিগার করতে না পারেন, তাহলে ডিফল্ট DNS নামগুলোর সাথে মিলিয়ে DNS রেকর্ড তৈরি করুন। উদাহরণস্বরূপ, storage.googleapis.com। ডিফল্ট DNS নাম ব্যবহার করে DNS রেকর্ড তৈরি করা দেখুন।

ডিএনএস রেকর্ড যাচাই করুন

ক্লাউড কনসোল থেকে Network Services → Cloud DNS-এর অধীনে থাকা তৈরি হওয়া ডিএনএস এন্ট্রিটি যাচাই করুন। তৈরি হওয়া ডিএনএস নামটি ('p.googleapis.com') নোট করুন।

১১. ভার্চুয়াল মেশিন তৈরি করুন

প্রাইভেট সার্ভিস কানেক্ট যাচাই করতে ব্যবহৃত ভার্চুয়াল মেশিন (psc-instance-1) তৈরি করুন।

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

  gcloud compute instances create psc-instance-1 \
    --subnet psclab-subnet \
    --zone us-central1-a \
    --image=centos-7-v20210122 \
    --image-project=centos-cloud \
    --no-address \
    --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y 

ভিএম ইনস্ট্যান্সে (psc-instance-1) লগ ইন করুন।

ক্লাউড শেলের মাধ্যমে ভিএম-এ SSH করুন

gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"

অতিরিক্ত ক্লাউড শেল টার্মিনাল তৈরি করতে + (নিচের স্ক্রিনশট) চিহ্নে তিনবার ক্লিক করুন।

69ea94e1527912bb.png

পাবলিক গুগল এপিআই যাচাই করার জন্য ব্যবহৃত ভার্চুয়াল মেশিন (psc-instance-2) তৈরি করুন।

ট্যাব ২ থেকে

  gcloud compute instances create psc-instance-2 \
    --subnet psclab-subnet \
    --zone us-central1-a \
    --image=centos-7-v20210122 \
    --image-project=centos-cloud \
    --no-address \
    --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y 

ট্যাব ২ থেকে ক্লাউড শেলের মাধ্যমে ভিএম-এ SSH করুন।

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


gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"

ট্যাব ৩ থেকে ক্লাউড শেলের মাধ্যমে psc-instance-1-এ SSH করুন।

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


gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"

ট্যাব ৪ থেকে ক্লাউড শেলের মাধ্যমে psc-instance-2-এ শেল SSH করুন।

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


gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"

১২. বিদ্যমান Gsutil আচরণ যাচাই করুন

ট্যাব ৪ (psc-instance-2) থেকে tcpdump চালু করুন এবং DNS ট্র্যাফিক নিরীক্ষণ করুন।

sudo tcpdump -vv -i eth0 port 53

ট্যাব ২ (psc-instance-2) থেকে স্টোরেজ বাকেটের ডিএনএস লুকআপ পরিদর্শন করুন

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME
gsutil -D ls gs://$BUCKET_NAME

gsutil ডিবাগ পরীক্ষা করে দেখা গেছে, DNS রেজোলিউশনের জন্য HOST storage.googleapis.com ব্যবহৃত হচ্ছে।

<snip>
send: 'GET /storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nauthorization: Bearer ya29.c.KpkB7wfaMjfc_WXEKCeNF4Md0fEHnfDU7tqBf3cd0u43yEmYXqj8fX_X5wWdNdDVH6k1EkjeAeIJDzKGvyjPOkf1Io2kVeUqYX69sDv53huW1NslffjAHKchbZ0CP3Cg83TS3Pa55jLcuE0TLbYycVrgSbD3H90LaapUGbWD3kj4IsJLf9J8R98Bqobu8HZwwqk92hlZ4zVzRqOM\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
<snip>

ট্যাব ৪ (psc-instance-2) থেকে যাচাই করুন যে স্টোরেজ বাকেট অ্যাক্সেস করার সময় GoogleAPI.com-এর পাবলিক DNS A রেকর্ড(গুলি) ব্যবহৃত হচ্ছে কিনা।

metadata.google.internal.domain > psc-instance-2.c.yourprojectname.internal.33973: [udp sum ok] 36442 q: A? storage.googleapis.com. 11/0/0 storage.googleapis.com. A 108.177.111.128, storage.googleapis.com. A 142.250.128.128, storage.googleapis.com. A 74.125.70.128, storage.googleapis.com. A 74.125.201.128, storage.googleapis.com. A 64.233.183.128, storage.googleapis.com. A 173.194.198.128, storage.googleapis.com. A 172.217.219.128, storage.googleapis.com. A 142.250.136.128, storage.googleapis.com. A 209.85.234.128, storage.googleapis.com. A 172.217.212.128, storage.googleapis.com. A 172.217.214.128

১৩. Gsutil-এর আচরণ পরিবর্তন করুন

মনে করুন, পূর্ববর্তী ধাপে আপনি PSC এন্ডপয়েন্ট IP অ্যাড্রেসের সাথে ম্যাপ করা একটি প্রাইভেট DNS জোন এবং A রেকর্ড তৈরি করেছিলেন। পরবর্তী ধাপে, আমরা এখন psc-instance-1-এর VM BOTO ফাইলটি আপডেট করার মাধ্যমে gsutil-এর আচরণ নিয়ন্ত্রণ করব।

ভিএম ইনস্ট্যান্স টার্মিনালের ট্যাব ১ (psc-instance-1) থেকে ডিফল্ট BOTO কনফিগারেশন দেখুন।

[psc-instance ~]$ more  /etc/boto.cfg

আউটপুট (আপনার প্রজেক্ট আইডি ভিন্ন হবে)

[GSUtil]
default_project_id  = [your project number]
default_api_version = 2

[GoogleCompute]
service_account = default

nano অথবা VI Editor ব্যবহার করে BOTO কনফিগারেশন আপডেট করুন এবং সমস্ত এন্ট্রি কপি ও পেস্ট করা নিশ্চিত করুন।

উদাহরণ: sudo nano /etc/boto.cfg

অথবা

উদাহরণ: sudo vi /etc/boto.cfg

ভিএম ইনস্ট্যান্স টার্মিনাল ট্যাব ১ (psc-instance-1) থেকে

[Credentials]
gs_host = storage-pscendpoint.p.googleapis.com
gs_host_header = storage.googleapis.com
gs_json_host = storage-pscendpoint.p.googleapis.com
gs_json_host_header = www.googleapis.com

কনফিগারেশনটি যাচাই করুন, DNS লুকআপের জন্য [Credentials]-এর ক্রম অত্যন্ত গুরুত্বপূর্ণ।

more /etc/boto.cfg
[Credentials]
gs_host = storage-pscendpoint.p.googleapis.com
gs_host_header = storage.googleapis.com
gs_json_host = storage-pscendpoint.p.googleapis.com
gs_json_host_header = www.googleapis.com

[GSUtil]
default_project_id  = [your project number
default_api_version = 2

[GoogleCompute]
service_account = default

১৪. আপডেট করা gsutil লুকআপ আচরণ যাচাই করুন

ট্যাব ৩ (psc-instance-1) থেকে tcpdump চালু করুন এবং DNS ট্র্যাফিক নিরীক্ষণ করুন।

sudo tcpdump -vv -i eth0 port 53

ট্যাব ১ (psc-instance-1) থেকে স্টোরেজ বাকেটের gsutil লুকআপ পরিদর্শন করুন

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

gsutil -D ls gs://$BUCKET_NAME

ডিবাগ লগ নিশ্চিত করে যে "pscendpoint" প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্টের মাধ্যমে স্টোরেজ বাকেটটি অ্যাক্সেসযোগ্য।

আউটপুট:

<snip>
INFO 0131 22:14:18.795986 base_api.py] Making http GET to https://storage-pscendpoint.p.googleapis.com/storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000
INFO 0131 22:14:18.796415 base_api.py] Headers: {u'Host': 'www.googleapis.com',
 'accept': 'application/json',
 'accept-encoding': 'gzip, deflate',
 'content-length': '0',
 'user-agent': 'apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0'}
INFO 0131 22:14:18.796502 base_api.py] Body: (none)
connect: (storage-pscendpoint.p.googleapis.com, 443)
send: 'GET /storage/v1/b/psc-bucket/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\ncontent-length: 0\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\nhost: www.googleapis.com\r\nauthorization: Bearer ya29.c.KpkB7wd3XWiYeRyTuth5_HPlNV-hPwc2Nn7RSIeMpzrpa_j4EsMPl2m_mDGKAcGHvYIgiC5bT2UVQirAPpSbbpToa6G6lkaBbH5SZwHwgNXYfisp5Ww1UjXe4rTa69a_Wp0WesafcwPNnYzDo3xf5VGh3iGhySA04kTXuyT--MgOU8U-XLII2LJQxUWlV8KEdrvyCuqRb-jsDdk_\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
<snip>

ট্যাব ৩ (psc-instance-1) থেকে যাচাই করুন যে আপনার স্টোরেজ বাকেট অ্যাক্সেস করার সময় ব্যবহৃত DNS A রেকর্ডটি আপনার PSC এন্ডপয়েন্ট IP-ই।

@psc-instance-1 ~]$ sudo tcpdump -vv -i eth0 port 53
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
05:02:33.936256 IP (tos 0x0, ttl 64, id 55416, offset 0, flags [DF], proto UDP (17), length 82)
    psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0xcceb!] 34796+ A? storage-pscendpoint.p.googleapis.com. (54)
05:02:33.936269 IP (tos 0x0, ttl 64, id 55417, offset 0, flags [DF], proto UDP (17), length 82)
    psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0x3ebd!] 5632+ AAAA? storage-pscendpoint.p.googleapis.com. (54)
05:02:33.944018 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 98)
    metadata.google.internal.domain > psc-instance-1.c.yourprojectname.42296: [udp sum ok] 34796 q: A? storage-pscendpoint.p.googleapis.com. 1/0/0 storage-pscendpoint.p.googleapis.com. A 10.10.110.10 (70)
05:02:33.946005 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 175)

যাচাই করুন যে প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট আইপি এখন ডিএনএস রেজোলিউশনের জন্য ব্যবহৃত হয়।

ট্যাব১ থেকে

nslookup storage-pscendpoint.p.googleapis.com

আউটপুট

@psc-instance ~]$ nslookup storage-pscendpoint.p.googleapis.com
Server:         169.254.169.254
Address:        169.254.169.254#53

Non-authoritative answer:
Name:   storage-pscendpoint.p.googleapis.com
Address: <pscip>

১৫. পরিষ্কার করার পদক্ষেপ

ভিএম ইনস্ট্যান্স থেকে প্রস্থান করুন (সমস্ত ট্যাব)

exit

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

gcloud compute routers nats delete cloudnat --router=crnat --region=us-central1 --quiet

gcloud compute routers delete crnat --region=us-central1 --quiet

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

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

gsutil rm -r gs://$BUCKET_NAME

gcloud compute instances delete psc-instance-1 --zone=us-central1-a --quiet

gcloud compute instances delete psc-instance-2 --zone=us-central1-a --quiet

gcloud compute firewall-rules delete psclab-ssh --quiet

gcloud compute networks subnets delete psclab-subnet --region us-central1 --quiet

gcloud compute networks delete psc-lab --quiet

কনসোল থেকে, আপনি সঠিক প্রজেক্টটি দেখছেন কিনা তা নিশ্চিত করুন, তারপর Networking Services → Cloud DNS নির্বাচন করুন।

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

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

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

  • ব্যক্তিগত পরিষেবা সংযোগ ব্যবহারের ক্ষেত্রসমূহ
  • নেটওয়ার্কের প্রয়োজনীয়তা
  • সমর্থিত এপিআই
  • একটি ব্যক্তিগত সার্ভিস কানেক্ট এন্ডপয়েন্ট তৈরি করা হয়েছে
  • একটি ক্লাউড স্টোরেজ বাকেট তৈরি করা হয়েছে
  • BOTO কনফিগারেশন ফাইল আপডেট করা হয়েছে
  • একটি NAT GW তৈরি করা হয়েছে
  • আপনার PSC পরিষেবা এন্ডপয়েন্টের সাথে সংযুক্ত VM1-এ gsutil list কমান্ডটি চালান।
  • পাবলিক googleapis.com-কে রিজলভ করে এমন VM2-তে gsutil list কমান্ডটি চালান।
  • DNS রেজোলিউশন যাচাই করতে Tcpdump ব্যবহার করুন।