ক্লাউড রান সহ একটি ওয়েবসাইট স্থাপন করুন

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

ভার্চুয়াল মেশিন (VM) ইনস্ট্যান্স, ক্লাস্টার, পড, সার্ভিস এবং আরও অনেক কিছু তৈরি ও পরিচালনার অতিরিক্ত ঝামেলার কারণে ওয়েবসাইট চালানো কঠিন হতে পারে। বড়, বহুস্তরীয় অ্যাপের ক্ষেত্রে এটা ঠিক আছে, কিন্তু আপনি যদি শুধু আপনার ওয়েবসাইটটি ডেপ্লয় করে দৃশ্যমান করতে চান, তাহলে এটি একটি বিশাল অতিরিক্ত বোঝা।

Knative- এর গুগল ক্লাউড সংস্করণ Cloud Run-এর মাধ্যমে, আপনি VM- বা Kubernetes-ভিত্তিক ডেপ্লয়মেন্টের মতো অতিরিক্ত জটিলতা ছাড়াই আপনার ওয়েবসাইট পরিচালনা ও ডেপ্লয় করতে পারেন। এটি কেবল ব্যবস্থাপনার দিক থেকেই একটি সহজতর পদ্ধতি নয়, বরং আপনার ওয়েবসাইটে কোনো অনুরোধ না এলে এটি আপনাকে সিস্টেমকে শূন্যে নামিয়ে আনার সক্ষমতাও দেয়।

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

পূর্বশর্ত

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

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

আপনি যা তৈরি করবেন

  • একটি স্ট্যাটিক ওয়েবসাইট যা ডকার কন্টেইনারের ভিতরে চলে
  • এই কন্টেইনারটির একটি সংস্করণ যা কন্টেইনার রেজিস্ট্রি- তে থাকে।
  • আপনার স্ট্যাটিক ওয়েবসাইটের জন্য একটি ক্লাউড রান ডেপ্লয়মেন্ট

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

  • প্রজেক্ট তৈরি করার জন্য অ্যাডমিনিস্ট্রেটিভ অ্যাক্সেস সহ একটি গুগল অ্যাকাউন্ট অথবা প্রজেক্ট-মালিকের ভূমিকা সহ একটি প্রজেক্ট।

২. পরিবেশ সেটআপ

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

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

53dad2cefdae71da.png

faab21976aabeb4c.png

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

এরপরে, গুগল ক্লাউড রিসোর্স ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে এবং ক্লাউড রান এপিআই (Cloud Run API) সক্রিয় করতে হবে।

ক্লাউড রান এপিআই সক্রিয় করুন

নেভিগেশন মেনু ☰ > এপিআই ও পরিষেবা > ড্যাশবোর্ড > এপিআই এবং পরিষেবা সক্ষম করুন -এ ক্লিক করুন।

5dbb2e6e27a55fcf.png

‘Cloud Run API’ অনুসন্ধান করুন, তারপর Cloud Run API > Enable-এ ক্লিক করুন।

f1fd486174a744cf.png

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

গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ ডলারের একটি বিনামূল্যে ট্রায়ালের জন্য যোগ্য।

ক্লাউড শেল

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

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

  1. ক্লাউড কনসোল থেকে ক্লাউড শেল সক্রিয় করতে, কেবল 'Activate Cloud Shell'-এ ক্লিক করুন। fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (পরিবেশের জন্য ব্যবস্থা করতে এবং সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত)।

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Screen Shot 2017-06-14 at 10.13.43 PM.png

ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি দেখতে পাবেন যে আপনাকে ইতিমধ্যেই প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার PROJECT_ID তে সেট করা আছে।

gcloud auth list

কমান্ড আউটপুট

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি কোনো কারণে প্রজেক্টটি সেট করা না থাকে, তাহলে নিম্নলিখিত কমান্ডটি দিন:

gcloud config set project <PROJECT_ID>

আপনার PROJECT_ID খুঁজছেন? সেটআপের ধাপগুলিতে আপনি কোন আইডি ব্যবহার করেছিলেন তা দেখে নিন অথবা ক্লাউড কনসোল ড্যাশবোর্ডে এটি খুঁজে দেখুন:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqA BYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

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

echo $GOOGLE_CLOUD_PROJECT

কমান্ড আউটপুট

<PROJECT_ID>
  1. অবশেষে, ডিফল্ট জোন এবং প্রজেক্ট কনফিগারেশন সেট করুন।
gcloud config set compute/zone us-central1-f

আপনি বিভিন্ন ধরনের জোন বেছে নিতে পারেন। আরও তথ্যের জন্য, অঞ্চল ও জোন দেখুন।

৩. সোর্স রিপোজিটরি ক্লোন করুন

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

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

cd ~
git clone https://github.com/googlecodelabs/monolith-to-microservices.git
cd ~/monolith-to-microservices
./setup.sh

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

যথাযথভাবে খোঁজখবর নিন এবং আপনার অ্যাপটি পরীক্ষা করুন। আপনার ওয়েব সার্ভার চালু করতে নিম্নলিখিত কমান্ডটি চালান:

cd ~/monolith-to-microservices/monolith
npm start

আউটপুট:

Monolith listening on port 8080!

আপনি ওয়েব প্রিভিউ-তে ক্লিক করে আপনার অ্যাপটি প্রিভিউ করতে পারেন। acc630712255c604.png এবং পোর্ট ৮০৮০-তে প্রিভিউ নির্বাচন করা।

5869738f0e9ec386.png

এটি একটি নতুন উইন্ডো খুলবে যেখানে আপনি আপনার ফ্যান্সি স্টোরটিকে কাজ করতে দেখতে পারবেন!

9ed25c3f0cbe62fa.png

ওয়েবসাইটটি দেখার পর আপনি এই উইন্ডোটি বন্ধ করতে পারেন। ওয়েব-সার্ভার প্রসেসটি বন্ধ করতে, টার্মিনাল উইন্ডোতে CONTROL+C (ম্যাকিনটোশে Command+C ) চাপুন।

৪. ক্লাউড বিল্ড দিয়ে ডকার কন্টেইনার তৈরি করুন

এখন যেহেতু আপনার সোর্স ফাইলগুলো প্রস্তুত, আপনার অ্যাপটিকে ডকারাইজ করার সময় এসেছে!

সাধারণত, আপনাকে দুটি ধাপে কাজটি করতে হয়: একটি ডকার কন্টেইনার তৈরি করা এবং GKE-এর পুল করার জন্য ইমেজটি সংরক্ষণ করতে সেটিকে একটি রেজিস্ট্রি-তে পুশ করা। তবে, আপনি ক্লাউড বিল্ড ব্যবহার করে একটিমাত্র কমান্ডের মাধ্যমে ডকার কন্টেইনার তৈরি করে এবং ইমেজটি কন্টেইনার রেজিস্ট্রি-তে রেখে কাজটি আরও সহজ করে তুলতে পারেন! ডকারফাইল তৈরি এবং পুশ করার ম্যানুয়াল প্রক্রিয়াটি দেখতে, কন্টেইনার রেজিস্ট্রি-র জন্য কুইকস্টার্ট দেখুন।

ক্লাউড বিল্ড ডিরেক্টরি থেকে ফাইলগুলোকে কম্প্রেস করে একটি ক্লাউড স্টোরেজ বাকেটে স্থানান্তর করে। এরপর বিল্ড প্রসেসটি বাকেট থেকে সমস্ত ফাইল নিয়ে ডকার বিল্ড প্রসেসটি চালানোর জন্য একই ডিরেক্টরিতে থাকা ডকারফাইলটি ব্যবহার করে। যেহেতু আপনি ডকার ইমেজের জন্য হোস্ট হিসেবে gcr.io সহ --tag ফ্ল্যাগটি নির্দিষ্ট করেছেন, তাই ফলস্বরূপ ডকার ইমেজটি কন্টেইনার রেজিস্ট্রি-তে পুশ করা হবে।

প্রথমে, আপনাকে নিশ্চিত করতে হবে যে আপনার ক্লাউড বিল্ড এপিআই (Cloud Build API) সক্রিয় করা আছে। এটি সক্রিয় করতে নিম্নলিখিত কমান্ডটি চালান:

gcloud services enable cloudbuild.googleapis.com

এপিআই সক্রিয় করার পর, বিল্ড প্রক্রিয়া শুরু করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:

gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 .

এই প্রক্রিয়াটিতে কয়েক মিনিট সময় লাগে, কিন্তু এটি সম্পন্ন হওয়ার পর টার্মিনালে নিচের মতো একটি আউটপুট দেখা যাবে:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ID                                    CREATE_TIME                DURATION  SOURCE                                                                                  IMAGES                              STATUS
1ae295d9-63cb-482c-959b-bc52e9644d53  2019-08-29T01:56:35+00:00  33S       gs://<PROJECT_ID>_cloudbuild/source/1567043793.94-abfd382011724422bf49af1558b894aa.tgz  gcr.io/<PROJECT_ID>/monolith:1.0.0  SUCCESS

আপনার বিল্ড হিস্ট্রি দেখতে বা প্রক্রিয়াটি রিয়েল টাইমে পর্যবেক্ষণ করতে, আপনি ক্লাউড কনসোলে গিয়ে নেভিগেশন মেনু ☰ > ক্লাউড বিল্ড > হিস্ট্রি- তে ক্লিক করতে পারেন। সেখানে আপনি আপনার পূর্ববর্তী সমস্ত বিল্ডের একটি তালিকা দেখতে পাবেন, তবে সেখানে কেবল আপনার তৈরি করা বিল্ডটিই থাকার কথা।

4c753ede203255f6.png

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

6e88ed1643dfe629.png

৫. ক্লাউড রানে কন্টেইনার স্থাপন করুন

এখন যেহেতু আপনি আপনার ওয়েবসাইটটিকে কন্টেইনারাইজ করে কন্টেইনার রেজিস্ট্রি-তে পুশ করেছেন, এটিকে ক্লাউড রান-এ ডিপ্লয় করার সময় এসেছে!

ক্লাউড রানে ডেপ্লয় করার দুটি পদ্ধতি রয়েছে:

  • ক্লাউড রান (সম্পূর্ণরূপে পরিচালিত) হলো এমন একটি PaaS মডেল যেখানে কন্টেইনারের সম্পূর্ণ জীবনচক্র পরিচালিত হয়। এই কোডল্যাবের জন্য আপনি সেই পদ্ধতিটি ব্যবহার করবেন।
  • Cloud Run for Anthos হলো Cloud Run-এর একটি অতিরিক্ত নিয়ন্ত্রণ ব্যবস্থা, যা আপনাকে GKE থেকে আপনার ক্লাস্টার এবং পডগুলো নিয়ে আসার সুযোগ দেয়। আরও তথ্যের জন্য, Google Cloud-এ Cloud Run for Anthos সেট আপ করা দেখুন।

আপনার পূর্বে সেট করা এনভায়রনমেন্ট ভেরিয়েবলগুলো ব্যবহার করে ক্লাউড শেলে কমান্ড-লাইনের উদাহরণগুলো দেওয়া হবে।

কমান্ড লাইন

আপনার অ্যাপটি ডেপ্লয় করতে নিম্নলিখিত কমান্ডটি চালান:

gcloud run deploy --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --platform managed 

আপনাকে জিজ্ঞাসা করা হবে আপনি কোন অঞ্চলে এটি চালাতে চান। আপনার সবচেয়ে কাছের অঞ্চলটি নির্বাচন করুন, তারপর ডিফল্ট প্রস্তাবিত পরিষেবার নাম (মনোলিথ) গ্রহণ করুন।

d52d9419c5166674.png

পরীক্ষার উদ্দেশ্যে, অ্যাপটিতে প্রমাণীকরণবিহীন অনুরোধের অনুমতি দিন। প্রম্পটে y লিখুন।

3a57b32f133dad61.png

স্থাপন যাচাই করুন

ডিপ্লয়মেন্টটি সফলভাবে তৈরি হয়েছে কিনা তা যাচাই করতে, নিম্নলিখিত কমান্ডটি চালান। Pod status Running হতে কয়েক মুহূর্ত সময় লাগতে পারে।

gcloud run services list

[1] ক্লাউড রান (সম্পূর্ণ পরিচালিত) নির্বাচন করুন।

আউটপুট:

SERVICE   REGION    URL  LAST DEPLOYED BY          LAST DEPLOYED AT
✔  monolith  us-east1 <your url>  <your email>  2019-09-16T21:07:38.267Z

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

পরিষেবাগুলির তালিকায় দেওয়া URL-টি আপনার ওয়েব ব্রাউজারে খুলুন এবং আপনি সেই একই ওয়েবসাইটটি দেখতে পাবেন যা আপনি স্থানীয়ভাবে প্রিভিউ করেছিলেন।

৬. কম কনকারেন্সি সহ নতুন রিভিশন তৈরি করুন

এখন, আপনার অ্যাপটি আবার ডেপ্লয় করুন, কিন্তু এবার প্যারামিটারগুলোর মধ্যে একটি পরিবর্তন করুন।

ডিফল্টরূপে, একটি ক্লাউড রান অ্যাপের কনকারেন্সি ভ্যালু ৮০ থাকে, যার অর্থ হলো প্রতিটি কন্টেইনার ইনস্ট্যান্স একবারে সর্বোচ্চ ৮০টি রিকোয়েস্ট পরিচালনা করবে। এটি ফাংশনস অ্যাজ আ সার্ভিস (FaaS) মডেল থেকে একটি বড় পরিবর্তন, যেখানে একটি ইনস্ট্যান্স একবারে একটি রিকোয়েস্ট পরিচালনা করে।

শুধুমাত্র পরীক্ষার উদ্দেশ্যে, কনকারেন্সি ভ্যালু ১ দিয়ে একই কন্টেইনার ইমেজটি পুনরায় ডিপ্লয় করুন এবং দেখুন কী ঘটে।

gcloud run deploy --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --platform managed --concurrency 1

পরবর্তী প্রশ্নগুলোর উত্তর ঠিক প্রথমবারের মতোই দিন। কমান্ডটি সফল হলে, ফলাফল দেখার জন্য ক্লাউড কনসোল দেখুন।

ক্লাউড রান ড্যাশবোর্ড থেকে, বিস্তারিত দেখতে মনোলিথ সার্ভিসটিতে ক্লিক করুন।

7d1eed2e4728a4f2.png

রিভিশন ট্যাবে ক্লিক করুন। আপনি দুটি রিভিশন তৈরি হতে দেখবেন। monolith-00002- এ ক্লিক করুন এবং বিবরণ পর্যালোচনা করুন। আপনি দেখবেন কনকারেন্সি মান কমে ১ হয়ে গেছে।

217185c0eccc87dd.png ]

4ad481b8bcd0343d.png

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

এখন, পুনরায় ডিপ্লয় না করেই আসল কনকারেন্সি পুনরুদ্ধার করুন। আপনি কনকারেন্সি ভ্যালুটি ডিফল্ট ৮০ বা ০-তে সেট করতে পারেন, যা কনকারেন্সির সমস্ত সীমাবদ্ধতা দূর করবে এবং এটিকে ডিফল্ট সর্বোচ্চ মানে সেট করবে (যা এই লেখাটির সময় ৮০)।

বর্তমান রিভিশন আপডেট করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:

gcloud run deploy --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --platform managed --concurrency 80

লক্ষ্য করুন যে আরেকটি রিভিশন তৈরি করা হয়েছে, ট্র্যাফিক পুনঃনির্দেশিত করা হয়েছে এবং কনকারেন্সি আবার ৮০-তে ফিরে এসেছে।

৭. ওয়েবসাইটে পরিবর্তন আনুন

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

মনে হচ্ছে আপনার একজন ডেভেলপার ইতিমধ্যেই index.js.new নামে ফাইলটিতে পরিবর্তনগুলো তৈরি করে ফেলেছেন। আপনি শুধু ফাইলটি index.js এ কপি করলেই আপনার পরিবর্তনগুলো প্রতিফলিত হবে। যথাযথ পরিবর্তনগুলো করার জন্য নির্দেশাবলী অনুসরণ করুন।

নিম্নলিখিত কমান্ডগুলো চালান, আপডেট করা ফাইলটি সঠিক নামে কপি করুন এবং পরিবর্তনগুলো যাচাই করার জন্য এর বিষয়বস্তু প্রিন্ট করুন:

cd ~/monolith-to-microservices/react-app/src/pages/Home
mv index.js.new index.js
cat ~/monolith-to-microservices/react-app/src/pages/Home/index.js

ফলস্বরূপ কোডটি দেখতে এইরকম হবে:

/*
Copyright 2019 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Paper from "@material-ui/core/Paper";
import Typography from "@material-ui/core/Typography";
const useStyles = makeStyles(theme => ({
  root: {
    flexGrow: 1
  },
  paper: {
    width: "800px",
    margin: "0 auto",
    padding: theme.spacing(3, 2)
  }
}));
export default function Home() {
  const classes = useStyles();
  return (
    <div className={classes.root}>
      <Paper className={classes.paper}>
        <Typography variant="h5">
          Fancy Fashion &amp; Style Online
        </Typography>
        <br />
        <Typography variant="body1">
          Tired of mainstream fashion ideas, popular trends and societal norms?
          This line of lifestyle products will help you catch up with the Fancy trend and express your personal style.
          Start shopping Fancy items now!
        </Typography>
      </Paper>
    </div>
  );
}

আপনি React কম্পোনেন্টগুলো আপডেট করেছেন, কিন্তু স্ট্যাটিক ফাইলগুলো তৈরি করার জন্য আপনাকে React অ্যাপটি বিল্ড করতে হবে। React অ্যাপটি বিল্ড করতে নিম্নলিখিত কমান্ডটি চালান এবং এটি monolith পাবলিক ডিরেক্টরিতে কপি করুন:

cd ~/monolith-to-microservices/react-app
npm run build:monolith

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

২.০.০-এর আপডেট করা ইমেজ সংস্করণ সহ একটি নতুন ক্লাউড বিল্ড চালু করতে নিম্নলিখিত কমান্ডটি চালান:

cd ~/monolith-to-microservices/monolith

#Feel free to test your application
npm start

gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .

পরবর্তী অংশে, আপনি সেই ছবিটি ব্যবহার করে কোনো ডাউনটাইম ছাড়াই আপনার অ্যাপ আপডেট করবেন।

৮. কোনো ডাউনটাইম ছাড়াই ওয়েবসাইট আপডেট করুন

পরিবর্তনগুলো সম্পন্ন হয়েছে এবং মার্কেটিং টিম আপনার আপডেটে সন্তুষ্ট! এখন ব্যবহারকারীদের কোনো অসুবিধা না করে ওয়েবসাইটটি আপডেট করার সময় হয়েছে।

ক্লাউড রান প্রতিটি ডেপ্লয়মেন্টকে একটি নতুন রিভিশন হিসেবে গণ্য করে, যেটিকে অনলাইন করার পর ট্র্যাফিক সেদিকে পুনঃনির্দেশিত করা হবে।

আপনার ওয়েবসাইট আপডেট করতে নিম্নলিখিত নির্দেশাবলী অনুসরণ করুন।

কমান্ড লাইন

কমান্ড লাইন থেকে, আপনি নিম্নলিখিত কমান্ডের সাহায্যে সার্ভিসটি পুনরায় ডিপ্লয় করে ইমেজটিকে একটি নতুন সংস্করণে আপডেট করতে পারেন:

gcloud run deploy --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 --platform managed

স্থাপন যাচাই করুন

নিম্নলিখিত কমান্ডটি চালিয়ে আপনার ডেপ্লয়মেন্ট আপডেটটি যাচাই করুন:

gcloud run services describe monolith --platform managed 

আউটপুটটি দেখতে এইরকম:

apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
  annotations:
    client.knative.dev/user-image: gcr.io/my-cloudrun-codelab/monolith:2.0.0
...

আপনি দেখতে পাবেন যে আপনার পরিষেবাটি এখন একটি নতুন রিভিশনে ডেপ্লয় করা আপনার ইমেজের সর্বশেষ সংস্করণটি ব্যবহার করছে।

আপনার পরিবর্তনগুলি যাচাই করতে, আবার আপনার ক্লাউড রান পরিষেবার এক্সটার্নাল ইউআরএল-এ যান এবং লক্ষ্য করুন যে আপনার অ্যাপের শিরোনাম আপডেট করা হয়েছে।

সার্ভিসগুলোর তালিকা দেখতে এবং আইপি অ্যাড্রেস ভুলে গেলে তা দেখার জন্য নিম্নলিখিত কমান্ডটি চালান:

gcloud run services list

আপনার ওয়েবসাইটে এখন সেই লেখাটি প্রদর্শিত হবে যা আপনি হোম পেজ কম্পোনেন্টে যোগ করেছেন!

451ca252acae6928.png

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

কন্টেইনার রেজিস্ট্রি ইমেজগুলি মুছে ফেলুন

# Delete the container image for version 1.0.0 of our monolith
gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --quiet

# Delete the container image for version 2.0.0 of our monolith
gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 --quiet

ক্লাউড স্টোরেজ থেকে ক্লাউড বিল্ড আর্টিফ্যাক্টগুলি মুছে ফেলুন

# The following command will take all source archives from all builds and delete them from cloud storage

# Run this command to print all sources:
# gcloud builds list | awk 'NR > 1 {print $4}' 

gcloud builds list | awk 'NR > 1 {print $4}' | while read line; do gsutil rm $line; done

ক্লাউড রান পরিষেবা মুছে ফেলুন

gcloud run services delete monolith --platform managed

১০. অভিনন্দন

আপনি ক্লাউড রান ব্যবহার করে আপনার ওয়েবসাইটটি স্থাপন, সম্প্রসারণ এবং আপডেট করেছেন।

আরও জানুন