1. ওভারভিউ
এই ল্যাবটি কন্টেইনারাইজড পরিবেশে নোডজেএস অ্যাপ্লিকেশন বিকাশের দায়িত্বপ্রাপ্ত সফ্টওয়্যার ইঞ্জিনিয়ারদের জন্য বিকাশের কর্মপ্রবাহকে প্রবাহিত করার জন্য ডিজাইন করা বৈশিষ্ট্য এবং ক্ষমতা প্রদর্শন করে। সাধারণ কন্টেইনার ডেভেলপমেন্টের জন্য ব্যবহারকারীকে কন্টেইনারের বিবরণ এবং কন্টেইনার তৈরির প্রক্রিয়া বুঝতে হবে। উপরন্তু, ডেভেলপারদের সাধারণত তাদের প্রবাহ ভাঙতে হয়, দূরবর্তী পরিবেশে তাদের অ্যাপ্লিকেশন পরীক্ষা ও ডিবাগ করতে তাদের IDE থেকে বেরিয়ে যেতে হয়। এই টিউটোরিয়ালে উল্লিখিত টুলস এবং প্রযুক্তির সাহায্যে, ডেভেলপাররা তাদের IDE না রেখেই কন্টেইনারাইজড অ্যাপ্লিকেশনের সাথে কার্যকরভাবে কাজ করতে পারে।
যা শিখবেন
এই ল্যাবে আপনি Google ক্লাউডে কন্টেইনারগুলির সাথে বিকাশের পদ্ধতিগুলি শিখবেন যার মধ্যে রয়েছে:
- একটি স্টার্টার Nodejs অ্যাপ্লিকেশন তৈরি করা হচ্ছে
- ধারক উন্নয়নের জন্য Nodejs অ্যাপ্লিকেশন কনফিগার করা হচ্ছে
- একটি সাধারণ CRUD বিশ্রাম পরিষেবা কোডিং
- GKE-তে স্থাপন করা হচ্ছে
- একটি ত্রুটি অবস্থা ডিবাগিং
- ব্রেকপয়েন্ট/লগ ব্যবহার করা
- GKE-এ হট ডিপ্লোয়িং পরিবর্তন
- ঐচ্ছিক: ব্যাকএন্ড অধ্যবসায়ের জন্য ক্লাউডএসকিউএল একীভূত করা
2. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
- Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।
- প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি যে কোনো সময় এটি আপডেট করতে পারেন.
- প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এটি সাধারণত
PROJECT_ID
হিসাবে চিহ্নিত করা হয়)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করে দেখতে পারেন যে এটি উপলব্ধ কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকবে। - আপনার তথ্যের জন্য, একটি তৃতীয় মান রয়েছে, একটি প্রকল্প নম্বর যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
- এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। রিসোর্স বন্ধ করতে যাতে এই টিউটোরিয়ালের বাইরে আপনার বিলিং খরচ না হয়, আপনি আপনার তৈরি করা রিসোর্স মুছে ফেলতে পারেন বা পুরো প্রোজেক্ট মুছে ফেলতে পারেন। Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷
ক্লাউডশেল এডিটর শুরু করুন
এই ল্যাবটি ডিজাইন করা হয়েছে এবং Google ক্লাউড শেল এডিটরের সাথে ব্যবহারের জন্য পরীক্ষা করা হয়েছে। সম্পাদক অ্যাক্সেস করতে,
- https://console.cloud.google.com- এ আপনার গুগল প্রকল্প অ্যাক্সেস করুন।
- উপরের ডানদিকের কোণায় ক্লাউড শেল এডিটর আইকনে ক্লিক করুন
- আপনার উইন্ডোর নীচে একটি নতুন ফলক খুলবে
- Open Editor বাটনে ক্লিক করুন
- সম্পাদকটি ডানদিকে একটি এক্সপ্লোরার এবং কেন্দ্রীয় অঞ্চলে সম্পাদকের সাথে খুলবে৷
- স্ক্রিনের নীচে একটি টার্মিনাল ফলকও পাওয়া উচিত
- টার্মিনাল খোলা না থাকলে একটি নতুন টার্মিনাল উইন্ডো খুলতে `ctrl+`` এর কী সমন্বয় ব্যবহার করুন
gCloud সেট আপ করুন
ক্লাউড শেলে, আপনার প্রজেক্ট আইডি এবং যে অঞ্চলে আপনি আপনার অ্যাপ্লিকেশন স্থাপন করতে চান সেটি সেট করুন। সেগুলিকে PROJECT_ID
এবং REGION
ভেরিয়েবল হিসাবে সংরক্ষণ করুন৷
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
এই ল্যাবে ব্যবহৃত অবকাঠামোর ব্যবস্থা করুন
এই ল্যাবে আপনি GKE-তে কোড স্থাপন করবেন এবং একটি CloudSQL ডাটাবেসে সংরক্ষিত ডেটা অ্যাক্সেস করবেন। নিচের সেটআপ স্ক্রিপ্টটি আপনার জন্য এই পরিকাঠামো প্রস্তুত করে।
- সেটআপ স্ক্রিপ্ট ডাউনলোড করুন এবং এটি এক্সিকিউটেবল করুন।
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/nodejs/setup_with_cw.sh
chmod +x setup_with_cw.sh
-
setup_with_cw.sh
ফাইল খুলুন এবং পাসওয়ার্ডের মানগুলি সম্পাদনা করুন যা বর্তমানে CHANGEME এ সেট করা আছে - একটি GKE ক্লাস্টার এবং একটি CloudSQL ডাটাবেস দাঁড়াতে সেটআপ স্ক্রিপ্টটি চালান যা আপনি এই ল্যাবে ব্যবহার করবেন
./setup_with_cw.sh &
ক্লাউড ওয়ার্কস্টেশন ক্লাস্টার
- ক্লাউড কনসোলে ক্লাউড ওয়ার্কস্টেশন খুলুন। ক্লাস্টারটি
READY
অবস্থায় থাকার জন্য অপেক্ষা করুন৷
ওয়ার্কস্টেশন কনফিগারেশন তৈরি করুন
- আপনার ক্লাউড শেল সেশন সংযোগ বিচ্ছিন্ন হয়ে থাকলে, "পুনরায় সংযোগ করুন" এ ক্লিক করুন এবং তারপরে প্রকল্প আইডি সেট করতে gcloud cli কমান্ডটি চালান। কমান্ড চালানোর আগে আপনার qwiklabs প্রকল্প আইডি দিয়ে নীচের নমুনা প্রকল্প আইডি প্রতিস্থাপন করুন।
gcloud config set project qwiklabs-gcp-project-id
- ক্লাউড ওয়ার্কস্টেশন কনফিগারেশন তৈরি করতে টার্মিনালে নীচের স্ক্রিপ্টটি ডাউনলোড করুন এবং চালান।
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/nodejs/workstation_config_setup.sh
chmod +x workstation_config_setup.sh
./workstation_config_setup.sh
- কনফিগারেশন বিভাগের অধীনে ফলাফল যাচাই করুন। এটি প্রস্তুত স্থিতিতে রূপান্তর করতে 2 মিনিট সময় নেবে৷
- কনসোলে ক্লাউড ওয়ার্কস্টেশন খুলুন এবং নতুন উদাহরণ তৈরি করুন।
-
my-workstation
নাম পরিবর্তন করুন এবং বিদ্যমান কনফিগারেশন নির্বাচন করুন:codeoss-js
।
- ওয়ার্কস্টেশন বিভাগের অধীনে ফলাফল যাচাই করুন.
ওয়ার্কস্টেশন চালু করুন
- ওয়ার্কস্টেশন শুরু করুন এবং চালু করুন। ওয়ার্কস্টেশন শুরু হতে কয়েক মিনিট সময় লাগবে।
- ঠিকানা বারে আইকনে ক্লিক করে 3য় পক্ষের কুকিজকে অনুমতি দিন।
- "সাইট কাজ করছে না?" ক্লিক করুন।
- "কুকিজ অনুমতি দিন" ক্লিক করুন।
- ওয়ার্কস্টেশন চালু হলে আপনি কোড OSS IDE দেখতে পাবেন। ওয়ার্কস্টেশন IDE-এর প্রথম পৃষ্ঠায় "সম্পন্ন চিহ্নিত করুন"-এ ক্লিক করুন
3. একটি নতুন Nodejs স্টার্টার অ্যাপ্লিকেশন তৈরি করা
এই বিভাগে আপনি একটি নতুন Nodejs অ্যাপ্লিকেশন তৈরি করবেন।
- একটি নতুন টার্মিনাল খুলুন।
- ক্লাউড শেলে,
mynodejsapp
নামের একটি নতুন ডিরেক্টরি তৈরি করুন
mkdir mynodejsapp
আপনি যদি এই বার্তাটি দেখতে পান তবে অনুমতি বোতামে ক্লিক করুন, যাতে আপনি ওয়ার্কস্টেশনে কপি পেস্ট করতে পারেন।
- এই ডিরেক্টরিতে পরিবর্তন করুন এবং এটি একটি ওয়ার্কস্পেস হিসাবে খুলুন। এটি নতুন তৈরি ফোল্ডারে একটি ওয়ার্কস্পেস কনফিগারেশন তৈরি করে সম্পাদকটিকে পুনরায় লোড করবে।
cd mynodejsapp && code-oss-cloud-workstations -r --folder-uri="$PWD"
- আবার একটি নতুন টার্মিনাল খুলুন। এনভিএম ব্যবহার করে নোড এবং এনপিএম ইনস্টল করুন।
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
# This loads nvm bash_completion
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
nvm install stable
nvm alias default stable
4. একটি নতুন স্টার্টার অ্যাপ্লিকেশন তৈরি করুন
- আবেদন শুরু করুন
নিম্নলিখিত কমান্ডটি চালানোর মাধ্যমে একটি package.json
ফাইল তৈরি করা
npm init
Choose the `entry point: (index.js) src/index.js` and leave default values for the rest of the parameters. This will create the `package.json` file with following contents
{ "name": "mynodejsapp", "version": "1.0.0", "description": "", "main": "src/index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
- একটি এন্ট্রি পয়েন্ট যোগ করুন
"start" স্ক্রিপ্টে start কমান্ড অন্তর্ভুক্ত করতে IDE-তে package.json
ফাইলটি খুলুন এবং সম্পাদনা করুন "start": "node src/index.js",
পরিবর্তনের পরে স্ক্রিপ্টগুলি নীচের কোড স্নিপেটের মতো হওয়া উচিত:
"scripts": {
"start": "node src/index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
- এক্সপ্রেস নির্ভরতা যোগ করুন
আমরা যে কোডটি যোগ করতে যাচ্ছি সেটিও express
ব্যবহার করে তাই আসুন আমরা এই package.json
ফাইলটিতে সেই নির্ভরতা যোগ করি। তাই সব পরিবর্তনের পর package.json
ফাইলটি নিচের মত হতে হবে।
{
"name": "mynodejsapp",
"version": "1.0.0",
"description": "",
"main": "src/index.js",
"scripts": {
"start": "node src/index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.3"
}
}
- index.js ফাইল তৈরি করুন
এক্সপ্লোরার ভিউতে নতুন ফোল্ডার নির্বাচন করে src নামে একটি উত্স ডিরেক্টরি তৈরি করুন।
src/index.js ফাইল তৈরি করুন
নিম্নলিখিত কোড সহ
const express = require('express');
const app = express();
const PORT = 8080;
app.get('/', (req, res) => {
var message="Greetings from Node";
res.send({ message: message });
});
app.listen(PORT, () => {
console.log(`Server running at: http://localhost:${PORT}/`);
});
মনে রাখবেন PORT মান 8080
সেট করা আছে
ম্যানিফেস্ট তৈরি করুন
স্ক্যাফোল্ড কনটেইনার বিকাশকে সহজ করার জন্য সমন্বিত সরঞ্জাম সরবরাহ করে। এই ধাপে আপনি স্ক্যাফোল্ড শুরু করবেন যা স্বয়ংক্রিয়ভাবে বেস কুবারনেটস YAML ফাইল তৈরি করবে। প্রক্রিয়াটি শুরু করতে নীচের কমান্ডটি চালান।
টার্মিনালে নিম্নলিখিত কমান্ডটি চালান
skaffold init --generate-manifests
যখন অনুরোধ করা হয়:
- পোর্টের জন্য 8080 লিখুন
- কনফিগারেশন সংরক্ষণ করতে y লিখুন
দুটি ফাইল কর্মক্ষেত্রে যোগ করা হয়েছে যেমন, skaffold.yaml
এবং deployment.yaml
অ্যাপের নাম আপডেট করুন
কনফিগারেশনে অন্তর্ভুক্ত ডিফল্ট মান বর্তমানে আপনার অ্যাপ্লিকেশনের নামের সাথে মেলে না। ডিফল্ট মানগুলির পরিবর্তে আপনার অ্যাপ্লিকেশনের নাম উল্লেখ করতে ফাইলগুলি আপডেট করুন।
- Skaffold কনফিগারেশনে এন্ট্রি পরিবর্তন করুন
-
skaffold.yaml
খুলুন - বর্তমানে
package-json-image
হিসাবে সেট করা ছবির নাম নির্বাচন করুন - রাইট ক্লিক করুন এবং সমস্ত ঘটনা পরিবর্তন করুন নির্বাচন করুন
-
mynodejsapp
হিসাবে নতুন নাম টাইপ করুন
- Kubernetes কনফিগারেশনে এন্ট্রি পরিবর্তন করুন
-
deployment.yaml
ফাইল খুলুন - বর্তমানে
package-json-image
হিসাবে সেট করা ছবির নাম নির্বাচন করুন - রাইট ক্লিক করুন এবং সমস্ত ঘটনা পরিবর্তন করুন নির্বাচন করুন
-
mynodejsapp
হিসাবে নতুন নাম টাইপ করুন
লক্ষ্য করুন যে skaffold.yaml
ফাইলে, build
বিভাগটি অ্যাপ্লিকেশনটিকে ধারণ করতে buildpacks
ব্যবহার করে। এই কোডটিতে ডকারফাইল নেই এবং এই অ্যাপ্লিকেশনটিকে ধারণ করার জন্য বিকাশকারীর ডকার সম্পর্কে কোনও জ্ঞানের প্রয়োজন নেই।
এছাড়াও, এই স্ক্যাফোল্ড কনফিগারেশন দ্বারা সম্পাদক এবং চলমান পাত্রের মধ্যে হট সিঙ্ক স্বয়ংক্রিয়ভাবে সক্ষম হয়। হট সিঙ্ক সক্ষম করতে কোন অতিরিক্ত কনফিগারেশনের প্রয়োজন নেই।
5. উন্নয়ন প্রক্রিয়ার মধ্য দিয়ে হাঁটা
এই বিভাগে আপনি মৌলিক প্রক্রিয়াগুলি শিখতে এবং আপনার স্টার্টার অ্যাপ্লিকেশনটির কনফিগারেশন এবং সেটআপ যাচাই করতে ক্লাউড কোড প্লাগইন ব্যবহার করে কয়েকটি ধাপ অতিক্রম করবেন।
ক্লাউড কোড স্ক্যাফোল্ডের সাথে একীভূত করে আপনার উন্নয়ন প্রক্রিয়াকে প্রবাহিত করতে। আপনি যখন নিম্নলিখিত ধাপে GKE-তে স্থাপন করবেন, ক্লাউড কোড এবং Skaffold স্বয়ংক্রিয়ভাবে আপনার কন্টেইনার ইমেজ তৈরি করবে, এটি একটি কন্টেইনার রেজিস্ট্রিতে ঠেলে দেবে এবং তারপর GKE-তে আপনার অ্যাপ্লিকেশন স্থাপন করবে। এটি বিকাশকারীর প্রবাহ থেকে বিশদ বিবরণকে বিমূর্ত করে পর্দার আড়ালে ঘটে। ক্লাউড কোড কনটেইনার ভিত্তিক ডেভেলপমেন্টে প্রথাগত ডিবাগ এবং হটসিঙ্ক ক্ষমতা প্রদান করে আপনার উন্নয়ন প্রক্রিয়াকেও উন্নত করে।
গুগল ক্লাউডে সাইন ইন করুন
- ক্লাউড কোড আইকনে ক্লিক করুন এবং "গুগল ক্লাউডে সাইন ইন করুন" নির্বাচন করুন:
- "সাইন ইন করতে এগিয়ে যান" এ ক্লিক করুন।
- টার্মিনালে আউটপুট পরীক্ষা করুন এবং লিঙ্কটি খুলুন:
- আপনার Qwiklabs ছাত্রদের শংসাপত্র দিয়ে লগইন করুন।
- "অনুমতি দিন" নির্বাচন করুন:
- যাচাইকরণ কোড কপি করুন এবং ওয়ার্কস্টেশন ট্যাবে ফিরে যান।
- যাচাইকরণ কোড পেস্ট করুন এবং এন্টার টিপুন।
কুবারনেটস ক্লাস্টার যোগ করুন
- একটি ক্লাস্টার যোগ করুন
- Google Kubernetes ইঞ্জিন নির্বাচন করুন:
- প্রকল্প নির্বাচন করুন।
- প্রাথমিক সেটআপে তৈরি করা "মাইক্লাস্টার" নির্বাচন করুন।
- ক্লাস্টারটি এখন ক্লাউড কোডের অধীনে কুবারনেটস ক্লাস্টার তালিকায় দেখা যাচ্ছে। নেভিগেট করুন এবং এখান থেকে ক্লাস্টারটি অন্বেষণ করুন।
gcloud cli ব্যবহার করে বর্তমান প্রকল্প আইডি সেট করুন
- qwiklabs পৃষ্ঠা থেকে এই ল্যাবের জন্য প্রজেক্ট আইডি কপি করুন।
- টার্মিনাল থেকে, প্রকল্প আইডি সেট করতে gcloud cli কমান্ড চালান। কমান্ড চালানোর আগে নমুনা প্রকল্প আইডি প্রতিস্থাপন করুন। নীচের কমান্ডটি চালানোর আগে প্রকল্প আইডিটি প্রতিস্থাপন করুন।
gcloud config set project qwiklabs-gcp-project-id
কুবারনেটে স্থাপন করুন
- ক্লাউড শেল এডিটরের নীচের প্যানে, ক্লাউড কোড  নির্বাচন করুন
- ডেভেলপমেন্ট সেশনের অধীনে শীর্ষে প্রদর্শিত প্যানেলে, Kubernetes-এ চালান নির্বাচন করুন। অনুরোধ করা হলে, বর্তমান কুবারনেটস প্রসঙ্গ ব্যবহার করতে হ্যাঁ নির্বাচন করুন।
- আপনি যখন প্রথমবার কমান্ডটি চালাবেন তখন স্ক্রিনের শীর্ষে একটি প্রম্পট উপস্থিত হবে যা জিজ্ঞাসা করবে যে আপনি বর্তমান কুবারনেট প্রসঙ্গটি চান কিনা, বর্তমান প্রসঙ্গটি গ্রহণ করতে এবং ব্যবহার করতে "হ্যাঁ" নির্বাচন করুন।
- পরবর্তীতে কোন কন্টেইনার রেজিস্ট্রি ব্যবহার করতে হবে তা জিজ্ঞাসা করে একটি প্রম্পট প্রদর্শিত হবে। প্রদত্ত ডিফল্ট মান গ্রহণ করতে এন্টার টিপুন
- নীচের প্যানে আউটপুট ট্যাব এবং কুবারনেটস নির্বাচন করুন: অগ্রগতি এবং বিজ্ঞপ্তি দেখতে ড্রপডাউনে চালান/ডিবাগ করুন
- কনটেইনারগুলি থেকে লাইভ স্ট্রিমিং অতিরিক্ত বিবরণ এবং লগগুলি দেখতে ডানদিকে ড্রপ ডাউন চ্যানেলে "কুবারনেটস: রান/ডিবাগ - বিস্তারিত" নির্বাচন করুন
- ড্রপডাউন থেকে "কুবারনেটস: রান/ডিবাগ" নির্বাচন করে সরলীকৃত দৃশ্যে ফিরে যান
- যখন বিল্ড এবং পরীক্ষা করা হয়, আউটপুট ট্যাব বলে:
Resource deployment/mynodejsapp status completed successfully
, এবং একটি url তালিকাভুক্ত করা হয়েছে: "পরিষেবা ডেমো-অ্যাপ থেকে ফরওয়ার্ড করা URL: http://localhost:8080" - ক্লাউড কোড টার্মিনালে, আউটপুট (http://localhost:8080) এর URL-এর উপর হোভার করুন এবং তারপরে প্রদর্শিত টুল টিপে অনুসরণ করুন লিঙ্ক নির্বাচন করুন।
প্রতিক্রিয়া হবে:
{"message":"Greetings from Node"}
হট রিলোড
-
src/index.js
এ নেভিগেট করুন।'Hello from Node'
তে শুভেচ্ছা বার্তা কোডটি সম্পাদনা করুন
অবিলম্বে লক্ষ্য করুন যে Output
উইন্ডোতে, Kubernetes: Run/Debug
ভিউ, পর্যবেক্ষক আপডেট করা ফাইলগুলিকে কুবারনেটসের কন্টেইনারের সাথে সিঙ্ক করে
Update initiated File sync started for 1 files for gcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a File sync succeeded for 1 files for gcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a Update succeeded
- আপনি যদি
Kubernetes: Run/Debug - Detailed
ভিউ, আপনি লক্ষ্য করবেন এটি ফাইলের পরিবর্তনগুলিকে স্বীকৃতি দেয় এবং নোড পুনরায় চালু করে
files modified: [src/index.js] Copying files:map[src/index.js:[/workspace/src/index.js]]togcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a Syncing 1 files for gcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a Watching for changes... [mynodejsapp] [mynodejsapp]> mynodejsapp@1.0.0 start /workspace [mynodejsapp]> node src/index.js [mynodejsapp] [mynodejsapp]Server running at: http://localhost:8080/
- আপডেট ফলাফল দেখতে আপনার ব্রাউজার রিফ্রেশ করুন.
ডিবাগিং
- ডিবাগ ভিউতে যান এবং বর্তমান থ্রেড বন্ধ করুন .
- নীচের মেনুতে
Cloud Code
ক্লিক করুন এবংdebug
মোডে অ্যাপ্লিকেশনটি চালানোর জন্যDebug on Kubernetes
নির্বাচন করুন।
-
Kubernetes Run/Debug - Detailed
এOutput
উইন্ডোর বিশদ দৃশ্য, লক্ষ্য করুন যে skaffold এই অ্যাপ্লিকেশনটিকে ডিবাগ মোডে স্থাপন করবে। - অ্যাপ্লিকেশনটি তৈরি করতে এবং স্থাপন করতে কয়েক মিনিট সময় লাগবে৷ আপনি এই সময় সংযুক্ত একটি ডিবাগার লক্ষ্য করবেন.
Port forwarding pod/mynodejsapp-6bbcf847cd-vqr6v in namespace default, remote port 9229 -> http://127.0.0.1:9229 [mynodejsapp]Debugger attached.
- নীচের স্ট্যাটাস বারটি তার রঙ নীল থেকে কমলাতে পরিবর্তন করে যে এটি ডিবাগ মোডে রয়েছে।
-
Kubernetes Run/Debug
ভিউতে, লক্ষ্য করুন যে একটি ডিবাগযোগ্য কন্টেইনার শুরু হয়েছে
**************URLs***************** Forwarded URL from service mynodejsapp-service: http://localhost:8080 Debuggable container started pod/mynodejsapp-deployment-6bc7598798-xl9kj:mynodejsapp (default) Update succeeded ***********************************
ব্রেকপয়েন্ট ব্যবহার করুন
-
src/index.js
খুলুন - বিবৃতিটি সনাক্ত করুন যা
var message="Hello from Node";
- লাইন নম্বরের বাম দিকের ফাঁকা জায়গায় ক্লিক করে সেই লাইনে একটি ব্রেকপয়েন্ট যোগ করুন। ব্রেকপয়েন্ট সেট করা হয়েছে লক্ষ্য করার জন্য একটি লাল সূচক দেখাবে
- আপনার ব্রাউজার পুনরায় লোড করুন এবং নোট করুন ডিবাগার ব্রেকপয়েন্টে প্রক্রিয়াটি বন্ধ করে দেয় এবং আপনাকে GKE-তে দূরবর্তীভাবে চলমান অ্যাপ্লিকেশনের ভেরিয়েবল এবং অবস্থা তদন্ত করতে দেয়
- আপনি
"message"
ভেরিয়েবল না পাওয়া পর্যন্ত ভেরিয়েবল বিভাগে ক্লিক করুন। - স্টেপ ওভারে টিপে লাইনটি কার্যকর করুন
-
"message"
ভেরিয়েবল পরিবর্তনের বর্তমান মানটি"Hello from Node"
এ লক্ষ্য করুন - "টার্গেট" ভেরিয়েবলের নামটিতে ডাবল ক্লিক করুন এবং পপআপে,
"Hi from Node"
এর মতো ভিন্ন কিছুতে মান পরিবর্তন করুন। - ডিবাগ কন্ট্রোল প্যানেলে Continue বাটনে ক্লিক করুন
- আপনার ব্রাউজারে প্রতিক্রিয়া পর্যালোচনা করুন যা এখন আপনার প্রবেশ করা আপডেট করা মান দেখায়।
- স্টপ বোতাম টিপে "ডিবাগ" মোড বন্ধ করুন এবং ব্রেকপয়েন্টে আবার ক্লিক করে ব্রেকপয়েন্ট সরিয়ে ফেলুন।
6. একটি সাধারণ CRUD বিশ্রাম পরিষেবা বিকাশ করা
এই মুহুর্তে আপনার অ্যাপ্লিকেশনটি সম্পূর্ণরূপে কনটেইনারাইজড ডেভেলপমেন্টের জন্য কনফিগার করা হয়েছে এবং আপনি ক্লাউড কোডের সাথে মৌলিক উন্নয়ন কর্মপ্রবাহের মধ্য দিয়ে গেছেন। নিম্নলিখিত বিভাগগুলিতে আপনি Google ক্লাউডে একটি পরিচালিত ডাটাবেসের সাথে সংযুক্ত REST পরিষেবার শেষ পয়েন্ট যোগ করে যা শিখেছেন তা অনুশীলন করেন।
নির্ভরতা কনফিগার করুন
অ্যাপ্লিকেশন কোড একটি ডাটাবেস ব্যবহার করে বাকি পরিষেবা ডেটা বজায় রাখতে। package.json
ফাইলে নিম্নলিখিত যোগ করে নির্ভরতা উপলব্ধ রয়েছে তা নিশ্চিত করুন
- একটি CRUD অ্যাপ্লিকেশন পোস্টগ্রেস তৈরি করতে আরও দুটি নির্ভরতা
pg
যোগ করুন এবংpackage.json
ফাইলেsequelize
। পোস্ট পরিবর্তন নির্ভরতা বিভাগ এই মত হবে.
"dependencies": {
"express": "^4.17.3",
"pg": "^8.8.0",
"sequelize": "^6.25.7"
}
REST পরিষেবা কোড করুন
- এই অ্যাপ্লিকেশনে CRUD অ্যাপ্লিকেশন কোড যোগ করুন
wget -O app.zip https://github.com/GoogleCloudPlatform/container-developer-workshop/raw/main/labs/nodejs/app.zip
unzip app.zip
এই কোড আছে
-
item
জন্য সত্তা মডেল সহ মডেল ফোল্ডার - CRUD অপারেশন করে এমন কোড সহ কন্ট্রোলার ফোল্ডার
- রুট ফোল্ডার যা নির্দিষ্ট URL প্যাটার্নকে বিভিন্ন কলে রুট করে
- ডাটাবেস সংযোগের বিবরণ সহ কনফিগার ফোল্ডার
- মনে রাখবেন
db.config.js
ফাইলের ডাটাবেস কনফিগারেশনটি এনভায়রনমেন্ট ভেরিয়েবলকে বোঝায় যেগুলি ডাটাবেসের সাথে সংযোগ করার জন্য সরবরাহ করা প্রয়োজন। এছাড়াও আপনাকে url এনকোডিংয়ের জন্য আগত অনুরোধটি পার্স করতে হবে। -
app.listen(PORT, () => {
এর সাথে শুরু হওয়া শেষ সেকশনের ঠিক আগে আপনার প্রধান জাভাস্ক্রিপ্ট ফাইল থেকে CRUD কোডের সাথে সংযোগ করতে সক্ষম হতেsrc/index.js
এ নিম্নলিখিত কোড স্নিপেট যোগ করুন
const bodyParser = require('body-parser')
app.use(bodyParser.json())
app.use(
bodyParser.urlencoded({
extended: true,
})
)
const db = require("../app/models");
db.sequelize.sync();
require("../app/routes/item.routes")(app);
- ডাটাবেস সংযোগ তথ্য সরবরাহ করতে পরিবেশ ভেরিয়েবল যোগ করতে
deployment.yaml
ফাইলে স্থাপনা সম্পাদনা করুন।
নিম্নলিখিত সংজ্ঞার সাথে মেলে ফাইলের শেষে স্পেস এন্ট্রি আপডেট করুন
spec:
containers:
- name: mynodejsapp
image: mynodejsapp
env:
- name: DB_HOST
value: ${DB_INSTANCE_IP}
- name: DB_PORT
value: "5432"
- name: DB_USER
valueFrom:
secretKeyRef:
name: gke-cloud-sql-secrets
key: username
- name: DB_PASS
valueFrom:
secretKeyRef:
name: gke-cloud-sql-secrets
key: password
- name: DB_NAME
valueFrom:
secretKeyRef:
name: gke-cloud-sql-secrets
key: database
- আপনার ডাটাবেসের ঠিকানা দিয়ে DB_HOST মান প্রতিস্থাপন করুন
export DB_INSTANCE_IP=$(gcloud sql instances describe mytest-instance \
--format=json | jq \
--raw-output ".ipAddresses[].ipAddress")
envsubst < deployment.yaml > deployment.new && mv deployment.new deployment.yaml
প্রয়োগ করুন এবং আবেদন যাচাই করুন
- ক্লাউড শেল এডিটরের নীচের প্যানে,
Cloud Code
নির্বাচন করুন তারপর পর্দার শীর্ষেDebug on Kubernetes
নির্বাচন করুন। - যখন বিল্ড এবং পরীক্ষা করা হয়, আউটপুট ট্যাব বলে:
Resource deployment/mynodejsapp status completed successfully
, এবং একটি url তালিকাভুক্ত করা হয়েছে: "সার্ভিস mynodejsapp থেকে ফরওয়ার্ড করা URL: http://localhost:8080" - আইটেম একটি দম্পতি যোগ করুন.
ক্লাউডশেল টার্মিনাল থেকে, নীচের কমান্ডগুলি চালান
URL=localhost:8080
curl -X POST $URL/items -d '{"itemName":"Body Spray", "itemPrice":3.2}' -H "Content-Type: application/json"
curl -X POST $URL/items -d '{"itemName":"Nail Cutter", "itemPrice":2.5}' -H "Content-Type: application/json"
- ব্রাউজারে $URL/আইটেমগুলি চালিয়ে GET পরীক্ষা করুন৷ আপনি কমান্ড লাইন থেকে কার্ল চালাতে পারেন
curl -X GET $URL/items
- পরীক্ষা মুছে ফেলুন: এখন নীচের কমান্ডটি চালিয়ে একটি আইটেম মুছে ফেলার চেষ্টা করুন। প্রয়োজনে আইটেম-আইডির মান পরিবর্তন করুন।
curl -X DELETE $URL/items/1
This throws an error message
{"message":"Could not delete Item with id=[object Object]"}
সমস্যা চিহ্নিত করুন এবং সমাধান করুন
- অ্যাপ্লিকেশনটি ডিবাগ মোডে চলছে৷ তাই সমস্যাটি খুঁজে পেতে ব্রেকপয়েন্ট ব্যবহার করুন। এখানে কিছু টিপস আছে:
- আমরা জানি মুছে ফেলার সাথে কিছু ভুল আছে কারণ এটি পছন্দসই ফলাফল ফিরিয়ে দিচ্ছে না। সুতরাং আপনি
itemcontroller.js
->exports.delete
পদ্ধতিতে ব্রেকপয়েন্ট সেট করবেন। - ধাপে ধাপে এক্সিকিউশন চালান এবং বাম উইন্ডোতে স্থানীয় ভেরিয়েবলের মান পর্যবেক্ষণ করতে প্রতিটি ধাপে ভেরিয়েবলগুলি দেখুন।
-
request.params
এর মতো নির্দিষ্ট মানগুলি পর্যবেক্ষণ করতে এই ভেরিয়েবলটিকে ওয়াচ উইন্ডোতে যুক্ত করুন।
- লক্ষ্য করুন যে
id
নির্ধারিত মানটিundefined
। সমস্যা সমাধানের জন্য কোড পরিবর্তন করুন।
স্থির কোড স্নিপেট এই মত হবে.
// Delete a Item with the specified id in the request exports.delete = (req, res) => { const id = req.params.id;
- একবার অ্যাপ্লিকেশন পুনরায় চালু হলে, মুছে ফেলার চেষ্টা করে আবার পরীক্ষা করুন।
- ডিবাগ টুলবারে লাল বর্গক্ষেত্রে ক্লিক করে ডিবাগিং সেশন বন্ধ করুন
7. পরিষ্কার করা
অভিনন্দন! এই ল্যাবে আপনি স্ক্র্যাচ থেকে একটি নতুন Nodejs অ্যাপ্লিকেশন তৈরি করেছেন এবং কনটেইনারগুলির সাথে হট ডিপ্লয়মেন্ট মোডে কাজ করার জন্য এটি কনফিগার করেছেন৷ তারপরে আপনি প্রথাগত অ্যাপ্লিকেশন স্ট্যাকগুলিতে পাওয়া একই বিকাশকারী প্রবাহ অনুসরণ করে একটি দূরবর্তী GKE ক্লাস্টারে আপনার অ্যাপ্লিকেশন স্থাপন এবং ডিবাগ করেছেন।
ল্যাব শেষ করার পরে পরিষ্কার করতে:
- ল্যাবে ব্যবহৃত ফাইলগুলি মুছুন
cd ~ && rm -rf mynodejsapp && rm -f setup.sh
- সমস্ত সম্পর্কিত অবকাঠামো এবং সংস্থানগুলি সরাতে প্রকল্পটি মুছুন৷