درباره این codelab
1. نمای کلی
این آزمایشگاه ویژگیها و قابلیتهایی را نشان میدهد که برای سادهسازی گردش کار توسعه برای مهندسان نرمافزاری که وظیفه توسعه برنامههای پایتون را در یک محیط کانتینری دارند، طراحی شده است. توسعه کانتینر معمولی به کاربر نیاز دارد که جزئیات کانتینرها و فرآیند ساخت کانتینر را درک کند. علاوه بر این، توسعه دهندگان معمولاً باید جریان خود را قطع کنند و از IDE خود خارج شوند تا برنامه های خود را در محیط های راه دور آزمایش و اشکال زدایی کنند. با ابزارها و فناوری های ذکر شده در این آموزش، توسعه دهندگان می توانند بدون خروج از IDE خود، با برنامه های کانتینری به طور موثر کار کنند.
ایستگاه های کاری ابری چیست؟
Cloud Workstations محیط های توسعه مدیریت شده را در Google Cloud با امنیت داخلی و محیط های توسعه از پیش پیکربندی شده و در عین حال قابل تنظیم ارائه می دهد. از طریق یک IDE مبتنی بر مرورگر، از چندین ویرایشگر کد محلی (مانند VSCode یا JetBrains IDE مانند IntelliJ IDEA Ultimate و PyCharm Professional)، یا از طریق SSH به ایستگاه های کاری ابری دسترسی داشته باشید.
Cloud Workstation از منابع زیر استفاده می کند:
- مدیران کلاسترهای ایستگاه کاری ایجاد می کنند
- در هر خوشه ایستگاه کاری، مدیران یک یا چند پیکربندی ایستگاه کاری ایجاد می کنند که به عنوان الگو برای ایستگاه های کاری عمل می کنند.
- توسعهدهندگان میتوانند ایستگاههای کاری ایجاد کنند که محیطهای توسعه را تعریف میکنند و یک Cloud IDE، ابزار زبان، کتابخانهها و موارد دیگر را ارائه میکنند.
Cloud Workstations به مدیران فناوری اطلاعات و امنیت این امکان را میدهد تا به راحتی محیطهای توسعه خود را تهیه، مقیاس، مدیریت و ایمن کنند و به توسعهدهندگان اجازه میدهد به محیطهای توسعه با پیکربندیهای ثابت و ابزارهای قابل تنظیم دسترسی داشته باشند.
Cloud Workstations با بهبود وضعیت امنیتی محیط های توسعه برنامه شما به تغییر امنیت به سمت چپ کمک می کند. دارای ویژگیهای امنیتی مانند کنترلهای سرویس VPC، ورود یا خروج خصوصی، بهروزرسانی اجباری تصویر و سیاستهای دسترسی مدیریت هویت و دسترسی است.
Cloud Code چیست؟
Cloud Code پشتیبانی IDE را برای چرخه توسعه کامل برنامه های Kubernetes و Cloud Run، از ایجاد و سفارشی سازی یک برنامه جدید از الگوهای نمونه گرفته تا اجرای برنامه تمام شده شما، ارائه می دهد. Cloud Code از شما در طول مسیر با نمونههای آماده اجرا، قطعات پیکربندی خارج از جعبه، و تجربه اشکالزدایی مناسب پشتیبانی میکند - توسعه با Kubernetes و Cloud Run را بسیار آسانتر میکند!
در اینجا برخی از ویژگی های Cloud Code آورده شده است:
- به طور مداوم برنامه ها را بسازید و اجرا کنید
- پشتیبانی از اشکال زدایی برای برنامه Kubernetes شما در حال توسعه است
- گزارش جریان و مشاهده
درباره سایر ویژگیهای Cloud Code بیشتر بدانید.
آنچه خواهید آموخت
در این آزمایشگاه روش هایی برای توسعه با کانتینرها در GCP از جمله:
- بررسی ایستگاه های کاری ابری
- ایستگاه کاری را راه اندازی کنید
- کد ابر را مرور کنید
- اشکال زدایی در Kubernetes
2. راه اندازی و الزامات
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. شما می توانید آن را در هر زمان به روز کنید.
- شناسه پروژه در تمام پروژههای Google Cloud منحصربهفرد است و تغییرناپذیر است (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (معمولاً به عنوان
PROJECT_ID
شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، میتوانید خودتان را امتحان کنید و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند. - برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، می توانید منابعی را که ایجاد کرده اید حذف کنید یا کل پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
راه اندازی محیط
در Cloud Shell، شناسه پروژه و شماره پروژه را برای پروژه خود تنظیم کنید. آنها را به عنوان متغیرهای PROJECT_ID
و PROJECT_ID
ذخیره کنید.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \
--format='value(projectNumber)')
در این آزمایشگاه شما کد را برای GKE مستقر خواهید کرد. همچنین از ایستگاه های کاری Cloud به عنوان IDE استفاده خواهید کرد.
اسکریپت راه اندازی زیر این زیرساخت را برای شما آماده می کند.
- اسکریپت راه اندازی را دانلود کنید و آن را قابل اجرا کنید.
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/python/setup_with_cw.sh
chmod +x setup_with_cw.sh
- فایل
setup_with_cw.sh
را باز کنید و مقادیر گذرواژه هایی را که در حال حاضر روی CHANGEME تنظیم شده اند ویرایش کنید. - اسکریپت راهاندازی را اجرا کنید تا یک خوشه GKE که در این آزمایشگاه از آن استفاده خواهید کرد. این تنظیم حدود 20 دقیقه طول خواهد کشید.
./setup_with_cw.sh &
- ایستگاه های کاری 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/python/workstation_config_setup.sh
chmod +x workstation_config_setup.sh
./workstation_config_setup.sh
Cloud Workstations Cluster and Configuration
ایستگاه های کاری Cloud را در Cloud Console باز کنید. بررسی کنید که خوشه در وضعیت READY
است.
وضعیت تنظیمات موجود را تأیید کنید.
یک ایستگاه کاری جدید ایجاد کنید.
نام را به my-workstation
تغییر دهید و پیکربندی موجود را انتخاب کنید: codeoss-python
.
ایستگاه کاری را راه اندازی کنید
- ایستگاه کاری را راه اندازی و راه اندازی کنید. چند لحظه طول می کشد تا ایستگاه کاری راه اندازی شود.
- با کلیک بر روی نماد در نوار آدرس، کوکیهای شخص ثالث را مجاز کنید.
- روی "سایت کار نمی کند؟" کلیک کنید.
- روی "Allow cookies" کلیک کنید.
- پس از راه اندازی ایستگاه کاری، کد OSS IDE را مشاهده خواهید کرد.
روی "علامت گذاری انجام شده" در صفحه شروع به کار در یکی از IDE ایستگاه کاری کلیک کنید
3. بررسی اجمالی کدهای ابری
بخش های مختلف موجود در Cloud Code را مرور کنید.
- توسعه Kubernetes یک محیط توسعه و اشکال زدایی Kubernetes کاملاً یکپارچه را در IDE خود دریافت کنید. خوشه ها را مستقیماً از داخل IDE ایجاد و مدیریت کنید.
- اشکال زدایی برنامه های در حال اجرا با استفاده از ویژگیهای اشکالزدایی داخلی IDE، کد را با استفاده از Cloud Code برای VS Code و Cloud Code برای IntelliJ اشکالزدایی کنید.
- استقرارها را کاوش کنید. منابع و ابرداده های اساسی را برای خوشه های Kubernetes و سرویس های Cloud Run خود مشاهده کنید. میتوانید توضیحات را واکشی کنید، گزارشها را مشاهده کنید، اسرار را مدیریت کنید، یا یک ترمینال را مستقیماً در یک pod دریافت کنید.
- توسعه محلی Kubernetes را ساده کنید. در زیر پوششها، Cloud Code برای IDE از ابزارهای محبوبی مانند Skaffold، Jib و kubectl برای ارائه بازخورد مداوم در مورد کد شما در زمان واقعی استفاده میکند.
به Google Cloud وارد شوید
- روی نماد Cloud Code کلیک کنید و "Sign in to Google Cloud" را انتخاب کنید:
- روی "ادامه برای ورود به سیستم" کلیک کنید.
- خروجی را در ترمینال بررسی کنید و پیوند را باز کنید:
- با اعتبارنامه دانشجویان Qwiklabs خود وارد شوید.
- "مجاز" را انتخاب کنید:
- کد تأیید را کپی کنید و به تب Workstation برگردید.
- کد تایید را بچسبانید و Enter را بزنید.
در صورت مشاهده این پیام بر روی دکمه "Allow" کلیک کنید تا بتوانید در ایستگاه کاری کپی کنید.
4. یک برنامه شروع جدید پایتون ایجاد کنید
در این بخش یک اپلیکیشن پایتون جدید ایجاد می کنید.
- یک ترمینال جدید باز کنید.
- یک دایرکتوری جدید بسازید و آن را به عنوان فضای کاری باز کنید
mkdir music-service && cd music-service
code-oss-cloud-workstations -r --folder-uri="$PWD"
- فایلی به نام
requirements.txt
ایجاد کنید و مطالب زیر را در آن کپی کنید
Flask
gunicorn
ptvsd==4.3.2
- یک فایل به نام
app.py
ایجاد کنید و کد زیر را در آن قرار دهید
import os
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/")
def hello_world():
message="Hello, World!"
return message
if __name__ == '__main__':
server_port = os.environ.get('PORT', '8080')
app.run(debug=False, port=server_port, host='0.0.0.0')
- یک فایل به نام
Dockerfile
ایجاد کنید و موارد زیر را در آن قرار دهید
FROM python:3.8
ARG FLASK_DEBUG=0
ENV FLASK_DEBUG=$FLASK_DEBUG
ENV FLASK_APP=app.py
WORKDIR /app
COPY requirements.txt .
RUN pip install --trusted-host pypi.python.org -r requirements.txt
COPY . .
ENTRYPOINT ["python3", "-m", "flask", "run", "--port=8080", "--host=0.0.0.0"]
توجه : FLASK_DEBUG=1 به شما امکان میدهد تا تغییرات کد را در یک برنامه فلاسک پایتون بارگیری مجدد کنید. این Dockerfile به شما اجازه می دهد تا این مقدار را به عنوان یک آرگومان ساخت ارسال کنید.
ایجاد مانیفست
در ترمینال خود دستور زیر را برای ایجاد skaffold.yaml
و deployment.yaml
پیش فرض اجرا کنید
- Skaffold را با دستور زیر مقدار دهی اولیه کنید
skaffold init --generate-manifests
هنگامی که از شما خواسته شد، از فلش ها برای حرکت مکان نما و از نوار فاصله برای انتخاب گزینه ها استفاده کنید.
انتخاب کنید:
-
8080
برای پورت -
y
برای ذخیره تنظیمات
پیکربندی های Skaffold را به روز کنید
- نام برنامه پیش فرض را تغییر دهید
-
skaffold.yaml
باز کنید - نام تصویری که در حال حاضر به عنوان
dockerfile-image
تنظیم شده را انتخاب کنید - کلیک راست کرده و Change All Occurrences را انتخاب کنید
- نام جدید را به عنوان
python-app
وارد کنید - در ادامه بخش ساخت را ویرایش کنید
- برای عبور
FLASK_DEBUG=1
docker.buildArgs
را اضافه کنید - تنظیمات را برای بارگیری هرگونه تغییر در فایل های
*.py
از IDE به ظرف در حال اجرا، همگام کنید
پس از ویرایش ها، بخش ساخت در فایل skaffold.yaml
به صورت زیر خواهد بود:
build:
artifacts:
- image: python-app
docker:
buildArgs:
FLASK_DEBUG: "1"
dockerfile: Dockerfile
sync:
infer:
- '**/*.py'
فایل پیکربندی Kubernetes را اصلاح کنید
- نام پیش فرض را تغییر دهید
- فایل
deployment.yaml
را باز کنید - نام تصویری که در حال حاضر به عنوان
dockerfile-image
تنظیم شده را انتخاب کنید - کلیک راست کرده و Change All Occurrences را انتخاب کنید
- نام جدید را به عنوان
python-app
وارد کنید
5. قدم زدن در فرآیند توسعه
با منطق تجاری اضافه شده، اکنون می توانید برنامه خود را مستقر و آزمایش کنید. بخش زیر استفاده از افزونه Cloud Code را نشان می دهد. از جمله موارد دیگر، این افزونه با skaffold ادغام می شود تا فرآیند توسعه شما را ساده کند. هنگامی که در مراحل زیر در GKE مستقر می شوید، Cloud Code و Skaffold به طور خودکار تصویر کانتینر شما را می سازند، آن را به یک رجیستری کانتینر فشار می دهند و سپس برنامه your
را در GKE مستقر می کنند. این اتفاق در پشت صحنه می افتد و جزئیات را به دور از جریان توسعه دهنده انتزاع می کند.
خوشه Kubernetes را اضافه کنید
- یک خوشه اضافه کنید
- موتور Google Kubernetes را انتخاب کنید:
- پروژه را انتخاب کنید
- "python-cluster" را که در تنظیمات اولیه ایجاد شده است انتخاب کنید.
- این خوشه اکنون در لیست خوشه های Kubernetes در زیر کد ابری نمایش داده می شود. از اینجا خوشه را پیمایش و کاوش کنید.
مستقر در Kubernetes
- در قسمت پایین Cloud Shell Editor، Cloud Code  را انتخاب کنید
- در پانلی که در بالا ظاهر می شود، Run on Kubernetes را انتخاب کنید.
اگر از شما خواسته شد، بله را برای استفاده از زمینه فعلی Kubernetes انتخاب کنید.
این دستور یک بیلد از کد منبع را شروع می کند و سپس تست ها را اجرا می کند. ساخت و آزمایش چند دقیقه طول می کشد تا اجرا شود. این تست ها شامل تست های واحد و یک مرحله اعتبار سنجی است که قوانین تنظیم شده برای محیط استقرار را بررسی می کند. این مرحله اعتبار سنجی قبلاً پیکربندی شده است، و تضمین می کند که شما در مورد مشکلات استقرار هشدار دریافت می کنید، حتی زمانی که هنوز در محیط توسعه خود کار می کنید.
- اولین باری که دستور را اجرا میکنید، یک فرمان در بالای صفحه ظاهر میشود که از شما میپرسد آیا میخواهید زمینه فعلی kubernetes را داشته باشید، برای پذیرش و استفاده از زمینه فعلی، «بله» را انتخاب کنید.
- سپس یک درخواست نمایش داده می شود که از کدام رجیستری کانتینری استفاده کنید. اینتر را فشار دهید تا مقدار پیش فرض ارائه شده را بپذیرید
- برای مشاهده پیشرفت و اعلانها، تب "خروجی" را در قسمت پایین انتخاب کنید. با استفاده از کشویی "Kubernetes: Run/Debug" را انتخاب کنید
- "Kubernetes: Run/Debug - Detailed" را در منوی کشویی کانال به سمت راست انتخاب کنید تا جزئیات بیشتر و گزارشها را به صورت زنده از کانتینرها مشاهده کنید.
هنگامی که ساخت و آزمایش انجام شد، گزارشهای برگه خروجی دارای URL http://localhost:8080 خواهند بود که در نمای "Kubernetes: Run/Debug" فهرست شده است.
- در ترمینال Cloud Code، ماوس را روی اولین URL در خروجی نگه دارید (http://localhost:8080) و سپس در نکته ابزار ظاهر شده Open Web Preview را انتخاب کنید.
- یک برگه مرورگر جدید باز می شود و این پیام را نشان می دهد:
Hello, World!
بارگذاری مجدد داغ
- فایل
app.py
باز کنید - پیام تبریک را
Hello from Python
تغییر دهید
فوراً توجه کنید که در پنجره Output
، نمایش Kubernetes: Run/Debug
، ناظر فایل های به روز شده را با ظرف در Kubernetes همگام می کند.
Update initiated Build started for artifact python-app Build completed for artifact python-app Deploy started Deploy completed Status check started Resource pod/python-app-6f646ffcbb-tn7qd status updated to In Progress Resource deployment/python-app status updated to In Progress Resource deployment/python-app status completed successfully Status check succeeded ...
- اگر به
Kubernetes: Run/Debug - Detailed
، متوجه خواهید شد که تغییرات فایل را تشخیص میدهد و سپس برنامه را میسازد و مجدداً مستقر میکند.
files modified: [app.py]
Syncing 1 files for gcr.io/veer-pylab-01/python-app:3c04f58-dirty@sha256:a42ca7250851c2f2570ff05209f108c5491d13d2b453bb9608c7b4af511109bd
Copying files:map[app.py:[/app/app.py]]togcr.io/veer-pylab-01/python-app:3c04f58-dirty@sha256:a42ca7250851c2f2570ff05209f108c5491d13d2b453bb9608c7b4af511109bd
Watching for changes...
[python-app] * Detected change in '/app/app.py', reloading
[python-app] * Restarting with stat
[python-app] * Debugger is active!
[python-app] * Debugger PIN: 744-729-662
- برگه مرورگر خود را در جایی که نتایج قبلی را مشاهده کردید بازخوانی کنید تا نتایج به روز شده را ببینید.
اشکال زدایی
- به نمای Debug بروید و رشته فعلی را متوقف کنید
. اگر درخواست کرد، میتوانید پس از هر اجرا پاکسازی را انتخاب کنید.
- روی
Cloud Code
در منوی پایین کلیک کنید وDebug on Kubernetes
را انتخاب کنید تا برنامه در حالتdebug
اجرا شود.
- در
Kubernetes Run/Debug - Detailed
پنجرهOutput
، توجه کنید که skaffold این برنامه را در حالت اشکال زدایی مستقر می کند.
- اولین باری که این کار اجرا می شود، از شما می پرسد که منبع داخل ظرف کجاست. این مقدار مربوط به دایرکتوری های موجود در Dockerfile است.
برای پذیرش پیش فرض، Enter را فشار دهید
چند دقیقه طول می کشد تا برنامه ساخته و اجرا شود. اگر جلسه اشکالزدایی قطع شد، مراحل «اشکالزدایی در Kubernetes» را از بخش «جلسات توسعه» دوباره اجرا کنید.
- زمانی که فرآیند تکمیل شد. متوجه میشوید که یک دیباگر متصل است و برگه خروجی میگوید:
Attached debugger to container "python-app-8476f4bbc-h6dsl" successfully.
، و URL http://localhost:8080 فهرست شده است.
Port forwarding pod/python-app-8bd64cf8b-cskfl in namespace default, remote port 5678 -> http://127.0.0.1:5678
- نوار وضعیت پایین رنگ خود را از آبی به نارنجی تغییر می دهد که نشان می دهد در حالت Debug قرار دارد.
- در نمای
Kubernetes Run/Debug
، توجه کنید که یک ظرف اشکالزدایی راهاندازی شده است
**************URLs***************** Forwarded URL from service python-app: http://localhost:8080 Debuggable container started pod/python-app-8bd64cf8b-cskfl:python-app (default) Update succeeded ***********************************
از نقاط شکست استفاده کنید
- فایل
app.py
باز کنید - بیانیه ای را که
return message
می خواند پیدا کنید - با کلیک بر روی فضای خالی سمت چپ شماره خط، یک نقطه شکست به آن خط اضافه کنید. یک نشانگر قرمز نشان می دهد تا توجه داشته باشید که نقطه شکست تنظیم شده است
- مرورگر خود را دوباره بارگیری کنید و توجه داشته باشید که دیباگر فرآیند را در نقطه شکست متوقف می کند و به شما امکان می دهد متغیرها و وضعیت برنامه ای را که از راه دور در GKE اجرا می شود بررسی کنید.
- در قسمت VARIABLES پایین کلیک کنید
- در آنجا روی Locals کلیک کنید و متغیر
"message"
پیدا خواهید کرد. - روی نام متغیر "message" دوبار کلیک کنید و در پنجره بازشو مقدار را به چیزی متفاوت مانند
"Greetings from Python"
تغییر دهید. - روی دکمه Continue در کنترل پنل اشکال زدایی کلیک کنید
- پاسخ را در مرورگر خود مرور کنید که اکنون مقدار به روز شده ای را که وارد کرده اید نشان می دهد.
- با فشار دادن دکمه توقف، حالت "Debug" را متوقف کنید
و با کلیک مجدد بر روی نقطه شکست، نقطه شکست را حذف کنید.
6. پاکسازی
تبریک می گویم! در این آزمایشگاه شما یک برنامه جدید پایتون را از ابتدا ایجاد کرده اید و آن را پیکربندی کرده اید تا به طور موثر با کانتینرها کار کند. سپس برنامه خود را به دنبال همان جریان توسعهدهنده موجود در پشتههای برنامههای سنتی، در یک خوشه راهدور GKE مستقر کرده و اشکال زدایی کردید.
برای تمیز کردن پس از تکمیل آزمایشگاه:
- فایل های مورد استفاده در آزمایشگاه را حذف کنید
cd ~ && rm -rf ~/music-service
- برای حذف تمام زیرساخت ها و منابع مرتبط، پروژه را حذف کنید
-
آخرین به روز رسانی: 3/22/23