1. بررسی اجمالی
این آزمایشگاه ویژگیها و قابلیتهایی را نشان میدهد که برای سادهسازی گردش کار توسعه برای مهندسان نرمافزاری که وظیفه توسعه برنامههای NodeJS در یک محیط کانتینری را دارند، طراحی شدهاند. توسعه کانتینر معمولی به کاربر نیاز دارد که جزئیات کانتینرها و فرآیند ساخت کانتینر را درک کند. علاوه بر این، توسعه دهندگان معمولاً باید جریان خود را قطع کنند و از IDE خود خارج شوند تا برنامه های خود را در محیط های راه دور آزمایش و اشکال زدایی کنند. با ابزارها و فناوری های ذکر شده در این آموزش، توسعه دهندگان می توانند بدون خروج از IDE خود، با برنامه های کانتینری به طور موثر کار کنند.
آنچه خواهید آموخت
در این آزمایشگاه روش هایی برای توسعه با کانتینرها در Google Cloud از جمله:
- ایجاد یک برنامه استارتر Nodejs
- پیکربندی برنامه Nodejs برای توسعه کانتینر
- کدگذاری یک سرویس استراحت ساده CRUD
- در حال استقرار در GKE
- اشکال زدایی یک حالت خطا
- استفاده از نقطه شکست / سیاهههای مربوط
- استقرار داغ تغییرات به GKE باز می گردد
- اختیاری: یکپارچه سازی CloudSQL برای پایداری باطن
2. راه اندازی و الزامات
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. شما می توانید آن را در هر زمان به روز کنید.
- شناسه پروژه در تمام پروژههای Google Cloud منحصربهفرد است و تغییرناپذیر است (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (معمولاً به عنوان
PROJECT_ID
شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، میتوانید خودتان را امتحان کنید و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند. - برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، می توانید منابعی را که ایجاد کرده اید حذف کنید یا کل پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
ویرایشگر Cloudshell را شروع کنید
این آزمایشگاه برای استفاده با Google Cloud Shell Editor طراحی و آزمایش شده است. برای دسترسی به ویرایشگر،
- به پروژه Google خود در https://console.cloud.google.com دسترسی پیدا کنید.
- در گوشه بالا سمت راست روی نماد ویرایشگر پوسته ابری کلیک کنید
- یک صفحه جدید در پایین پنجره شما باز می شود
- بر روی دکمه Open Editor کلیک کنید
- ویرایشگر با یک کاوشگر در سمت راست و ویرایشگر در ناحیه مرکزی باز می شود
- یک صفحه ترمینال نیز باید در پایین صفحه موجود باشد
- اگر ترمینال باز نیست، از کلید ترکیبی «ctrl+» برای باز کردن پنجره ترمینال جدید استفاده کنید
gcloud را راه اندازی کنید
در Cloud Shell، شناسه پروژه و منطقه ای را که می خواهید برنامه خود را در آن مستقر کنید، تنظیم کنید. آنها را به عنوان متغیرهای 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 &
Cloud Workstation Cluster
- ایستگاه های کاری Cloud را در Cloud Console باز کنید. منتظر بمانید تا خوشه در وضعیت
READY
باشد.
ایجاد پیکربندی ایستگاه های کاری
- اگر جلسه Cloud Shell شما قطع شد، روی "Reconnect" کلیک کنید و سپس دستور gcloud cli را برای تنظیم ID پروژه اجرا کنید. قبل از اجرای دستور، شناسه پروژه نمونه زیر را با ID پروژه qwiklabs خود جایگزین کنید.
gcloud config set project qwiklabs-gcp-project-id
- برای ایجاد تنظیمات Cloud Workstations، اسکریپت زیر را در ترمینال دانلود و اجرا کنید.
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 دقیقه طول می کشد.
- ایستگاه های کاری Cloud را در کنسول باز کنید و نمونه جدیدی ایجاد کنید.
- نام را به
my-workstation
تغییر دهید و پیکربندی موجود را انتخاب کنید:codeoss-js
.
- نتایج را در بخش ایستگاه های کاری بررسی کنید.
ایستگاه کاری را راه اندازی کنید
- ایستگاه کاری را راه اندازی و راه اندازی کنید. راه اندازی ایستگاه کاری چند دقیقه طول می کشد.
- با کلیک بر روی نماد در نوار آدرس، کوکیهای شخص ثالث را مجاز کنید.
- روی "سایت کار نمی کند؟" کلیک کنید.
- روی "Allow cookies" کلیک کنید.
- پس از راه اندازی ایستگاه کاری، کد OSS IDE را مشاهده خواهید کرد. روی "علامت گذاری انجام شده" در صفحه شروع به کار در یکی از IDE ایستگاه کاری کلیک کنید
3. ایجاد یک برنامه استارت جدید Nodejs
در این بخش یک برنامه جدید Nodejs ایجاد خواهید کرد.
- یک ترمینال جدید باز کنید.
- در Cloud Shell، یک دایرکتوری جدید با نام
mynodejsapp
ایجاد کنید
mkdir mynodejsapp
در صورت مشاهده این پیغام روی دکمه Allow کلیک کنید تا بتوانید در ایستگاه کاری کپی کنید.
- به این دایرکتوری تغییر دهید و آن را به عنوان یک فضای کاری باز کنید. این کار با ایجاد یک پیکربندی فضای کاری در پوشه جدید ایجاد شده، ویرایشگر را بارگیری مجدد می کند.
cd mynodejsapp && code-oss-cloud-workstations -r --folder-uri="$PWD"
- دوباره یک ترمینال جدید باز کنید. Node و NPM را با استفاده از NVM نصب کنید.
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" }
- یک نقطه ورودی اضافه کنید
فایل package.json
را در IDE باز کرده و ویرایش کنید تا دستور start را در اسکریپت "start": "node src/index.js",
. پس از تغییر، اسکریپت ها باید مانند قطعه کد زیر باشند:
"scripts": {
"start": "node src/index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
- وابستگی Express را اضافه کنید
کدی که می خواهیم اضافه کنیم از 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
تنظیم شده است
ایجاد مانیفست
Skaffold ابزارهای یکپارچه ای را برای ساده سازی توسعه کانتینر فراهم می کند. در این مرحله شما Skaffold را مقداردهی اولیه می کنید که به طور خودکار فایل های YAML پایه kubernetes را ایجاد می کند. دستور زیر را برای شروع فرآیند اجرا کنید.
دستور زیر را در ترمینال اجرا کنید
skaffold init --generate-manifests
وقتی از شما خواسته شد:
- 8080 را برای پورت وارد کنید
- برای ذخیره تنظیمات y را وارد کنید
دو فایل skaffold.yaml
و deployment.yaml
به فضای کاری اضافه می شوند
نام برنامه را به روز کنید
مقادیر پیشفرض موجود در پیکربندی در حال حاضر با نام برنامه شما مطابقت ندارد. فایل ها را برای ارجاع به نام برنامه خود به جای مقادیر پیش فرض به روز کنید.
- تغییر ورودی ها در پیکربندی Skaffold
-
skaffold.yaml
باز کنید - نام تصویری که در حال حاضر به عنوان
package-json-image
تنظیم شده است را انتخاب کنید - کلیک راست کرده و Change All Occurrences را انتخاب کنید
- نام جدید را به عنوان
mynodejsapp
وارد کنید
- ورودیهای پیکربندی Kubernetes را تغییر دهید
- فایل
deployment.yaml
را باز کنید - نام تصویری که در حال حاضر به عنوان
package-json-image
تنظیم شده است را انتخاب کنید - کلیک راست کرده و Change All Occurrences را انتخاب کنید
- نام جدید را به عنوان
mynodejsapp
وارد کنید
توجه داشته باشید که در فایل skaffold.yaml
، بخش build
از buildpacks
برای کانتینری کردن برنامه استفاده می کند. این کد Dockerfile ندارد و توسعه دهنده برای کانتینری کردن این برنامه نیازی به دانش داکر ندارد.
همچنین، همگام سازی داغ به طور خودکار بین ویرایشگر و محفظه در حال اجرا توسط این پیکربندی skaffold فعال می شود. هیچ پیکربندی اضافی برای فعال کردن همگام سازی داغ مورد نیاز نیست.
5. قدم زدن در فرآیند توسعه
در این بخش با استفاده از افزونه Cloud Code چند مرحله را طی میکنید تا فرآیندهای اساسی را بیاموزید و پیکربندی و راهاندازی برنامه شروع خود را تأیید کنید.
Cloud Code با skaffold ادغام می شود تا فرآیند توسعه شما را ساده کند. هنگامی که در مراحل زیر در GKE مستقر می شوید، Cloud Code و Skaffold به طور خودکار تصویر کانتینر شما را می سازند، آن را به یک رجیستری کانتینر فشار می دهند و سپس برنامه شما را در GKE مستقر می کنند. این در پشت صحنه اتفاق می افتد و جزئیات را به دور از جریان توسعه دهنده انتزاع می کند. Cloud Code همچنین با ارائه قابلیتهای سنتی Debug و Hotsync برای توسعه مبتنی بر کانتینر، فرآیند توسعه شما را افزایش میدهد.
به Google Cloud وارد شوید
- روی نماد Cloud Code کلیک کنید و "Sign in to Google Cloud" را انتخاب کنید:
- روی "ادامه برای ورود به سیستم" کلیک کنید.
- خروجی را در ترمینال بررسی کنید و پیوند را باز کنید:
- با اعتبارنامه دانشجویان Qwiklabs خود وارد شوید.
- "مجاز" را انتخاب کنید:
- کد تأیید را کپی کنید و به تب Workstation برگردید.
- کد تایید را بچسبانید و Enter را بزنید.
خوشه Kubernetes را اضافه کنید
- یک خوشه اضافه کنید
- موتور Google Kubernetes را انتخاب کنید:
- پروژه را انتخاب کنید
- "mycluster" را که در تنظیمات اولیه ایجاد شده است انتخاب کنید.
- این خوشه اکنون در لیست خوشه های Kubernetes در زیر کد ابری نمایش داده می شود. از اینجا خوشه را پیمایش و کاوش کنید.
با استفاده از gcloud cli شناسه پروژه فعلی را تنظیم کنید
- شناسه پروژه را برای این آزمایشگاه از صفحه qwiklabs کپی کنید.
- از ترمینال، دستور gcloud cli را برای تنظیم ID پروژه اجرا کنید. قبل از اجرای دستور، شناسه پروژه نمونه را جایگزین کنید. قبل از اجرای دستور زیر، شناسه پروژه را جایگزین کنید.
gcloud config set project qwiklabs-gcp-project-id
به Kubernetes مستقر شوید
- در قسمت پایین Cloud Shell Editor، Cloud Code  را انتخاب کنید
- در پانلی که در بالا در زیر DEVELOPMENT SESSIONS ظاهر میشود، Run on Kubernetes را انتخاب کنید. اگر از شما خواسته شد، بله را برای استفاده از زمینه فعلی Kubernetes انتخاب کنید.
- اولین باری که دستور را اجرا میکنید، یک فرمان در بالای صفحه ظاهر میشود که از شما میپرسد آیا میخواهید زمینه فعلی kubernetes را داشته باشید، برای پذیرش و استفاده از زمینه فعلی، «بله» را انتخاب کنید.
- سپس یک درخواست نمایش داده می شود که از کدام رجیستری کانتینری استفاده کنید. اینتر را فشار دهید تا مقدار پیش فرض ارائه شده را بپذیرید
- برای مشاهده پیشرفت و اعلانها، تب Output را در قسمت پایین و Kubernetes: Run/Debug را در قسمت کشویی انتخاب کنید.
- "Kubernetes: Run/Debug - Detailed" را در منوی کشویی کانال به سمت راست انتخاب کنید تا جزئیات بیشتر و گزارشها را به صورت زنده از کانتینرها مشاهده کنید.
- با انتخاب "Kubernetes: Run/Debug" از منوی کشویی به نمای ساده شده بازگردید.
- وقتی ساخت و آزمایش انجام شد، برگه خروجی میگوید:
Resource deployment/mynodejsapp status completed successfully
، و یک نشانی اینترنتی فهرست میشود: «URL فوروارد شده از برنامه آزمایشی سرویس: http://localhost:8080» - در ترمینال Cloud Code، نشانی اینترنتی موجود در خروجی (http://localhost:8080) را نگه دارید و سپس در نکته ابزاری که ظاهر میشود، Follow Link را انتخاب کنید.
پاسخ این خواهد بود:
{"message":"Greetings from Node"}
بارگذاری مجدد داغ
- به
src/index.js
بروید. کد پیام تبریک را به'Hello from Node'
ویرایش کنید
فوراً توجه کنید که در پنجره Output
، نمایش Kubernetes: Run/Debug
، ناظر فایل های به روز شده را با ظرف در Kubernetes همگام می کند.
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/
- برای مشاهده نتایج به روز شده، مرورگر خود را تازه کنید.
اشکال زدایی
- به نمای Debug بروید و رشته فعلی را متوقف کنید .
- روی
Cloud Code
در منوی پایین کلیک کنید وDebug on Kubernetes
را انتخاب کنید تا برنامه در حالتdebug
اجرا شود.
- در
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.
- نوار وضعیت پایین رنگ خود را از آبی به نارنجی تغییر می دهد که نشان می دهد در حالت Debug قرار دارد.
- در نمای
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"
را پیدا کنید. - خط را با فشار دادن روی Step over اجرا کنید
- مشاهده مقدار فعلی متغیر
"message"
به"Hello from Node"
- روی نام متغیر "target" دوبار کلیک کنید و در پنجره بازشو مقدار را به چیزی متفاوت مانند
"Hi from Node"
تغییر دهید. - روی دکمه Continue در کنترل پنل اشکال زدایی کلیک کنید
- پاسخ را در مرورگر خود مرور کنید که اکنون مقدار به روز شده ای را که وارد کرده اید نشان می دهد.
- با فشار دادن دکمه توقف، حالت "Debug" را متوقف کنید و با کلیک مجدد بر روی نقطه شکست، نقطه شکست را حذف کنید.
6. ایجاد یک سرویس استراحت ساده CRUD
در این مرحله برنامه شما به طور کامل برای توسعه کانتینری پیکربندی شده است و شما در جریان کار توسعه اولیه با Cloud Code قدم زده اید. در بخشهای بعدی، آنچه را که آموختهاید با افزودن نقاط پایانی سرویس REST که به پایگاه داده مدیریتشده در Google Cloud متصل میشوند، تمرین میکنید.
پیکربندی وابستگی ها
کد برنامه از یک پایگاه داده برای حفظ بقیه داده های سرویس استفاده می کند. با افزودن موارد زیر در فایل package.json
، اطمینان حاصل کنید که وابستگی ها در دسترس هستند
- دو وابستگی دیگر
pg
اضافه کنید و به فایلpackage.json
sequelize
تا یک برنامه CRUD Postgres بسازید. تغییرات پست بخش وابستگی ها به این شکل است.
"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
این کد دارد
- پوشه models با مدل نهاد برای
item
- پوشه controllers با کدی که عملیات CRUD را انجام می دهد
- پوشه routes که الگوهای URL خاص را به تماس های مختلف هدایت می کند
- پوشه پیکربندی با جزئیات اتصال به پایگاه داده
- توجه داشته باشید که پیکربندی پایگاه داده در فایل
db.config.js
به متغیرهای محیطی اشاره دارد که برای اتصال به پایگاه داده باید ارائه شوند. همچنین باید درخواست ورودی را برای رمزگذاری url تجزیه و تحلیل کنید. - قطعه کد زیر را در
src/index.js
اضافه کنید تا بتوانید درست قبل از آخرین قسمتی که باapp.listen(PORT, () => {
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 Shell Editor،
Cloud Code
را انتخاب کنید و سپسDebug on Kubernetes
در بالای صفحه انتخاب کنید. - هنگامی که ساخت و آزمایش انجام شد، برگه خروجی می گوید:
Resource deployment/mynodejsapp status completed successfully
و یک آدرس اینترنتی فهرست می شود: "URL بازارسال شده از سرویس mynodejsapp: http://localhost:8080" - چند مورد اضافه کنید
از ترمینال cloudshell، دستورات زیر را اجرا کنید
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"
- GET را با اجرای $URL/items در مرورگر آزمایش کنید. همچنین می توانید curl را از خط فرمان اجرا کنید
curl -X GET $URL/items
- Test Delete: اکنون با اجرای دستور زیر سعی کنید یک مورد را حذف کنید. در صورت نیاز مقدار item-id را تغییر دهید.
curl -X DELETE $URL/items/1
This throws an error message
{"message":"Could not delete Item with id=[object Object]"}
مشکل را شناسایی و برطرف کنید
- برنامه در حالت Debug اجرا می شود. بنابراین از نقاط شکست برای پیدا کردن مشکل استفاده کنید. در اینجا چند نکته وجود دارد:
- ما می دانیم که مشکلی در DELETE وجود دارد زیرا نتیجه دلخواه را بر نمی گرداند. بنابراین شما باید نقطه شکست را در روش
itemcontroller.js
->exports.delete
تنظیم کنید. - اجرای مرحله به مرحله را اجرا کنید و متغیرها را در هر مرحله مشاهده کنید تا مقادیر متغیرهای محلی را در پنجره سمت چپ مشاهده کنید.
- برای مشاهده مقادیر خاصی مانند
request.params
این متغیر را به پنجره Watch اضافه کنید.
- توجه داشته باشید که مقدار اختصاص داده شده به
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
- برای حذف تمام زیرساخت ها و منابع مرتبط، پروژه را حذف کنید