Vertex AI یک نوت بوک امن با مدیریت کاربر ایجاد می کند

۱. مقدمه

نمونه‌های نوت‌بوک‌های مدیریت‌شده توسط کاربر در Vertex AI Workbench به شما امکان می‌دهند نمونه‌های ماشین مجازی یادگیری عمیق (VM) را که با JupyterLab از پیش بسته‌بندی شده‌اند، ایجاد و مدیریت کنید.

نمونه‌های نوت‌بوک‌های مدیریت‌شده توسط کاربر، مجموعه‌ای از بسته‌های یادگیری عمیق از پیش نصب‌شده دارند، از جمله پشتیبانی از چارچوب‌های TensorFlow و PyTorch. می‌توانید نمونه‌های فقط CPU یا فعال‌شده با GPU را پیکربندی کنید.

آنچه خواهید ساخت

این آموزش فرآیند استقرار یک نوت‌بوک امن تحت مدیریت کاربر را بر اساس بهترین شیوه‌های ارائه شده در Networking and Security شرح می‌دهد. مراحل زیر در این امر دخیل هستند:

  1. یک VPC ایجاد کنید
  2. ایجاد یک روتر ابری و Cloud NAT
  3. نمونه نوت‌بوک را با تنظیمات امنیتی مناسب پیکربندی کنید

این آموزش دستورالعمل‌های دقیقی برای هر مرحله ارائه می‌دهد. همچنین شامل نکات و بهترین شیوه‌ها برای ایمن‌سازی نوت‌بوک‌های تحت مدیریت کاربر است. شکل 1 تصویری از استقرار با استفاده از یک VPC مستقل است.

شکل ۱

۲۲۹۲۲۴۴ba0b11f71.png

آنچه یاد خواهید گرفت

  • چگونه تشخیص دهیم که آیا یک VPC اشتراکی یا مستقل برای سازمان شما مناسب است یا خیر
  • چگونه یک VPC مستقل ایجاد کنیم؟
  • نحوه ایجاد یک روتر ابری و Cloud NAT
  • نحوه ایجاد یک دفترچه یادداشت مدیریت شده توسط کاربر
  • نحوه دسترسی به دفترچه یادداشت مدیریت شده توسط کاربر
  • نحوه نظارت بر سلامت نوت‌بوک تحت مدیریت کاربر
  • نحوه ایجاد و اعمال یک برنامه نمونه

آنچه نیاز دارید

  • پروژه ابری گوگل

مجوزهای IAM

۲. شبکه VPC

شما می‌توانید یک شبکه VPC را مانند یک شبکه فیزیکی در نظر بگیرید، با این تفاوت که در Google Cloud مجازی‌سازی شده است. یک شبکه VPC یک منبع جهانی است که از زیرشبکه‌های منطقه‌ای تشکیل شده است. شبکه‌های VPC در Google Cloud به طور منطقی از یکدیگر جدا هستند.

VPC مستقل

شکل ۲ نمونه‌ای از یک VPC جهانی مستقل است که علاوه بر روتر ابری و NAT ابری، از یک زیرشبکه منطقه‌ای (us-central1) نیز تشکیل شده است و برای ایجاد اتصال ایمن به اینترنت توسط نوت‌بوک مدیریت‌شده توسط کاربر استفاده می‌شود.

شکل ۲

۲۲۹۲۲۴۴ba0b11f71.png

VPC مشترک

VPC اشتراکی به شما امکان می‌دهد زیرشبکه‌ها را از یک شبکه VPC در یک پروژه میزبان به پروژه‌های خدماتی در همان سازمان صادر کنید. پروژه میزبان شامل منابع شبکه‌ای است که با پروژه خدماتی مانند زیرشبکه‌ها، قوانین ابر و فایروال به اشتراک گذاشته شده‌اند. پروژه خدماتی شامل منابع سطح برنامه است که از منابع شبکه در پروژه میزبان استفاده می‌کنند.

شکل 3 تصویری از یک VPC اشتراکی جهانی است که در آن زیرساخت شبکه و امنیت در پروژه میزبان مستقر شده است، در حالی که بارهای کاری در پروژه سرویس مستقر شده‌اند.

شکل ۳

۱۳۵۴a۹۳۲۳c۸e۵۷۸۷.png

VPC مستقل در مقابل VPC اشتراکی

یک شبکه VPC واحد برای بسیاری از موارد استفاده ساده کافی است، زیرا ایجاد، نگهداری و درک آن نسبت به گزینه‌های پیچیده‌تر آسان‌تر است. VPC مشترک ابزاری مؤثر برای سازمان‌هایی با چندین تیم است، زیرا به آنها اجازه می‌دهد تا سادگی معماری یک شبکه VPC واحد را از طریق استفاده از پروژه‌های خدماتی در چندین گروه کاری گسترش دهند.

بهترین شیوه‌های VPC مورد استفاده در آموزش

  • برای دسترسی به نوت‌بوک، Cloud NAT را فعال کنید.
  • هنگام ایجاد زیرشبکه‌ها ، دسترسی خصوصی به گوگل (Private Google Access) را فعال کنید.
  • برای کاهش ترافیک ناخواسته، قوانین فایروال تجویزی ایجاد کنید، مثلاً از 0.0.0.0/0 tcp استفاده نکنید و به جای آن آدرس‌های IP دقیق زیرشبکه(ها) یا میزبان(ها) را تعریف کنید.
  • از سیاست‌های فایروال برای تعمیق دامنه قوانین ورود مانند موقعیت‌های جغرافیایی، فهرست‌های اطلاعات تهدید، نام‌های دامنه منبع و غیره استفاده کنید.

۳. بهترین روش‌های نوت‌بوک

اندازه نمونه‌ها را درست تنظیم کنید

  • موارد استفاده نشده را متوقف و/یا حذف کنید
  • از نمونه اولیه کوچکتر استفاده کنید و با داده‌های نمونه کوچکتر تکرار کنید
  • در صورت نیاز، موارد را مقیاس‌بندی کنید
  • با مجموعه داده‌های کوچک‌تر آزمایش کنید

انواع ماشین آلات مناسب را انتخاب کنید

  • ماشین‌های مجازی با هزینه بهینه
  • استفاده بهتر از منابع سخت‌افزاری برای کاهش هزینه‌ها
  • تا ۳۱٪ صرفه‌جویی در مقایسه با N1
  • صرفه‌جویی اضافی (۲۰ تا ۵۰ درصد) برای تعهدات ۱ یا ۳ ساله
  • افزایش اندازه دستگاه یا اضافه کردن پردازنده‌های گرافیکی (GPU) می‌تواند به عملکرد و غلبه بر خطاهای محدودیت‌های حافظه کمک کند.

خاموش کردن موارد خود را زمان‌بندی کنید

  • خاموش کردن موارد در مواقع بیکاری (فقط هزینه فضای ذخیره‌سازی دیسک را پرداخت کنید)
  • زمان‌بندی ماشین‌های مجازی نوت‌بوک برای خاموش و روشن شدن خودکار در ساعات مشخص

نظارت بر وضعیت سلامت نوت‌بوک

ملاحظات امنیتی

ملاحظات امنیتی توصیه‌شده هنگام ایجاد یک دفترچه یادداشت مدیریت‌شده توسط کاربر به شرح زیر است:

  • گزینه دسترسی نوت‌بوک «فقط برای یک کاربر» را انتخاب کنید. اگر کاربر مشخص‌شده، سازنده نمونه نیست، باید به کاربر مشخص‌شده نقش کاربر حساب سرویس (roles/iam.serviceAccountUser) را در حساب سرویس نمونه اعطا کنید.
  • گزینه‌های زیر را غیرفعال کنید:
  • دسترسی ریشه
  • تبدیل nb
  • دانلود فایل از رابط کاربری JupyterLab
  • به جای اختصاص آدرس IP خارجی به نوت‌بوک مدیریت‌شده توسط کاربر، از Cloud NAT استفاده خواهد شد.
  • گزینه‌های محاسباتی زیر را انتخاب کنید:
  • بوت امن
  • ماژول پلتفرم مجازی قابل اعتماد (vTPM)
  • نظارت بر یکپارچگی

۴. قبل از شروع

پروژه را برای پشتیبانی از آموزش به‌روزرسانی کنید

این آموزش از متغیرها (variables) برای کمک به پیاده‌سازی پیکربندی gcloud در Cloud Shell استفاده می‌کند.

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud config list project
gcloud config set project [your-project-name]
projectid=your-project-name
echo $projectid

۵. راه‌اندازی VPC

ایجاد VPC مستقل

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute networks create securevertex-vpc --project=$projectid --subnet-mode=custom

زیرشبکه نوت‌بوک مدیریت‌شده توسط کاربر را ایجاد کنید

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute networks subnets create securevertex-subnet-a --project=$projectid --range=10.10.10.0/28 --network=securevertex-vpc --region=us-central1 --enable-private-ip-google-access

پیکربندی روتر ابری و NAT

در آموزش دانلود بسته‌های نرم‌افزاری نوت‌بوک از Cloud NAT استفاده شده است، زیرا نمونه نوت‌بوک مدیریت‌شده توسط کاربر، آدرس IP خارجی ندارد. Cloud NAT همچنین قابلیت‌های egress NAT را ارائه می‌دهد، به این معنی که میزبان‌های اینترنتی مجاز به برقراری ارتباط با نوت‌بوک مدیریت‌شده توسط کاربر نیستند و این امر آن را ایمن‌تر می‌کند.

درون Cloud Shell، روتر ابری منطقه‌ای را ایجاد کنید.

gcloud compute routers create cloud-router-us-central1 --network securevertex-vpc --region us-central1

درون Cloud Shell، دروازه‌ی nat ابری منطقه‌ای را ایجاد کنید.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1 --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

۶. یک سطل ذخیره‌سازی ایجاد کنید

سطل‌های ذخیره‌سازی، آپلود/بازیابی فایل امن را ارائه می‌دهند، در این آموزش، فضای ذخیره‌سازی ابری شامل یک اسکریپت پس از راه‌اندازی برای نصب بسته‌های Generative AI در نوت‌بوک‌های مدیریت‌شده توسط کاربر خواهد بود.

یک مخزن ذخیره‌سازی ابری ایجاد کنید و BUCKET_NAME را با یک نام جهانی منحصر به فرد که ترجیح می‌دهید جایگزین کنید.

درون Cloud Shell، یک سطل ذخیره‌سازی منحصر به فرد ایجاد کنید.

gsutil mb -l us-central1 -b on gs://BUCKET_NAME

«BUKET_NAME» را برای مدت زمان آزمایش ذخیره کن

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

۷. یک اسکریپت پس از راه‌اندازی ایجاد کنید

برای فعال کردن دانلود بسته‌های Generative AI، با استفاده از ویرایشگر vi یا nano یک اسکریپت پس از راه‌اندازی در cloud shell ایجاد کنید و آن را با نام poststartup.sh ذخیره کنید.

#! /bin/bash
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Changing dir to /home/jupyter" >> /tmp/notebook_config.log 2>&1
cd /home/jupyter
echo "Cloning generative-ai from github" >> /tmp/notebook_config.log 2>&1
su - jupyter -c "git clone https://github.com/GoogleCloudPlatform/generative-ai.git" >> /tmp/notebook_config.log 2>&1
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Installing python packages" >> /tmp/notebook_config.log 2&1
su - jupyter -c "pip install --upgrade --no-warn-conflicts --no-warn-script-location --user \
     google-cloud-bigquery \
     google-cloud-pipeline-components \
     google-cloud-aiplatform \
     seaborn \
     kfp" >> /tmp/notebook_config.log 2>&1

مثال:

vpc_admin@cloudshell$ more poststartup.sh 
#! /bin/bash
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Changing dir to /home/jupyter" >> /tmp/notebook_config.log 2>&1
cd /home/jupyter
echo "Cloning generative-ai from github" >> /tmp/notebook_config.log 2>&1
su - jupyter -c "git clone https://github.com/GoogleCloudPlatform/generative-ai.git" >> /tmp/notebook_config.log 2>&1
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Installing python packages" >> /tmp/notebook_config.log 2&1
su - jupyter -c "pip install --upgrade --no-warn-conflicts --no-warn-script-location --user \
     google-cloud-bigquery \
     google-cloud-pipeline-components \
     google-cloud-aiplatform \
     seaborn \
     kfp" >> /tmp/notebook_config.log 2>&1

اسکریپت پس از راه‌اندازی را با استفاده از gsutil از پوسته ابری به مخزن ذخیره‌سازی خود آپلود کنید.

gsutil cp poststartup.sh gs://$BUCKET_NAME

۸. یک حساب کاربری سرویس ایجاد کنید

برای ارائه سطح مناسبی از کنترل بر روی نوت‌بوک مدیریت‌شده توسط کاربر، به یک حساب کاربری سرویس نیاز است. پس از ایجاد، مجوزهای حساب کاربری سرویس را می‌توان بر اساس الزامات تجاری تغییر داد. در این آموزش، قوانین زیر بر روی حساب کاربری سرویس اعمال خواهد شد:

قبل از ادامه، باید API حساب سرویس (Service Account API) را .

در داخل Cloud Shell، حساب کاربری سرویس را ایجاد کنید.

gcloud iam service-accounts create user-managed-notebook-sa \
    --display-name="user-managed-notebook-sa"

درون Cloud Shell، حساب کاربری سرویس را با نقش Storage Object Viewer به‌روزرسانی کنید.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.objectViewer"

درون Cloud Shell، حساب کاربری سرویس را با نقش Vertex AI User به‌روزرسانی کنید.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

در داخل Cloud Shell، حساب سرویس را فهرست کنید و آدرس ایمیلی را که هنگام ایجاد دفترچه مدیریت‌شده توسط کاربر استفاده خواهد شد، یادداشت کنید.

gcloud iam service-accounts list

مثال:

$ gcloud iam service-accounts list
DISPLAY NAME: user-managed-notebook-sa
EMAIL: user-managed-notebook-sa@my-project-id.iam.gserviceaccount.com
DISABLED: False

۹. یک دفترچه یادداشت امن با مدیریت کاربر ایجاد کنید

یک نمونه نوت‌بوک مدیریت‌شده توسط کاربر، یک نمونه ماشین مجازی یادگیری عمیق است که جدیدترین کتابخانه‌های یادگیری ماشین و علوم داده از پیش نصب شده دارد. می‌توانید به صورت اختیاری از پردازنده‌های گرافیکی انویدیا برای شتاب‌دهی سخت‌افزاری استفاده کنید.

فعال کردن APIهای مصرف‌کننده

API نوت‌بوک‌ها

ایجاد دفترچه یادداشت مدیریت‌شده توسط کاربر

  1. میز کار گوتو
  2. دفترچه‌های مدیریت‌شده توسط کاربر و سپس ایجاد دفترچه را انتخاب کنید. صفحه ایجاد دفترچه مدیریت‌شده توسط کاربر باز می‌شود.
  3. اگر یک نوت‌بوک موجود مستقر شده است، سپس نوت‌بوک‌های مدیریت‌شده توسط کاربر → نوت‌بوک جدید → سفارشی‌سازی را انتخاب کنید.
  4. در صفحه ایجاد دفترچه یادداشت مدیریت‌شده توسط کاربر، در بخش جزئیات، اطلاعات زیر را برای نمونه جدید خود ارائه دهید:
  • نام: برای نمونه جدید خود نامی وارد کنید.
  • منطقه و ناحیه: در این آموزش از ناحیه us-central1 و ناحیه us-central1-a استفاده خواهد شد.

ادامه را انتخاب کنید

  1. در بخش محیط زیست ، موارد زیر را ارائه دهید:
  • سیستم عامل: سیستم عاملی که می‌خواهید استفاده کنید را انتخاب کنید.
  • محیطی را که می‌خواهید استفاده کنید انتخاب کنید.
  • نسخه: نسخه‌ای را که می‌خواهید استفاده کنید انتخاب کنید.
  • اسکریپت پس از راه‌اندازی ( اختیاری، از اسکریپت هوش مصنوعی مولد که قبلاً ایجاد شده است استفاده کنید) برای انتخاب اسکریپتی که پس از شروع نمونه اجرا می‌شود، گزینه Browse را انتخاب کنید.
  • فراداده: اختیاری: کلیدهای فراداده سفارشی را برای نمونه ارائه دهید.

ادامه را انتخاب کنید

  1. در بخش نوع ماشین، موارد زیر را وارد کنید:
  • نوع دستگاه: تعداد پردازنده‌ها و میزان رم را برای نمونه جدید خود انتخاب کنید. Vertex AI Workbench تخمین هزینه ماهانه را برای هر نوع دستگاهی که انتخاب می‌کنید، ارائه می‌دهد.
  • نوع پردازنده گرافیکی (GPU): نوع پردازنده گرافیکی (GPU) و تعداد پردازنده‌های گرافیکی (GPU) را برای نمونه جدید خود انتخاب کنید. برای اطلاعات بیشتر در مورد پردازنده‌های گرافیکی مختلف، به بخش پردازنده‌های گرافیکی (GPU) در Compute Engine مراجعه کنید.
  • کادر انتخاب «نصب خودکار درایور پردازنده گرافیکی انویدیا برای من» را علامت بزنید.

ماشین مجازی محافظت‌شده

  • بوت امن را روشن کنید
  • فعال کردن vTPM
  • نظارت بر یکپارچگی را روشن کنید

ادامه را انتخاب کنید

  1. در بخش دیسک‌ها، موارد زیر را وارد کنید:
  • دیسک‌ها: اختیاری: برای تغییر تنظیمات پیش‌فرض بوت یا دیسک داده، نوع دیسک بوت، اندازه دیسک بوت به گیگابایت، نوع دیسک داده و اندازه دیسک داده به گیگابایت مورد نظر خود را انتخاب کنید. برای اطلاعات بیشتر در مورد انواع دیسک، به گزینه‌های ذخیره‌سازی مراجعه کنید.
  • حذف به سطل زباله: اختیاری: برای استفاده از رفتار پیش‌فرض سیستم عامل در حذف زباله، این کادر انتخاب را انتخاب کنید. اگر از رفتار پیش‌فرض حذف زباله استفاده کنید، فایل‌هایی که با استفاده از رابط کاربری JupyterLab حذف شده‌اند قابل بازیابی هستند، اما این فایل‌های حذف شده از فضای دیسک استفاده می‌کنند.
  • پشتیبان‌گیری: اختیاری: برای همگام‌سازی مکان ذخیره‌سازی ابری با دیسک داده نمونه خود، گزینه مرور را انتخاب کرده و مکان ذخیره‌سازی ابری را مشخص کنید. برای کسب اطلاعات در مورد هزینه‌های ذخیره‌سازی، به قیمت‌گذاری ذخیره‌سازی ابری مراجعه کنید.
  • رمزگذاری: کلید رمزگذاری تحت مدیریت گوگل

ادامه را انتخاب کنید

  1. در بخش شبکه، موارد زیر را ارائه دهید:
  • شبکه‌سازی: یکی از گزینه‌های Networks in this project یا Networks shared with me را انتخاب کنید. اگر در پروژه میزبان از یک Shared VPC استفاده می‌کنید، باید نقش Compute Network User (roles/compute.networkUser) را نیز به Notebooks Service Agent از پروژه سرویس اعطا کنید.
  • در فیلد Network، شبکه مورد نظر خود را انتخاب کنید. در این آموزش از شبکه securevertex-vpc استفاده شده است. می‌توانید یک شبکه VPC را انتخاب کنید، البته تا زمانی که شبکه Private Google Access را فعال کرده باشد یا بتواند به اینترنت دسترسی داشته باشد. در فیلد Subnetwork، زیرشبکه مورد نظر خود را انتخاب کنید، در این آموزش از subnetwork securevertex-subnet-a استفاده شده است.
  • لغو انتخاب اختصاص آدرس IP خارجی
  • انتخاب اجازه دسترسی به پروکسی

ادامه را انتخاب کنید

81bb7dbe31fbf587.png

  1. در بخش IAM و امنیت، موارد زیر را ارائه دهید:
  • گزینه Single user را انتخاب کنید و سپس در فیلد ایمیل کاربر، حساب کاربری که می‌خواهید به آن دسترسی بدهید را وارد کنید. اگر کاربر مشخص شده سازنده نمونه نیست، باید به کاربر مشخص شده نقش Service Account User (roles/iam.serviceAccountUser) را در حساب سرویس نمونه اعطا کنید.
  • لغو انتخاب استفاده از حساب سرویس پیش‌فرض Compute Engine در ماشین مجازی برای فراخوانی APIهای Google Cloud
  • آدرس ایمیل حساب سرویس تازه ایجاد شده را وارد کنید، به عنوان مثال: user-managed-notebook-sa@my-project-id.iam.gserviceaccount.com

گزینه‌های امنیتی

  • گزینه فعال کردن دسترسی روت به نمونه را از حالت انتخاب خارج کنید.
  • غیرفعال کردن فعال کردن nbconvert
  • لغو انتخاب فعال کردن دانلود فایل از رابط کاربری JupyterLab
  • فعال کردن ترمینال (لغو انتخاب برای محیط‌های عملیاتی)

ادامه را انتخاب کنید

e19f3cd05a2c1b7f.png

  1. در بخش سلامت سیستم، موارد زیر را ارائه دهید

ارتقاء محیط و سلامت سیستم

  • کادر فعال کردن ارتقاء خودکار محیط را علامت بزنید.
  • انتخاب کنید که آیا می‌خواهید نوت‌بوک خود را هفتگی یا ماهانه ارتقا دهید.

در بخش سلامت و گزارش‌دهی سیستم، کادرهای انتخاب زیر را علامت بزنید یا علامت نزنید:

  • فعال کردن گزارش سلامت سیستم
  • گزارش معیارهای سفارشی به Cloud Monitoring
  • نصب عامل نظارت بر ابر

ایجاد را انتخاب کنید.

۱۰. اعتبارسنجی

Vertex AI Workbench بر اساس ویژگی‌های مشخص‌شده شما، یک نمونه از دفترچه یادداشت‌های مدیریت‌شده توسط کاربر ایجاد می‌کند و به‌طور خودکار آن را اجرا می‌کند. وقتی نمونه آماده استفاده شد، Vertex AI Workbench یک لینک Open JupyterLab را فعال می‌کند که به کاربر نهایی اجازه دسترسی به دفترچه یادداشت را می‌دهد.

۱۱. مشاهده‌پذیری

نظارت بر معیارهای سیستم و برنامه از طریق مانیتورینگ

برای نوت‌بوک‌های مدیریت‌شده توسط کاربر که قابلیت Monitoring روی آن‌ها نصب شده است ، می‌توانید با استفاده از کنسول Google Cloud، معیارهای سیستم و برنامه خود را رصد کنید:

  1. در کنسول گوگل کلود، به صفحه نوت‌بوک‌های مدیریت‌شده توسط کاربر بروید.
  2. روی نام نمونه‌ای که می‌خواهید معیارهای سیستم و برنامه‌ی آن را مشاهده کنید، کلیک کنید.
  3. در صفحه جزئیات نوت‌بوک ، روی برگه نظارت (Monitoring) کلیک کنید. معیارهای سیستم و برنامه را برای نمونه خود بررسی کنید.

۱۲. یک برنامه‌ی یادداشت ایجاد کنید

برنامه‌های زمان‌بندی نمونه به شما امکان می‌دهند نمونه‌های ماشین مجازی (VM) را به طور خودکار شروع و متوقف کنید. استفاده از برنامه‌های زمان‌بندی نمونه برای خودکارسازی استقرار نمونه‌های ماشین مجازی شما می‌تواند به شما در بهینه‌سازی هزینه‌ها و مدیریت کارآمدتر نمونه‌های ماشین مجازی کمک کند. می‌توانید از برنامه‌های زمان‌بندی نمونه برای بارهای کاری تکراری و یکباره استفاده کنید. به عنوان مثال، از برنامه‌های زمان‌بندی نمونه برای اجرای نمونه‌های ماشین مجازی فقط در ساعات کاری یا برای فراهم کردن ظرفیت برای یک رویداد یکباره استفاده کنید.

برای استفاده از زمان‌بندی‌های نمونه، یک سیاست منابع ایجاد کنید که جزئیات رفتار شروع و توقف را شرح دهد و سپس این سیاست را به یک یا چند نمونه ماشین مجازی متصل کنید.

این آموزش به شما نشان می‌دهد که چگونه یک برنامه زمانی ایجاد کنید که نوت‌بوک شما را ساعت ۷ صبح روشن و ساعت ۶ بعد از ظهر خاموش کند.

برای ایجاد زمان‌بندی نمونه، به مجوزهای compute.instances.start و compute.instances.stop نیاز دارید، بنابراین توصیه می‌شود یک نقش سفارشی ایجاد کنید که توسط مدیر سیستم به شما اعطا شده باشد.

پس از ایجاد، نقش سفارشی به حساب سرویس پیش‌فرض Compute Engine در پروژه شما اختصاص داده می‌شود، که به برنامه نمونه اجازه می‌دهد نوت‌بوک شما را شروع و متوقف کند.

ایجاد نقش سفارشی

درون Cloud Shell، یک نقش سفارشی به نام VmScheduler ایجاد کنید و مجوزهای لازم را به آن اضافه کنید.

gcloud iam roles create Vm_Scheduler --project=$projectid \
    --title=vm-scheduler-notebooks \
    --permissions="compute.instances.start,compute.instances.stop" --stage=ga

نقش سفارشی از Cloud Shell را شرح دهید.

gcloud iam roles describe Vm_Scheduler --project=$projectid

مثال:

$ gcloud iam roles describe Vm_Scheduler --project=$projectid
etag: BwX991B0_kg=
includedPermissions:
- compute.instances.start
- compute.instances.stop
name: projects/$projectid/roles/Vm_Scheduler
stage: GA
title: vm-scheduler-notebooks

حساب سرویس پیش‌فرض را به‌روزرسانی کنید

در بخش زیر، حساب سرویس پیش‌فرض را که شامل فرمت زیر است، شناسایی و به‌روزرسانی خواهید کرد: PROJECT_NUMBER-compute@developer.gserviceaccount.com

در Cloud Shell، شماره پروژه فعلی را مشخص کنید.

gcloud projects list --filter=$projectid

در Cloud Shell، شماره پروژه را به عنوان یک متغیر ذخیره کنید.

project_number=your_project_number
echo $project_number

در Cloud Shell، حساب کاربری پیش‌فرض سرویس محاسباتی را با نقش سفارشی VM_Scheduler به‌روزرسانی کنید.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:$project_number-compute@developer.gserviceaccount.com" --role="projects/$projectid/roles/Vm_Scheduler"

برنامه نمونه را ایجاد کنید

در Cloud Shell، برنامه شروع و توقف را ایجاد کنید.

gcloud compute resource-policies create instance-schedule optimize-notebooks \
    --region=us-central1 \
    --vm-start-schedule='0 7 * * *' \
    --vm-stop-schedule='0 18 * * *' \
        --timezone=America/Chicago

در Cloud Shell، نام دفترچه یادداشت خود را ذخیره کنید.

gcloud compute instances list
notebook_vm=your_notebookvm_name
echo $notebook_vm

شما می‌توانید یک برنامه زمانی نمونه را به هر نمونه ماشین مجازی موجودی که در همان منطقه برنامه زمانی نمونه قرار دارد، پیوست کنید.

در Cloud Shell، برنامه را با دفترچه یادداشت خود مرتبط کنید.

gcloud compute instances add-resource-policies $notebook_vm \
--resource-policies=optimize-notebooks \
--zone=us-central1-a

۱۳. تمیز کردن

دفترچه یادداشت مدیریت‌شده توسط کاربر را از کنسول حذف کنید، به Vertex AI → Workbench بروید، دفترچه یادداشت را انتخاب و حذف کنید.

از Cloud Shell، اجزای VPC را حذف کنید.

gcloud compute routers delete cloud-router-us-central1 --region=us-central1 --quiet

gcloud compute routers nats delete cloud-nat-us-central1 --region=us-central1 --router=cloud-router-us-central1 --quiet

gcloud compute instances remove-resource-policies $notebook_vm \
--resource-policies=optimize-notebooks \
--zone=us-central1-a --quiet

gcloud compute resource-policies delete optimize-notebooks --region=us-central1 --quiet

gcloud compute instances delete $notebook_vm --zone=us-central1-a --quiet

gcloud compute networks subnets delete securevertex-subnet-a --region=us-central1 --quiet 

gcloud iam service-accounts delete user-managed-notebook-sa@$projectid.iam.gserviceaccount.com --quiet 

gcloud projects remove-iam-policy-binding $projectid --member="serviceAccount:$project_number-compute@developer.gserviceaccount.com" --role="projects/$projectid/roles/Vm_Scheduler"

gcloud iam roles delete Vm_Scheduler --project=$projectid

gcloud compute networks delete securevertex-vpc --quiet 

۱۴. تبریک

آفرین! شما با موفقیت یک نوت‌بوک امنِ مدیریت‌شده توسط کاربر را با ایجاد یک VPC مستقل سفارشی با استفاده از بهترین شیوه‌های مقاوم‌سازی امنیتی برای نوت‌بوک‌های مدیریت‌شده پیکربندی و اعتبارسنجی کردید و یک برنامه‌ی زمانی نمونه برای بهینه‌سازی هزینه‌ها پیاده‌سازی نمودید.

بعدش چی؟

به برخی از این آموزش‌ها نگاهی بیندازید...

مطالعه بیشتر و ویدیوها

اسناد مرجع