پلاتفرم «شبیهسازی دورسنجی ابری» از شما میخواهد زیرساخت را در پروژه Google Cloud خودتان مستقر کنید.
دسترسی به کد منبع
کد منبع پلاتفرم «شبیهسازی دورسنجی ابری» در GitHub، در aaos-sdv-telemetry-simulator میزبانی میشود.
پیشنیازها
برای استقرار پلاتفرم، مطمئن شوید که پیشنیازهای زیر را دارید:
- پروژه Google Cloud با صورتحساب فعال.
- امنیت نسخه نمایشی وب: اگر «نسخه نمایشی وب» را مستقر میکنید، باید شناسه مشتری OAuth 2.0 را در Google Cloud APIs & Services > Credentials پیکربندی کنید تا برنامه App Engine را ایمن کنید و دسترسی را به «حسابهای Google» مجاز محدود کنید.
- آرتیفکتهای ساخت «خودرو نرمافزارمحور» (SDV): باید آرتیفکتهای تصویر SDV کامپایلشده خودتان را داشته باشید. این موارد در این مخزن ارائه نشده است.
cvd-host_package.tar.gzsdv_core_cf-img-<version>.zip
- اجازهها: حساب سرویس یا کاربر اجراکننده Terraform باید اجازههای کافی برای ایجاد منابع تعریفشده در پیکربندی را داشته باشد (برای مثال، ویرایشگر پروژه، یا نقش سفارشی با اجازههایی برای Compute Engine، Cloud Functions، «مدیریت هویت و دسترسیها»، Cloud Storage، و دیگر سرویسهای ضروری).
- ابزارها:
- Google Cloud CLI (
gcloud CLI) - Terraform (نسخه استفادهشده در مخزن)
- Docker
- Go (نسخه استفادهشده برای توابع هماهنگکننده در مخزن)
- Google Cloud CLI (
مستقر کردن زیرساخت Google Cloud
استقرار پلتفرم شبیهسازی شامل دو مرحله اصلی است: استفاده از Terraform برای استقرار زیرساخت اصلی در Google Cloud، و ساختن و انتقال تصویر Docker عامل شبیهسازی به Artifact Registry. این بخش شما را در پیادهسازی زیرساخت راهنمایی میکند.
مقادیر متغیرهای زیر را وارد کنید تا تکهکدهای این صفحه بهروزرسانی شود:
پیکربندی Terraform backend: فایلی ایجاد کنید تا مشخص کند Terraform فایل وضعیت خود را در کجا در Cloud Storage ذخیره میکند. فایل را بااستفاده از این نحو نامگذاری کنید:
environments/ENVIRONMENT/backend.hcl# 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) supported_agent_builds = { "latest" = "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "stable" = "sha256:88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589" } # Parallel Execution Limit (Default: 5) max_vm_count = 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
ساختن و ارسال تصویر عامل شبیهسازی
عامل شبیهسازی، شبیهسازی را در ماشین مجازی (VM) در Compute Engine اجرا میکند. آن را با مصنوعات 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 آن را دریافت کنید و نقشه
supported_agent_buildsرا در فایلvariables.tfvarsبهروز کنید، سپسterraform applyرا دوباره اجرا کنید.# Get the digest using gcloud gcloud artifacts docker images describe $AGENT_IMAGE --format="value(image_summary.digest)"پلاتفرم «شبیهسازی دورسنجی ابری» شما مستقر شده و آماده پذیرش درخواستهای شبیهسازی است.
عملیات و عیبیابی
این راهکار به شما امکان میدهد از ابزارهای داخلی Google Cloud برای مشاهدهپذیری استفاده کنید. این فقط بهازای هر درخواست و درطول اجرای شبیهسازی، منابع محاسباتی مصرف میکند.
مدیریت هزینه
این معماری بااستفاده از منابع بدون سرور و موقت بهگونهای طراحی شده است که مقرونبهصرفه باشد. هزینهها عمدتاً تحتتأثیر موارد زیر است:
- Compute Engine: برای مدت زمانی که ماشینهای مجازی شبیهسازی درحال اجرا هستند صورتحساب صادر میشود. استفاده از Spot VMs میتواند این هزینه را بهطور قابلتوجهی کاهش دهد.
- توابع ابری: صورتحساب براساس فراخوانی صادر میشود.
- Cloud Storage: برای ذخیره کردن فایلهای ورودی و خروجی و گزارشها صورتحساب صادر میشود.
- Firestore: برای خواندن، نوشتن، و ذخیرهسازی داده صورتحساب صادر میشود.
مشاهدهپذیری
همه مؤلفهها با مجموعه عملیات Google Cloud ادغام شدهاند.
- کاوشگر گزارشها: این ابزار اصلی شما برای عیبیابی است. میتوانید
گزارشها را براساس منبع فیلتر کنید:
- توابع ابری: گزارشهای مربوط به توابع
receive-requestیاschedule-simulationرا برای اشکالزدایی مشکلات هماهنگسازی بررسی کنید. - Compute Engine: گزارشهای نمونه VM را برای مشکلات راهاندازی یا خاموش شدن بررسی کنید.
- عامل شبیهسازی: عاملی که در محفظه Docker اجرا میشود گزارشهایش را به «کاوشگر گزارشها» بازارسال میکند. براساس نام نمونه VM فیلتر کنید تا پیشرفت شبیهسازی را با جزئیات ببینید.
- توابع ابری: گزارشهای مربوط به توابع
- فضای ذخیرهسازی ابری: برای شبیهسازیهای تکمیلشده، فایلهای
logcatوbugreportاز دستگاه Cuttlefish به دایرکتوری خروجی شبیهسازی در باکت «فضای ذخیرهسازی ابری» بارگذاری میشوند و اطلاعات عمیقی درباره رفتار محیط Android ارائه میدهند.
حسابهای سرویس
Terraform چندین حساب خدمات ایجاد میکند تا محیطی امن با کمترین امتیاز را فعال کند. حسابهای سرویس اصلی عبارتاند از:
هویت اجرا (ماشین مجازی):
-
simulation-agent:- متصل به: ماشینهای مجازی Compute Engine که شبیهسازی را اجرا میکنند.
- نقش: به ماشین مجازی اجازه میدهد نتایج را بارگذاری کند و تکمیل را اعلام کند.
- اجازهها:
roles/storage.objectUser: ورودیها را میخواند و مصنوعات (گزارشها، گزارشهای خرابی) را در Cloud Storage بارگذاری میکند.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: وجود فایلهای ورودی را در Cloud Storage تأیید میکند.
-
- پیوستشده به: «تابع ابری»
scheduler-function:- پیوستشده به: «تابع ابری»
schedule-simulation. - اجازهها:
roles/pubsub.subscriber: پیامها را از صف شبیهسازی بیرون میکشد.roles/datastore.user: خواندن و نوشتن اتمی را درrunning-vmsشمارنده انجام میدهد.roles/compute.instanceAdmin.v1: ماشینهای مجازی Compute Engine را ایجاد و راهاندازی میکند.roles/iam.serviceAccountUser: به این تابع اجازه میدهد حساب سرویسsimulation-agentرا به ماشینهای مجازیای که ایجاد میکند اختصاص دهد.
- پیوستشده به: «تابع ابری»
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 (رویدادها) و Cloud Scheduler.
- اجازهها:
roles/eventarc.eventReceiverوroles/run.invokerبرای راهاندازی توابع هماهنگساز.
cleanup-scheduler:- استفادهشده توسط: کار cron در Cloud Scheduler برای پاکسازی.
- اجازهها:
roles/run.invokerبرای راهاندازی منطق پاکسازی.
مدیریت خطمشیهای «مدیریت هویت و دسترسیها» برای این حسابهای سرویس روش اصلی برای کنترل دسترسی و اجازهها در سیستم است.