1. ভূমিকা
কেন একটি একচেটিয়া অ্যাপ্লিকেশন থেকে একটি মাইক্রোসার্ভিসেস আর্কিটেকচারে স্থানান্তরিত হবে? একটি অ্যাপ্লিকেশনকে মাইক্রোসার্ভিসে ভাঙ্গার নিম্নলিখিত সুবিধা রয়েছে; এর বেশিরভাগই এই সত্য থেকে উদ্ভূত যে মাইক্রোসার্ভিসগুলি শিথিলভাবে সংযুক্ত।
- মাইক্রোসার্ভিসগুলি স্বাধীনভাবে পরীক্ষা এবং স্থাপন করা যেতে পারে। স্থাপনার ইউনিট যত ছোট, স্থাপনা তত সহজ।
- এগুলি বিভিন্ন ভাষা এবং কাঠামোতে প্রয়োগ করা যেতে পারে। প্রতিটি মাইক্রোসার্ভিসের জন্য, আপনি তার নির্দিষ্ট ব্যবহারের ক্ষেত্রে সেরা প্রযুক্তি বেছে নিতে পারবেন।
- তারা বিভিন্ন দল দ্বারা পরিচালিত হতে পারে। মাইক্রোসার্ভিসের মধ্যে সীমানা একটি দলকে এক বা একাধিক মাইক্রোসার্ভিসে উত্সর্গ করা সহজ করে তোলে।
- মাইক্রোসার্ভিসে যাওয়ার মাধ্যমে, আপনি দলগুলোর মধ্যে নির্ভরতা কমিয়ে দেন। প্রতিটি দলকে তারা যে মাইক্রোসার্ভিসের উপর নির্ভরশীল তাদের শুধুমাত্র APIs সম্পর্কে যত্ন নিতে হবে। এই মাইক্রোসার্ভিসগুলি কীভাবে বাস্তবায়িত হয়, তাদের প্রকাশের চক্রগুলি সম্পর্কে দলটিকে ভাবতে হবে না।
- আপনি ব্যর্থতার জন্য আরও সহজে ডিজাইন করতে পারেন। পরিষেবাগুলির মধ্যে স্পষ্ট সীমানা থাকার দ্বারা, কোনও পরিষেবা বন্ধ থাকলে কী করতে হবে তা নির্ধারণ করা সহজ৷
মনোলিথের সাথে তুলনা করার সময় কিছু অসুবিধা হল:
- যেহেতু একটি মাইক্রোসার্ভিস-ভিত্তিক অ্যাপ হল বিভিন্ন পরিষেবার একটি নেটওয়ার্ক যা প্রায়শই এমনভাবে ইন্টারঅ্যাক্ট করে যা স্পষ্ট নয়, সিস্টেমের সামগ্রিক জটিলতা বাড়তে থাকে।
- একটি মনোলিথের অভ্যন্তরীণ থেকে ভিন্ন, মাইক্রোসার্ভিসেস একটি নেটওয়ার্কের মাধ্যমে যোগাযোগ করে। কিছু পরিস্থিতিতে, এটি একটি নিরাপত্তা উদ্বেগ হিসাবে দেখা যেতে পারে। Istio স্বয়ংক্রিয়ভাবে মাইক্রোসার্ভিসের মধ্যে ট্রাফিক এনক্রিপ্ট করে এই সমস্যার সমাধান করে।
- পরিষেবাগুলির মধ্যে বিলম্বের কারণে একচেটিয়া পদ্ধতির মতো পারফরম্যান্সের একই স্তর অর্জন করা কঠিন হতে পারে।
- আপনার সিস্টেমের আচরণ একটি একক পরিষেবা দ্বারা সৃষ্ট নয়, কিন্তু তাদের অনেকের দ্বারা এবং তাদের মিথস্ক্রিয়া দ্বারা সৃষ্ট। এই কারণে, আপনার সিস্টেম কীভাবে উত্পাদনে আচরণ করে (এর পর্যবেক্ষণযোগ্যতা) তা বোঝা কঠিন। ইসটিও এই সমস্যারও একটি সমাধান।
এই ল্যাবে আমরা Google Kubernetes Engine (GKE) মাইক্রোসার্ভিস চালাব। Kubernetes হল একটি প্ল্যাটফর্ম যা পরিচালনা, হোস্ট, স্কেল এবং কন্টেইনার স্থাপন করার জন্য। কন্টেইনারগুলি প্যাকেজিং এবং চলমান কোডের একটি বহনযোগ্য উপায়। এগুলি মাইক্রোসার্ভিস প্যাটার্নের জন্য উপযুক্ত, যেখানে প্রতিটি মাইক্রোসার্ভিস নিজস্ব পাত্রে চলতে পারে।
এই ল্যাবের জন্য, আমরা একটি Google Kubernetes ইঞ্জিন ক্লাস্টারে একটি বিদ্যমান মনোলিথিক অ্যাপ্লিকেশন স্থাপন করব, তারপর এটিকে মাইক্রোসার্ভিসে বিভক্ত করব!
আমাদের মাইক্রোসার্ভিসের আর্কিটেকচার ডায়াগ্রাম
আমরা আমাদের মনোলিথকে তিনটি মাইক্রোসার্ভিসে ভাগ করে শুরু করব, একবারে একটি। মাইক্রোসার্ভিসের মধ্যে রয়েছে, অর্ডার, পণ্য এবং ফ্রন্টেন্ড। আমরা ক্লাউড বিল্ড ব্যবহার করে প্রতিটি মাইক্রোসার্ভিসের জন্য একটি ডকার ইমেজ তৈরি করি, যা আমরা ক্লাউড শেল থেকে ট্রিগার করি। তারপরে আমরা একটি Kubernetes পরিষেবা টাইপ LoadBalancer সহ Google Kubernetes Engine (GKE) এ আমাদের মাইক্রোসার্ভিসগুলি স্থাপন এবং প্রকাশ করব৷ আমরা প্রতিটি পরিষেবার জন্য একই সাথে আমাদের মনোলিথ থেকে তাদের রিফ্যাক্টর করার সময় এটি করব। প্রক্রিয়া চলাকালীন আমরা আমাদের মনোলিথ এবং আমাদের মাইক্রোসার্ভিস উভয়ই শেষ পর্যন্ত চলমান থাকবে যখন আমরা আমাদের মনোলিথ মুছে ফেলতে সক্ষম হব।
আপনি কি শিখবেন
- মাইক্রোসার্ভিসেসের জন্য মনোলিথকে কীভাবে ভেঙে ফেলা যায়
- কিভাবে একটি Google Kubernetes ইঞ্জিন ক্লাস্টার তৈরি করবেন
- কিভাবে একটি ডকার ইমেজ তৈরি করতে হয়
- কুবারনেটসে ডকার ইমেজ কিভাবে স্থাপন করবেন
পূর্বশর্ত
- প্রজেক্ট তৈরি করতে প্রশাসনিক অ্যাক্সেস সহ একটি Google ক্লাউড প্ল্যাটফর্ম অ্যাকাউন্ট বা প্রকল্প মালিকের ভূমিকা সহ একটি প্রকল্প৷
- ডকার এবং কুবারনেটসের একটি প্রাথমিক ধারণা
2. পরিবেশ সেটআপ
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
আপনার যদি ইতিমধ্যে একটি Google অ্যাকাউন্ট না থাকে (Gmail বা Google Apps), তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে। Google ক্লাউড প্ল্যাটফর্ম কনসোলে সাইন-ইন করুন ( console.cloud.google.com ) এবং একটি নতুন প্রকল্প তৈরি করুন:
প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID
হিসাবে উল্লেখ করা হবে।
পরবর্তীতে, Google ক্লাউড সংস্থানগুলি ব্যবহার করতে এবং Container Engine API সক্ষম করতে আপনাকে বিকাশকারী কনসোলে বিলিং সক্ষম করতে হবে৷
এই কোডল্যাবের মাধ্যমে চালানোর জন্য আপনার কয়েক ডলারের বেশি খরচ করা উচিত নয়, তবে আপনি যদি আরও সংস্থান ব্যবহার করার সিদ্ধান্ত নেন বা আপনি যদি সেগুলিকে চলমান রেখে দেন তবে এটি আরও বেশি হতে পারে (এই নথির শেষে "পরিষ্কার" বিভাগটি দেখুন)। Google Kubernetes ইঞ্জিন মূল্য এখানে নথিভুক্ত করা হয়েছে।
Google ক্লাউড প্ল্যাটফর্মের নতুন ব্যবহারকারীরা $300 বিনামূল্যের ট্রায়ালের জন্য যোগ্য৷
গুগল ক্লাউড শেল
Google ক্লাউড এবং কুবারনেটস আপনার ল্যাপটপ থেকে দূরবর্তীভাবে চালানো যেতে পারে, এই কোডল্যাবে আমরা Google ক্লাউড শেল ব্যবহার করব, ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।
এই ডেবিয়ান-ভিত্তিক ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত বিকাশের সরঞ্জামগুলির সাথে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এর মানে হল যে এই কোডল্যাবের জন্য আপনার যা দরকার তা হল একটি ব্রাউজার (হ্যাঁ, এটি একটি Chromebook এ কাজ করে)।
- ক্লাউড কনসোল থেকে ক্লাউড শেল সক্রিয় করতে, কেবল ক্লাউড শেল সক্রিয় করুন ক্লিক করুন (পরিবেশের সাথে সংযোগ স্থাপন এবং সংযোগের জন্য এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে)।
একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রকল্পটি ইতিমধ্যেই আপনার 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
খুঁজছেন? সেটআপ ধাপে আপনি কোন আইডি ব্যবহার করেছেন তা দেখুন বা ক্লাউড কনসোল ড্যাশবোর্ডে দেখুন:
ক্লাউড শেল ডিফল্টরূপে কিছু এনভায়রনমেন্ট ভেরিয়েবলও সেট করে, যা আপনার ভবিষ্যত কমান্ড চালানোর সময় কার্যকর হতে পারে।
echo $GOOGLE_CLOUD_PROJECT
কমান্ড আউটপুট
<PROJECT_ID>
- অবশেষে, ডিফল্ট জোন এবং প্রকল্প কনফিগারেশন সেট করুন।
gcloud config set compute/zone us-central1-f
আপনি বিভিন্ন জোন বিভিন্ন চয়ন করতে পারেন. আরও তথ্যের জন্য, অঞ্চল এবং অঞ্চল দেখুন।
3. ক্লোন সোর্স রিপোজিটরি
আমরা একটি কাল্পনিক ইকমার্স ওয়েবসাইটের একটি বিদ্যমান মনোলিথিক অ্যাপ্লিকেশন ব্যবহার করি, একটি সাধারণ স্বাগত পৃষ্ঠা, একটি পণ্য পৃষ্ঠা এবং একটি অর্ডার ইতিহাস পৃষ্ঠা সহ৷ আমাদের শুধু আমাদের গিট রেপো থেকে উত্সটি ক্লোন করতে হবে, যাতে আমরা এটিকে মাইক্রোসার্ভিসে বিভক্ত করার এবং Google Kubernetes Engine (GKE) এ স্থাপন করার উপর ফোকাস করতে পারি।
আপনার ক্লাউড শেল ইনস্ট্যান্সে গিট রেপো ক্লোন করতে নিম্নলিখিত কমান্ডগুলি চালান এবং উপযুক্ত ডিরেক্টরিতে পরিবর্তন করুন। আমরা নোডজেএস নির্ভরতাগুলিও ইনস্টল করব যাতে আমরা স্থাপন করার আগে আমাদের মনোলিথ পরীক্ষা করতে পারি। এই স্ক্রিপ্টটি চালানোর জন্য কয়েক মিনিট সময় লাগতে পারে৷
cd ~ git clone https://github.com/googlecodelabs/monolith-to-microservices.git cd ~/monolith-to-microservices ./setup.sh
এটি আমাদের Github রেপো ক্লোন করবে, ডিরেক্টরিতে পরিবর্তন করবে এবং স্থানীয়ভাবে আমাদের অ্যাপ্লিকেশন চালানোর জন্য প্রয়োজনীয় নির্ভরতাগুলি ইনস্টল করবে। এই স্ক্রিপ্টটি চালানোর জন্য কয়েক মিনিট সময় লাগতে পারে৷
4. একটি GKE ক্লাস্টার তৈরি করুন
এখন যেহেতু আপনার কাজের বিকাশকারী পরিবেশ রয়েছে, আমাদের একচেটিয়া স্থাপন করার জন্য আমাদের একটি কুবারনেটস ক্লাস্টার প্রয়োজন এবং শেষ পর্যন্ত আমাদের মাইক্রোসার্ভিসেস! আমরা একটি ক্লাস্টার তৈরি করতে পারার আগে, আমাদের নিশ্চিত করতে হবে যে সঠিক API গুলি সক্ষম করা আছে। কন্টেইনার এপিআই সক্ষম করতে নিম্নলিখিত কমান্ডটি চালান যাতে আমরা গুগল কুবারনেটস ইঞ্জিন ব্যবহার করতে পারি:
gcloud services enable container.googleapis.com
এখন আমরা আমাদের ক্লাস্টার তৈরি করতে প্রস্তুত! 3 নোড সহ ফ্যান্সি-ক্লাস্টার নামে একটি GKE ক্লাস্টার তৈরি করতে নীচের কমান্ডটি চালান।
gcloud container clusters create fancy-cluster --num-nodes 3
ক্লাস্টার তৈরি হতে কয়েক মিনিট সময় লাগতে পারে। কমান্ডটি সম্পন্ন হলে, নিম্নলিখিত কমান্ডটি চালান এবং ক্লাস্টারের তিনটি কর্মী VM দৃষ্টান্ত দেখুন:
gcloud compute instances list
আউটপুট:
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS gke-fancy-cluster-default-pool-ad92506d-1ng3 us-east4-a n1-standard-1 10.150.0.7 XX.XX.XX.XX RUNNING gke-fancy-cluster-default-pool-ad92506d-4fvq us-east4-a n1-standard-1 10.150.0.5 XX.XX.XX.XX RUNNING gke-fancy-cluster-default-pool-ad92506d-4zs3 us-east4-a n1-standard-1 10.150.0.6 XX.XX.XX.XX RUNNING
আপনি Google ক্লাউড কনসোলে আপনার Kubernetes ক্লাস্টার এবং সম্পর্কিত তথ্য দেখতে পারেন। উপরের বামে মেনু বোতামে ক্লিক করুন, কুবারনেটস ইঞ্জিনে নিচে স্ক্রোল করুন এবং ক্লাস্টারে ক্লিক করুন। আপনার ফ্যান্সি-ক্লাস্টার নামের ক্লাস্টার দেখতে হবে।
অভিনন্দন! আপনি এইমাত্র আপনার প্রথম Kubernetes ক্লাস্টার তৈরি করেছেন!
5. বিদ্যমান মনোলিথ স্থাপন করুন
যেহেতু এই ল্যাবের ফোকাস হল একটি মনোলিথকে মাইক্রোসার্ভিসে ভেঙ্গে ফেলার মাধ্যমে, আমাদেরকে একটি মনোলিথ অ্যাপ্লিকেশন চালু করতে হবে। এই ল্যাবের উদ্দেশ্যে আমাদের GKE ক্লাস্টারে একটি মনোলিথ অ্যাপ্লিকেশন স্থাপন করতে নিম্নলিখিত স্ক্রিপ্টটি চালান:
cd ~/monolith-to-microservices ./deploy-monolith.sh
মনোলিথ অ্যাক্সেস করা
আমাদের মনোলিথ অ্যাপ্লিকেশনের জন্য বাহ্যিক আইপি ঠিকানা খুঁজে পেতে, নিম্নলিখিত কমান্ডটি চালান।
kubectl get service monolith
আপনি নিম্নলিখিত অনুরূপ আউটপুট দেখতে হবে:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE monolith 10.3.251.122 203.0.113.0 80:30877/TCP 3d
দ্রষ্টব্য: এটির জন্য একটি বাহ্যিক লোড ব্যালেন্সার এবং IP এর ব্যবস্থা করা দরকার তাই এটি ঘটতে কিছু সময় লাগবে। যদি আপনার আউটপুট বহিরাগত আইপি হিসাবে তালিকাভুক্ত করে
<pending>
কয়েক মিনিট সময় দিন এবং আবার চেষ্টা করুন।
একবার আপনি আপনার মনোলিথের জন্য বাহ্যিক আইপি ঠিকানা নির্ধারণ করলে, IP ঠিকানাটি অনুলিপি করুন। আপনার মনোলিথ অ্যাক্সেসযোগ্য কিনা তা পরীক্ষা করতে আপনার ব্রাউজারটিকে এই URL (যেমন http://203.0.113.0) নির্দেশ করুন৷
আপনি উপরের ছবির মতই মনোলিথিক ওয়েবসাইটের জন্য স্বাগত পৃষ্ঠাটি দেখতে পাবেন। স্বাগত পৃষ্ঠাটি একটি স্ট্যাটিক পৃষ্ঠা যা পরবর্তীতে ফ্রন্টএন্ড মাইক্রোসার্ভিস দ্বারা পরিবেশিত হবে। আপনি এখন আপনার মনোলিথ সম্পূর্ণরূপে কুবারনেটসে চলছে!
6. মাইক্রোসার্ভিসে অর্ডার স্থানান্তর করুন
এখন যেহেতু আমাদের বিদ্যমান মনোলিথ ওয়েবসাইট GKE-তে চলছে, আমরা প্রতিটি পরিষেবাকে একটি মাইক্রোসার্ভিসে ভাঙতে শুরু করতে পারি। সাধারণত, ব্যবসায়িক ডোমেনের মতো অ্যাপ্লিকেশনের নির্দিষ্ট অংশগুলির আশেপাশে কোন পরিষেবাগুলিকে ছোট ছোট অংশে ভাগ করতে হবে তার উপর একটি পরিকল্পনা প্রচেষ্টা করা উচিত। প্রদর্শনের উদ্দেশ্যে, আমরা একটি তুচ্ছ উদাহরণ তৈরি করেছি এবং ব্যবসার ডোমেন, অর্ডার, পণ্য এবং ফ্রন্টেন্ডের চারপাশে প্রতিটি পরিষেবাকে ভেঙে দিয়েছি। কোডটি ইতিমধ্যেই স্থানান্তরিত করা হয়েছে এবং আমরা Google Kubernetes Engine (GKE) তে পরিষেবাগুলি তৈরি এবং স্থাপনের দিকে মনোনিবেশ করব।
নতুন অর্ডার মাইক্রোসার্ভিস তৈরি করুন
আমরা প্রথম যে পরিষেবাটি ভেঙে দেব তা হল অর্ডার পরিষেবা। আমরা প্রদত্ত পৃথক কোডবেস ব্যবহার করব এবং এই পরিষেবার জন্য একটি পৃথক ডকার কন্টেইনার তৈরি করব।
গুগল ক্লাউড বিল্ড দিয়ে ডকার কন্টেইনার তৈরি করুন
যেহেতু আমরা ইতিমধ্যেই আপনার জন্য কোডবেস স্থানান্তরিত করেছি, তাই আমাদের প্রথম পদক্ষেপ হবে Google ক্লাউড বিল্ড ব্যবহার করে আমাদের অর্ডার পরিষেবার একটি ডকার কন্টেইনার তৈরি করা।
সাধারণত আপনাকে একটি দুই ধাপের পন্থা অবলম্বন করতে হবে যার মধ্যে একটি ডকার কন্টেইনার তৈরি করা এবং এটিকে একটি রেজিস্ট্রিতে ঠেলে GKE থেকে তোলার জন্য ছবিটি সংরক্ষণ করতে হবে। কিন্তু আমরা জীবনকে আরও সহজ করে তুলতে পারি, আমরা ডকার কন্টেইনার তৈরি করতে গুগল ক্লাউড বিল্ড ব্যবহার করতে পারি এবং একটি একক কমান্ডের সাহায্যে ছবিটিকে গুগল ক্লাউড কন্টেইনার রেজিস্ট্রিতে রাখতে পারি! এটি আমাদের ইমেজ তৈরি এবং কনটেইনার রেজিস্ট্রিতে সরানোর জন্য একটি একক কমান্ড জারি করতে দেয়। একটি ডকার ফাইল তৈরি এবং এটি পুশ করার ম্যানুয়াল প্রক্রিয়া দেখতে আপনি এখানে যেতে পারেন।
Google ক্লাউড বিল্ড ডিরেক্টরি থেকে ফাইলগুলিকে সংকুচিত করবে এবং সেগুলিকে Google ক্লাউড স্টোরেজ বালতিতে নিয়ে যাবে৷ বিল্ড প্রক্রিয়াটি তখন বালতি থেকে সমস্ত ফাইল নেবে এবং ডকার বিল্ড প্রক্রিয়া চালানোর জন্য ডকারফাইল ব্যবহার করবে। যেহেতু আমরা ডকার ইমেজের জন্য gcr.io হিসাবে হোস্টের সাথে --tag
পতাকা নির্দিষ্ট করেছি, ফলে ডকার ইমেজটি Google ক্লাউড কন্টেইনার রেজিস্ট্রিতে পুশ করা হবে।
আপনার ডকার কন্টেইনার তৈরি করতে নিম্নলিখিত কমান্ডগুলি চালান এবং এটিকে Google কন্টেইনার রেজিস্ট্রিতে পুশ করুন:
cd ~/monolith-to-microservices/microservices/src/orders gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/orders: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>/orders:1.0.0 SUCCESS
আপনার বিল্ড ইতিহাস দেখতে বা রিয়েল টাইমে প্রক্রিয়াটি দেখতে, আপনি Google ক্লাউড কনসোলে যেতে পারেন। উপরের বাম দিকের মেনু বোতামে ক্লিক করুন এবং টুলস → ক্লাউড বিল্ডে স্ক্রোল করুন এবং ইতিহাসে ক্লিক করুন। এখানে আপনি আপনার সমস্ত পূর্ববর্তী বিল্ডগুলির একটি তালিকা দেখতে পারেন, শুধুমাত্র 1টি হওয়া উচিত যা আপনি এইমাত্র তৈরি করেছেন৷
আপনি যদি বিল্ড আইডিতে ক্লিক করেন, আপনি লগ আউটপুট সহ সেই বিল্ডের সমস্ত বিবরণ দেখতে পাবেন।
বিল্ড বিশদ পৃষ্ঠা থেকে আপনি বিল্ড তথ্য বিভাগে ছবির নামের উপর ক্লিক করে তৈরি করা কন্টেইনার চিত্রটি দেখতে পারেন।
GKE-তে কন্টেইনার স্থাপন করুন
এখন যেহেতু আমরা আমাদের ওয়েবসাইটকে কনটেইনারাইজ করেছি এবং আমাদের কন্টেইনারটিকে Google কন্টেইনার রেজিস্ট্রিতে ঠেলে দিয়েছি, এটি কুবারনেটে স্থাপন করার সময়!
কুবারনেটস অ্যাপ্লিকেশনগুলিকে পড হিসাবে উপস্থাপন করে, যা একক যা একটি ধারক (বা শক্তভাবে জোড়াযুক্ত পাত্রের গ্রুপ) প্রতিনিধিত্ব করে। পড হল কুবারনেটসের সবচেয়ে ছোট স্থাপনযোগ্য ইউনিট। এই টিউটোরিয়ালে, প্রতিটি পডে শুধুমাত্র আপনার মাইক্রোসার্ভিস কন্টেইনার রয়েছে।
একটি GKE ক্লাস্টারে অ্যাপ্লিকেশন স্থাপন এবং পরিচালনা করতে, আপনাকে অবশ্যই কুবারনেটস ক্লাস্টার ম্যানেজমেন্ট সিস্টেমের সাথে যোগাযোগ করতে হবে। আপনি সাধারণত ক্লাউড শেল থেকে kubectl কমান্ড-লাইন টুল ব্যবহার করে এটি করেন।
প্রথমে আমরা একটি স্থাপনার সংস্থান তৈরি করব। স্থাপনা আপনার অ্যাপ্লিকেশনের একাধিক অনুলিপি পরিচালনা করে, যাকে বলা হয় প্রতিলিপি, এবং সেগুলিকে আপনার ক্লাস্টারের পৃথক নোডগুলিতে চালানোর জন্য নির্ধারিত করে। এই ক্ষেত্রে, Deployment আপনার আবেদনের শুধুমাত্র একটি Pod চালাবে। স্থাপনাগুলি একটি ReplicaSet তৈরি করে এটি নিশ্চিত করে। ReplicaSet নির্দিষ্ট প্রতিলিপি সংখ্যা সর্বদা চলমান তা নিশ্চিত করার জন্য দায়ী।
নীচের kubectl create deployment
কমান্ডটি কুবারনেটসকে 1টি প্রতিরূপ সহ আপনার ক্লাস্টারে একটি ডিপ্লোয়মেন্ট নামের অর্ডার তৈরি করে।
আপনার অ্যাপ্লিকেশন স্থাপন করতে নিম্নলিখিত কমান্ডটি চালান:
kubectl create deployment orders --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/orders:1.0.0
স্থাপনা যাচাই করুন
ডিপ্লয়মেন্ট সফলভাবে তৈরি হয়েছে তা যাচাই করতে, নিম্নলিখিত কমান্ডটি চালান, পড স্ট্যাটাস চালু হতে কয়েক মুহূর্ত সময় লাগতে পারে:
kubectl get all
আউটপুট:
NAME READY STATUS RESTARTS AGE pod/monolith-779c8d95f5-dxnzl 1/1 Running 0 15h pod/orders-5bc6969d76-kdxkk 1/1 Running 0 21s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.39.240.1 <none> 443/TCP 19d service/monolith LoadBalancer 10.39.241.130 34.74.209.57 80:30412/TCP 15h NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/monolith 1/1 1 1 15h deployment.apps/orders 1/1 1 1 21s NAME DESIRED CURRENT READY AGE replicaset.apps/monolith-779c8d95f5 1 1 1 15h replicaset.apps/orders-5bc6969d76 1 1 1 21s
এই আউটপুট আমাদের বিভিন্ন জিনিস দেখায়. আমরা আমাদের ডিপ্লয়মেন্ট দেখতে পাচ্ছি যা বর্তমান, আমাদের রেপ্লিকাসেট কাঙ্ক্ষিত পড সংখ্যা 1 এবং আমাদের পড যা চলছে। সবকিছু সফলভাবে তৈরি করা হয়েছে বলে মনে হচ্ছে!
GKE কন্টেইনার প্রকাশ করুন
আমরা আমাদের অ্যাপ্লিকেশনটি GKE-তে স্থাপন করেছি, কিন্তু ক্লাস্টারের বাইরে এটি অ্যাক্সেস করার কোনো উপায় আমাদের কাছে নেই। ডিফল্টরূপে, আপনি GKE তে যে কন্টেইনারগুলি চালান সেগুলি ইন্টারনেট থেকে অ্যাক্সেসযোগ্য নয়, কারণ তাদের বাহ্যিক IP ঠিকানা নেই৷ আপনাকে অবশ্যই একটি পরিষেবা সংস্থানের মাধ্যমে ইন্টারনেট থেকে ট্র্যাফিকের কাছে আপনার অ্যাপ্লিকেশনটি স্পষ্টভাবে প্রকাশ করতে হবে। একটি পরিষেবা আপনার অ্যাপ্লিকেশনের পডগুলিতে নেটওয়ার্কিং এবং আইপি সমর্থন প্রদান করে। GKE আপনার আবেদনের জন্য একটি বাহ্যিক আইপি এবং একটি লোড ব্যালেন্সার ( বিলিং সাপেক্ষে ) তৈরি করে।
যখন আমরা আমাদের অর্ডার পরিষেবা স্থাপন করেছি, তখন আমরা কুবারনেটস স্থাপনার মাধ্যমে অভ্যন্তরীণভাবে পোর্ট 8081-এ এটিকে প্রকাশ করেছি। এই পরিষেবাটি বাহ্যিকভাবে প্রকাশ করার জন্য, অর্ডার পরিষেবার জন্য আমাদের পোর্ট 80 থেকে বাহ্যিকভাবে অভ্যন্তরীণ পোর্ট 8081-এ ট্র্যাফিক রুট করার জন্য লোডব্যালেন্সার ধরণের একটি কুবারনেটস পরিষেবা তৈরি করতে হবে। আপনার ওয়েবসাইটটি ইন্টারনেটে প্রকাশ করতে নিম্নলিখিত কমান্ডটি চালান:
kubectl expose deployment orders --type=LoadBalancer --port 80 --target-port 8081
পরিষেবা অ্যাক্সেস করা
GKE বাহ্যিক IP ঠিকানা পরিষেবা সংস্থানকে বরাদ্দ করে - স্থাপনায় নয়। আপনি যদি বাহ্যিক আইপি খুঁজে পেতে চান যা GKE আপনার অ্যাপ্লিকেশনের জন্য প্রবিধান করেছে, আপনি kubectl get service কমান্ড দিয়ে পরিষেবাটি পরিদর্শন করতে পারেন:
kubectl get service orders
আউটপুট:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE orders 10.3.251.122 203.0.113.0 80:30877/TCP 3d
একবার আপনি আপনার অ্যাপ্লিকেশনের জন্য বাহ্যিক আইপি ঠিকানা নির্ধারণ করলে, IP ঠিকানাটি অনুলিপি করুন। পরবর্তী ধাপের জন্য এটি সংরক্ষণ করুন যখন আমরা আমাদের মনোলিথ পরিবর্তন করে আমাদের নতুন অর্ডার পরিষেবার দিকে নির্দেশ করি!
মনোলিথ পুনরায় কনফিগার করুন
যেহেতু আমরা মনোলিথ থেকে অর্ডার পরিষেবা সরিয়ে দিয়েছি, তাই নতুন বাহ্যিক অর্ডার মাইক্রোসার্ভিসের দিকে নির্দেশ করতে আমাদের মনোলিথ পরিবর্তন করতে হবে।
একটি মনোলিথ ভাঙ্গার সময়, আমরা কোডের টুকরোগুলিকে একটি একক কোডবেস থেকে মাল্টিপলে সরিয়ে দিচ্ছি এবং আলাদাভাবে স্থাপন করছি। যেহেতু মাইক্রোসার্ভিসটি একটি ভিন্ন সার্ভারে চলছে, তাই আমরা আর আমাদের পরিষেবা URL গুলিকে পরম পাথ হিসাবে উল্লেখ করতে পারি না, আমাদের অর্ডার মাইক্রোসার্ভিসের নতুন সার্ভার ঠিকানার রুট প্রয়োজন৷ মনে রাখবেন যে ব্রেক আউট করা প্রতিটি পরিষেবার URL আপডেট করতে এর জন্য মনোলিথ পরিষেবাতে কিছু ডাউনটাইম প্রয়োজন হবে৷ মাইক্রোসার্ভিস মাইগ্রেশন প্রক্রিয়া চলাকালীন আপনার মাইক্রোসার্ভিস এবং মনোলিথকে উৎপাদনে নিয়ে যাওয়ার পরিকল্পনা করার সময় এটি বিবেচনা করা উচিত।
নতুন অর্ডার মাইক্রোসার্ভিসেস আইপি ঠিকানার দিকে নির্দেশ করতে আমাদের মনোলিথে আমাদের কনফিগার ফাইলটি আপডেট করতে হবে। আমাদের নতুন অর্ডার মাইক্রোসার্ভিসের আইপি ঠিকানা দিয়ে স্থানীয় URL প্রতিস্থাপন করতে ন্যানো সম্পাদক ব্যবহার করুন। সম্পাদনা করতে নিম্নলিখিত কমান্ডটি চালান
cd ~/monolith-to-microservices/react-app nano .env.monolith
যখন সম্পাদকটি খোলে, আপনার ফাইলটি এইরকম হওয়া উচিত:
REACT_APP_ORDERS_URL=/service/orders REACT_APP_PRODUCTS_URL=/service/products
আপনার অর্ডার মাইক্রোসার্ভিস আইপি ঠিকানা দিয়ে প্রতিস্থাপন করার সময় REACT_APP_ORDERS_URL
নতুন ফর্ম্যাটে প্রতিস্থাপন করুন যাতে এটি নীচের সাথে মেলে:
REACT_APP_ORDERS_URL=http://<ORDERS_IP_ADDRESS>/api/orders REACT_APP_PRODUCTS_URL=/service/products
CTRL+O
টিপুন, ENTER
টিপুন, তারপর ন্যানো এডিটরে ফাইলটি সংরক্ষণ করতে CTRL+X
।
আপনি এই ফাইলটিতে এইমাত্র সেট করা URL নেভিগেট করে আপনার নতুন মাইক্রোসার্ভিস পরীক্ষা করতে পারেন৷ ওয়েবপৃষ্ঠাটি আমাদের অর্ডার মাইক্রোসার্ভিস থেকে একটি JSON প্রতিক্রিয়া প্রদান করবে।
এর পরে, আমাদের মনোলিথ ফ্রন্টএন্ড পুনর্নির্মাণ করতে হবে এবং মনোলিথের জন্য কন্টেইনার তৈরি করতে এবং আমাদের GKE ক্লাস্টারে পুনরায় স্থাপন করতে বিল্ড প্রক্রিয়াটি পুনরাবৃত্তি করতে হবে। নিম্নলিখিত কমান্ডগুলি চালান এই পদক্ষেপগুলি সম্পূর্ণ করুন:
মনোলিথ কনফিগ ফাইলগুলি পুনর্নির্মাণ করুন
npm run build:monolith
গুগল ক্লাউড বিল্ড দিয়ে ডকার কন্টেইনার তৈরি করুন
cd ~/monolith-to-microservices/monolith gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .
GKE-তে কন্টেইনার স্থাপন করুন
kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0
আপনার ব্রাউজারে মনোলিথ অ্যাপ্লিকেশনে গিয়ে এবং অর্ডার পৃষ্ঠায় নেভিগেট করে আপনি যাচাই করতে পারেন যে আপনার অ্যাপ্লিকেশনটি এখন নতুন অর্ডার মাইক্রোসার্ভিসে আঘাত করছে। সমস্ত অর্ডার আইডি একটি প্রত্যয় দিয়ে শেষ হওয়া উচিত - MICROSERVICE নীচে দেখানো হয়েছে:
7. মাইক্রোসার্ভিসে পণ্য স্থানান্তর করুন
নতুন পণ্য মাইক্রোসার্ভিস তৈরি করুন
আমরা পরবর্তী পণ্য পরিষেবা স্থানান্তর করে আমাদের পরিষেবাগুলি ব্রেক আউট চালিয়ে যেতে পারি৷ আমরা আগের ধাপের মতো একই প্রক্রিয়া অনুসরণ করব। একটি ডকার কন্টেইনার তৈরি করতে নিম্নলিখিত কমান্ডগুলি চালান, আপনার কন্টেইনার স্থাপন করুন এবং এটি একটি কুবারনেটস পরিষেবার মাধ্যমে প্রকাশ করুন।
গুগল ক্লাউড বিল্ড দিয়ে ডকার কন্টেইনার তৈরি করুন
cd ~/monolith-to-microservices/microservices/src/products gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/products:1.0.0 .
GKE-তে কন্টেইনার স্থাপন করুন
kubectl create deployment products --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/products:1.0.0
GKE কন্টেইনার প্রকাশ করুন
kubectl expose deployment products --type=LoadBalancer --port 80 --target-port 8082
আমাদের পণ্য পরিষেবাগুলির সর্বজনীন আইপি সন্ধান করুন যেভাবে আমরা নিম্নলিখিত কমান্ডের মাধ্যমে আমাদের অর্ডার পরিষেবার জন্য করেছি:
kubectl get service products
আউটপুট:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE products 10.3.251.122 203.0.113.0 80:30877/TCP 3d
আমাদের নতুন পণ্য মাইক্রোসার্ভিসের দিকে নির্দেশ করার জন্য আমরা আমাদের মনোলিথ পুনরায় কনফিগার করার সময় পরবর্তী ধাপের জন্য IP ঠিকানাটি সংরক্ষণ করি।
মনোলিথ পুনরায় কনফিগার করুন
আমাদের নতুন পণ্য মাইক্রোসার্ভিসের IP ঠিকানা দিয়ে স্থানীয় URL প্রতিস্থাপন করতে ন্যানো সম্পাদক ব্যবহার করুন:
cd ~/monolith-to-microservices/react-app nano .env.monolith
যখন সম্পাদকটি খোলে, আপনার ফাইলটি এইরকম হওয়া উচিত:
REACT_APP_ORDERS_URL=http://<ORDERS_IP_ADDRESS>/api/orders REACT_APP_PRODUCTS_URL=/service/products
আপনার পণ্য মাইক্রোসার্ভিস আইপি ঠিকানা দিয়ে প্রতিস্থাপন করার সময় REACT_APP_PRODUCTS_URL
নতুন ফর্ম্যাটে প্রতিস্থাপন করুন যাতে এটি নীচের সাথে মেলে:
REACT_APP_ORDERS_URL=http://<ORDERS_IP_ADDRESS>/api/orders REACT_APP_PRODUCTS_URL=http://<PRODUCTS_IP_ADDRESS>/api/products
CTRL+O
টিপুন, ENTER
টিপুন, তারপর ন্যানো এডিটরে ফাইলটি সংরক্ষণ করতে CTRL+X
।
আপনি এই ফাইলটিতে এইমাত্র সেট করা URL নেভিগেট করে আপনার নতুন মাইক্রোসার্ভিস পরীক্ষা করতে পারেন৷ ওয়েবপৃষ্ঠাটি আমাদের পণ্য মাইক্রোসার্ভিস থেকে একটি JSON প্রতিক্রিয়া প্রদান করবে।
এর পরে, আমাদের মনোলিথ ফ্রন্টএন্ড পুনর্নির্মাণ করতে হবে এবং মনোলিথের জন্য কন্টেইনার তৈরি করতে এবং আমাদের GKE ক্লাস্টারে পুনরায় স্থাপন করতে বিল্ড প্রক্রিয়াটি পুনরাবৃত্তি করতে হবে। নিম্নলিখিত কমান্ডগুলি চালান এই পদক্ষেপগুলি সম্পূর্ণ করুন:
মনোলিথ কনফিগ ফাইলগুলি পুনর্নির্মাণ করুন
npm run build:monolith
গুগল ক্লাউড বিল্ড দিয়ে ডকার কন্টেইনার তৈরি করুন
cd ~/monolith-to-microservices/monolith gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:3.0.0 .
GKE-তে কন্টেইনার স্থাপন করুন
kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:3.0.0
আপনি আপনার ব্রাউজারে মনোলিথ অ্যাপ্লিকেশনে গিয়ে এবং পণ্য পৃষ্ঠায় নেভিগেট করে আপনার অ্যাপ্লিকেশনটি এখন নতুন পণ্য মাইক্রোসার্ভিসে আঘাত করছে তা যাচাই করতে পারেন। সমস্ত পণ্যের নাম MS দ্বারা প্রিফিক্স করা উচিত- নীচে দেখানো হয়েছে:
8. মাইক্রোসার্ভিসে ফ্রন্টেন্ড মাইগ্রেট করুন
মাইগ্রেশন প্রক্রিয়ার শেষ ধাপ হল ফ্রন্টএন্ড কোডটিকে একটি মাইক্রোসার্ভিসে সরানো এবং মনোলিথ বন্ধ করা! এই ধাপটি সম্পন্ন হওয়ার পরে, আমরা সফলভাবে আমাদের মনোলিথটিকে একটি মাইক্রোসার্ভিসেস আর্কিটেকচারে স্থানান্তরিত করব!
নতুন ফ্রন্টএন্ড মাইক্রোসার্ভিস তৈরি করুন
একটি নতুন ফ্রন্টএন্ড মাইক্রোসার্ভিস তৈরি করতে শেষ দুটি ধাপের মতো একই পদ্ধতি অনুসরণ করা যাক।
পূর্বে যখন আমরা আমাদের মনোলিথ পুনর্নির্মাণ করি তখন আমরা আমাদের মনোলিথের দিকে নির্দেশ করার জন্য আমাদের কনফিগারেশন আপডেট করেছিলাম, কিন্তু এখন আমাদের ফ্রন্টএন্ড মাইক্রোসার্ভিসের জন্য একই কনফিগারেশন ব্যবহার করতে হবে। ফ্রন্টেন্ড মাইক্রোসার্ভিস কোডবেসে আমাদের মাইক্রোসার্ভিসেস ইউআরএল কনফিগার ফাইল কপি করতে নিম্নলিখিত কমান্ডগুলি চালান:
cd ~/monolith-to-microservices/react-app cp .env.monolith .env npm run build
একবার এটি সম্পন্ন হলে, আমরা আগের ধাপগুলির মতো একই প্রক্রিয়া অনুসরণ করব। একটি ডকার কন্টেইনার তৈরি করতে নিম্নলিখিত কমান্ডগুলি চালান, আপনার কন্টেইনার স্থাপন করুন এবং এটি একটি কুবারনেটস পরিষেবার মাধ্যমে প্রকাশ করুন।
গুগল ক্লাউড বিল্ড দিয়ে ডকার কন্টেইনার তৈরি করুন
cd ~/monolith-to-microservices/microservices/src/frontend gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/frontend:1.0.0 .
GKE-তে কন্টেইনার স্থাপন করুন
kubectl create deployment frontend --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/frontend:1.0.0
GKE কন্টেইনার প্রকাশ করুন
kubectl expose deployment frontend --type=LoadBalancer --port 80 --target-port 8080
মনোলিথ মুছুন
এখন যেহেতু আমাদের সমস্ত পরিষেবাগুলি মাইক্রোসার্ভিস হিসাবে চলছে, আমরা আমাদের মনোলিথ অ্যাপ্লিকেশনটি মুছে ফেলতে পারি! দ্রষ্টব্য, একটি প্রকৃত মাইগ্রেশনে, এটি আমাদের বিদ্যমান ডোমেন নামগুলিকে আমাদের অ্যাপ্লিকেশনের জন্য নতুন ফ্রন্টএন্ড মাইক্রোসার্ভিসে নির্দেশ করার জন্য DNS পরিবর্তনগুলিকেও অন্তর্ভুক্ত করবে। আমাদের মনোলিথ মুছে ফেলতে নিম্নলিখিত কমান্ডগুলি চালান:
kubectl delete deployment monolith kubectl delete service monolith
আপনার কাজ পরীক্ষা করুন
সবকিছু কাজ করছে তা যাচাই করতে, আপনার মনোলিথ পরিষেবা থেকে আপনার পুরানো আইপি ঠিকানাটি কাজ করা উচিত নয় এবং আপনার ফ্রন্টএন্ড পরিষেবা থেকে আপনার নতুন আইপি ঠিকানাটি নতুন অ্যাপ্লিকেশনটি হোস্ট করা উচিত। সমস্ত পরিষেবা এবং আইপি ঠিকানাগুলির একটি তালিকা দেখতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
kubectl get services
আপনার আউটপুট নিম্নলিখিত অনুরূপ দেখতে হবে:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE frontend LoadBalancer 10.39.246.135 35.227.21.154 80:32663/TCP 12m kubernetes ClusterIP 10.39.240.1 <none> 443/TCP 18d orders LoadBalancer 10.39.243.42 35.243.173.255 80:32714/TCP 31m products LoadBalancer 10.39.250.16 35.243.180.23 80:32335/TCP 21m
একবার আপনি আপনার ফ্রন্টএন্ড মাইক্রোসার্ভিসের জন্য বাহ্যিক আইপি ঠিকানা নির্ধারণ করলে, IP ঠিকানাটি অনুলিপি করুন। আপনার ফ্রন্টএন্ড অ্যাক্সেসযোগ্য কিনা তা পরীক্ষা করতে আপনার ব্রাউজারটিকে এই URL-এ (যেমন http://203.0.113.0) নির্দেশ করুন৷ আপনার ওয়েবসাইটটি একই রকম হওয়া উচিত যেমনটি আমরা একচেটিয়াকে মাইক্রোসার্ভিসেসে ভেঙে দেওয়ার আগে ছিল!
9. পরিচ্ছন্নতা
একবার প্রস্তুত হয়ে গেলে, সম্পাদিত সমস্ত ক্রিয়াকলাপ পরিষ্কার করার সবচেয়ে সহজ উপায় হল প্রকল্পটি মুছে ফেলা। কোন অপ্রত্যাশিত পুনরাবৃত্ত চার্জ না হয় তা নিশ্চিত করতে এই কোডল্যাবের মধ্যে তৈরি করা সমস্ত সংস্থান মুছে ফেলার ফলে প্রকল্পটি মুছে যায়। ক্লাউড শেলের মধ্যে নিম্নলিখিতগুলি চালান, যেখানে PROJECT_ID সম্পূর্ণ প্রকল্প আইডি এবং শুধুমাত্র প্রকল্পের নাম নয়৷
gcloud projects delete [PROJECT_ID]
অনুরোধ করা হলে "Y" লিখে মুছে ফেলা নিশ্চিত করুন।
10. অভিনন্দন!
আপনি সফলভাবে আপনার একচেটিয়া অ্যাপ্লিকেশনকে মাইক্রোসার্ভিসে ভেঙে ফেলেছেন এবং সেগুলিকে Google Kubernetes ইঞ্জিনে স্থাপন করেছেন!
পরবর্তী পদক্ষেপ
কুবারনেটস সম্পর্কে আরও জানতে নিম্নলিখিত কোডল্যাবগুলি দেখুন:
- Google Kubernetes ইঞ্জিনে আপনার ওয়েবসাইট স্থাপন, স্কেল এবং আপডেট করুন
- Kubernetes-এ Node.js দিয়ে একটি স্ল্যাক বট তৈরি করুন
- Spinnaker ব্যবহার করে Kubernetes-এ ক্রমাগত ডেলিভারি
- Google Kubernetes ইঞ্জিনে Kubernetes-এ একটি জাভা অ্যাপ্লিকেশন স্থাপন করুন
অতিরিক্ত সম্পদ
- ডকার - https://docs.docker.com/
- কুবারনেটস - https://kubernetes.io/docs/home/
- Google Kubernetes Engine (GKE) - https://cloud.google.com/kubernetes-engine/docs/
- Google ক্লাউড বিল্ড - https://cloud.google.com/cloud-build/docs/
- Google কন্টেইনার রেজিস্ট্রি - https://cloud.google.com/container-registry/docs/
- মাইক্রোসার্ভিসেসে মনোলিথ স্থানান্তর করা - https://cloud.google.com/solutions/migrating-a-monolithic-app-to-microservices-gke