این پلتفرم مستلزم آن است که زیرساخت را در پروژه Google Cloud خود مستقر کنید.
دریافت کد منبع
کد منبع پلتفرم شبیهسازی تلهمتری ابری در sdv.googlesource.com میزبانی میشود که نیازمند احراز هویت مطابق با آنچه در مخازن ابزار اکسس توضیح داده شده است، میباشد.
برای دسترسی به کد منبع، مخزن شبیهسازی تلهمتری ابری را کلون کنید:
git clone https://sdv.googlesource.com/external/cloud_telemetry_simulation-external
پیشنیازها
برای استقرار پلتفرم، اطمینان حاصل کنید که پیشنیازهای زیر را برآورده میکنید:
- یک پروژه گوگل کلود با قابلیت پرداخت صورتحساب .
- امنیت نسخه آزمایشی وب: اگر نسخه آزمایشی وب را پیادهسازی میکنید، باید یک شناسه کلاینت OAuth 2.0 را در Google Cloud APIs & Services > Credentials پیکربندی کنید تا برنامه App Engine را ایمن کرده و دسترسی به حسابهای گوگل مجاز را محدود کنید.
- مصنوعات ساخت وسیله نقلیه تعریفشده توسط نرمافزار (SDV): شما باید مصنوعات تصویر SDV کامپایلشده خودتان را داشته باشید. این مصنوعات در این مخزن ارائه نشدهاند.
-
cvd-host_package.tar.gz -
sdv_core_cf-img-<version>.zip
-
- مجوزها: حساب کاربری یا سرویسی که Terraform را اجرا میکند باید مجوزهای کافی برای ایجاد منابع تعریفشده در پیکربندی (مثلاً ویرایشگر پروژه یا یک نقش سفارشی با مجوزهایی برای موتور محاسبات، توابع ابری، مدیریت هویت و دسترسی، ذخیرهسازی ابری و سایر سرویسهای لازم) را داشته باشد.
- ابزارها:
- رابط خط فرمان گوگل کلود (
gcloud CLI) - Terraform (نسخه استفاده شده در مخزن)
- داکر
- Go (نسخه مورد استفاده برای توابع هماهنگکننده در مخزن)
- رابط خط فرمان گوگل کلود (
زیرساخت ابری گوگل را مستقر کنید
استقرار پلتفرم شبیهسازی شامل دو مرحله اصلی است: استفاده از Terraform برای استقرار زیرساخت اصلی در Google Cloud، و ساخت و ارسال تصویر Docker عامل شبیهسازی به Artifact Registry. این بخش شما را در استقرار زیرساخت راهنمایی میکند.
برای بهروزرسانی قطعه کدهای این صفحه، مقادیر متغیرهای زیر را وارد کنید:
پیکربندی بکاند Terraform: فایلی با نام
environments/ ENVIRONMENT /backend.hclایجاد کنید تا مشخص کنید Terraform فایل وضعیت خود را در فضای ذخیرهسازی ابری کجا ذخیره میکند.# environments/ENVIRONMENT/backend.hcl bucket = "TF_BUCKET_NAME" prefix = "sdv-telemetry-simulation"پیکربندی متغیرهای پروژه: فایلی با نام
environments/ENVIRONMENT/variables.tfvarsحاوی جزئیات پروژه خود ایجاد کنید.# environments/ENVIRONMENT/variables.tfvars project_id = "PROJECT_ID" default_region = "REGION" default_zone = "ZONE" agent_docker_image = "REGION-docker.pkg.dev/PROJECT_ID/sim-agents/simulation-agent" # Security: Map logical tags to SHA256 digests # Security: Map logical tags to SHA256 digests (optional) image_fingerprints = { "latest" = "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "stable" = "sha256:88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589" } # Parallel Execution Limit (Default: 5) max_concurrent_simulations = 5اعمال پیکربندی Terraform: به دایرکتوری
infrastructureبروید، سپس پیکربندی را مقداردهی اولیه و اعمال کنید:# Initialize Terraform with your backend configuration terraform init -backend-config=environments/ENVIRONMENT/backend.hcl # (Optional) Preview the changes terraform plan --var-file=environments/ENVIRONMENT/variables.tfvars # Apply the changes to deploy the infrastructure terraform apply --var-file=environments/ENVIRONMENT/variables.tfvars
تصویر عامل شبیهسازی را بسازید و منتشر کنید
عامل شبیهسازی، شبیهسازی را روی ماشین مجازی Compute Engine (VM) اجرا میکند. شما آن را با مصنوعات SDV خود میسازید و به Artifact Registry ارسال میکنید.
برای ساخت و ارسال تصویر عامل شبیهسازی:
قرار دادن مصنوعات: فایلهای
cvd-host_package.tar.gzوsdv_core_cf-img-<version>.zipخود را در دایرکتوریsimulation-agent/sdv-image-resources/کپی کنید.ساخت و انتشار: به پوشه
simulation-agentبروید، سپس تصویر را بسازید و منتشر کنید. مسیر تصویر را با مسیری که در فایلvariables.tfvarsپیکربندی کردهاید، جایگزین کنید.# Example using the path from the .tfvars example above export AGENT_IMAGE="REGION-docker.pkg.dev/PROJECT_ID/sim-agents/simulation-agent:latest" # Build the image docker build -t $AGENT_IMAGE . # Push the image to Artifact Registry docker push $AGENT_IMAGEبهروزرسانی اثر انگشتها: پس از وارد کردن یک تصویر جدید، ممکن است لازم باشد خلاصه SHA256 آن را دریافت کرده و نقشه
image_fingerprintsرا در فایلvariables.tfvarsبهروزرسانی کنید، سپسterraform applyدوباره اجرا کنید.# Get the digest using gcloud gcloud container images describe $AGENT_IMAGE --format="value(image_summary.digest)"پلتفرم شبیهسازی تلهمتری ابری شما مستقر شده و آماده پذیرش درخواستهای شبیهسازی است.
عملیات و عیبیابی
این راهکار به شما امکان میدهد از ابزارهای داخلی Google Cloud برای مشاهدهپذیری استفاده کنید. این راهکار فقط به ازای هر درخواست و در طول اجرای شبیهسازی، منابع محاسباتی را مصرف میکند.
مدیریت هزینه
این معماری به گونهای طراحی شده است که با استفاده از منابع بدون سرور و زودگذر، مقرون به صرفه باشد. هزینهها عمدتاً توسط موارد زیر تعیین میشوند:
- موتور محاسباتی: هزینه زمانی که ماشینهای مجازی شبیهسازی در حال اجرا هستند، محاسبه میشود. استفاده از ماشینهای مجازی نقطهای میتواند این هزینه را به میزان قابل توجهی کاهش دهد.
- توابع ابری: به ازای هر بار فراخوانی، صورتحساب دریافت میشود.
- فضای ذخیرهسازی ابری: برای ذخیره فایلها و گزارشهای ورودی و خروجی هزینه دریافت میشود.
- فایراستور: هزینه خواندن، نوشتن و ذخیرهسازی دادهها را دریافت میکند.
مشاهدهپذیری
همه اجزا با مجموعه عملیات گوگل کلود یکپارچه شدهاند.
- کاوشگر لاگها: این ابزار اصلی شما برای عیبیابی است. میتوانید لاگها را بر اساس منبع فیلتر کنید:
- توابع ابری: لاگهای مربوط به توابع
receive-requestیاschedule-simulationرا بررسی کنید تا مشکلات مربوط به هماهنگی را اشکالزدایی کنید. - موتور محاسبه: گزارشهای نمونه ماشین مجازی را برای مشکلات راهاندازی یا خاموش شدن بررسی کنید.
- عامل شبیهسازی: عاملی که درون کانتینر داکر اجرا میشود، گزارشهای خود را به Logs Explorer ارسال میکند. برای مشاهده جزئیات پیشرفت شبیهسازی، موارد را بر اساس نام نمونه ماشین مجازی فیلتر کنید.
- توابع ابری: لاگهای مربوط به توابع
- فضای ذخیرهسازی ابری: برای شبیهسازیهای تکمیلشده، فایلهای
logcatوbugreportاز دستگاه Cuttlefish در دایرکتوری خروجی شبیهسازی در فضای ذخیرهسازی ابری آپلود میشوند و بینش عمیقی از رفتار محیط اندروید ارائه میدهند.
حسابهای خدماتی
Terraform چندین حساب کاربری سرویس ایجاد میکند تا محیطی امن و با حداقل دسترسی را فراهم کند. حسابهای کاربری سرویس کلیدی عبارتند از:
هویت اجرا (VM):
-
simulation-agent:- پیوست شده به: ماشینهای مجازی موتور محاسباتی که شبیهسازی را اجرا میکنند.
- نقش: به ماشین مجازی اجازه میدهد تا نتایج را آپلود کند و تکمیل را اعلام کند.
- مجوزها:
-
roles/storage.objectUser: ورودیها را میخواند و مصنوعات (لاگها، گزارشها) را در فضای ذخیرهسازی ابری بارگذاری میکند. -
roles/run.invoker: تابعfinish-simulationرا احراز هویت و فراخوانی میکند.
-
-
هویتهای ارکستراسیون (عملکردها):
-
read-simulations-function:- پیوست شده به: تابع ابریِ
read-simulation. - مجوزها:
-
roles/datastore.user: رکوردهای شبیهسازی و اجرای ماشین مجازی را در Firestore میخواند.
-
- پیوست شده به: تابع ابریِ
receive-request-function:- پیوست شده به: تابع ابری
receive-request. - مجوزها:
-
roles/datastore.user: رکوردهای شبیهسازیPENDINGجدید را در Firestore ایجاد میکند. -
roles/storage.objectUser: وجود فایلهای ورودی در فضای ذخیرهسازی ابری را تأیید میکند.
-
- پیوست شده به: تابع ابری
scheduler-function:- پیوست شده به: تابع ابری
schedule-simulation. مجوزها:
- `roles/pubsub.subscriber`: Pulls messages from the simulation queue. - `roles/datastore.user`: Performs atomic reads and writes to the `running-vms` counter. - `roles/compute.instanceAdmin.v1`: Creates and starts Compute Engine VMs. - `roles/iam.serviceAccountUser`: This permission allows this function to assign the `simulation-agent` service account to the VMs it creates.
- پیوست شده به: تابع ابری
simulation-finisher-function:- پیوست شده به: تابع ابری
finish-simulation. - مجوزها: -
roles/compute.instanceAdmin.v1: ماشین مجازی را پس از اتمام اجرا حذف میکند. -roles/datastore.user: وضعیت شبیهسازی را بهCOMPLETEDیاFAILEDبهروزرسانی میکند.
- پیوست شده به: تابع ابری
delete-simulation-function:- پیوست شده به: تابع ابری
delete-simulation. - مجوزها: -
roles/compute.instanceAdmin.v1: ماشینهای مجازی را در حین لغو، به اجبار حذف میکند. -roles/datastore.user: وضعیت کارهای لغو شده را بهروزرسانی میکند.
- پیوست شده به: تابع ابری
-
هویتهای محرک:
scheduler-trigger:- مورد استفاده توسط: Eventarc (رویدادها) و محرکهای زمانبندی ابری.
- مجوزها:
roles/eventarc.eventReceiverوroles/run.invokerبرای اجرای توابع هماهنگکننده.
cleanup-scheduler:- استفاده شده توسط: زمانبندی ابری (Cloud Scheduler) برای پاکسازی، کرون جاب (cron job) انجام میدهد.
- مجوزها:
roles/run.invokerبرای راهاندازی منطق پاکسازی.
مدیریت سیاستهای مدیریت هویت و دسترسی برای این حسابهای خدماتی، روش اصلی برای کنترل دسترسی و مجوزها در سیستم است.