گسترش

این صفحه نحوه‌ی پیاده‌سازی مولد پیکربندی معیارها (MCG) را شرح می‌دهد.

دسترسی به کد منبع

کد منبع MCG در گیت‌هاب، در aaos-sdv-telemetry-mcg میزبانی می‌شود. می‌توانید MCG را به صورت محلی برای توسعه و آزمایش اجرا کنید، یا آن را برای دسترسی تیمی در یک محیط ابری مستقر کنید.

اجرا به صورت محلی

برای اجرای MCG از دایرکتوری منبع آن برای توسعه و آزمایش محلی، از Bazel استفاده کنید. Bazel باید نصب شود. هنگام اجرای محلی، باید با تنظیم MCG_LOCALCACHE=true قابلیت ذخیره‌سازی درون حافظه‌ای را فعال کنید. این قابلیت از ذخیره‌سازی کاتالوگ‌های سیگنال خودرو پشتیبانی می‌کند. برای ساخت و اجرای سرویس به صورت محلی، از دستورات زیر در دایرکتوری منبع استفاده کنید:

# Build and run on default port 8005
MCG_LOCALCACHE=true bazel run //:mcg

# Or, to change the port, use:
MCG_LOCALCACHE=true bazel run //:mcg -- --listen :9000

استقرار در فضای ابری گوگل

کدبیس MCG شامل فایل‌های Terraform و Google Cloud Build برای استقرار MCG در Google Cloud به عنوان یک سرویس Google Cloud Run است . بخش‌های زیر شما را در فرآیند استقرار راهنمایی می‌کنند که شامل ایجاد یک فایل متغیرها، استقرار زیرساخت، ساخت و استقرار برنامه و اعطای دسترسی و تأیید استقرار است.

از آنجایی که Cloud Run یک پلتفرم بدون سرور است، با اجرای کانتینرها فقط هنگام پردازش درخواست‌ها، به جای فعال نگه داشتن سرور به صورت ۲۴ ساعته و ۷ روز هفته، در منابع صرفه‌جویی می‌کند. این بدان معناست که داده‌های درون حافظه هنگام خاموش شدن نمونه‌های کانتینر بین درخواست‌ها از بین می‌روند. بنابراین، Redis موظف است فضای ذخیره‌سازی مداومی را برای داده‌های کاتالوگ در طول فراخوانی‌های سرویس فراهم کند. این رویکرد، یک استقرار مقیاس‌پذیر مناسب برای استفاده تیمی یا تولیدی فراهم می‌کند.

پیش‌نیازها

قبل از شروع استقرار در Google Cloud، مطمئن شوید که پیش‌نیازهای زیر را دارید:

ساختار فایل

استقرار در Google Cloud شامل اجرای دستورات Terraform از زیرشاخه infrastructure/ و دستورات Cloud Build از ریشه مخزن است. فایل‌ها و دایرکتوری‌های اصلی که با آنها تعامل دارید عبارتند از:

repository-root/
├── cloudbuild.yaml
└── infrastructure/
    └── terraform.tfvars  <-- you create this file

یک فایل متغیرهای Terraform ایجاد کنید

در دایرکتوری infrastructure/ ، فایلی با نام terraform.tfvars ایجاد کنید تا مقادیر متغیرهای تعریف شده در variables.tf را ارائه داده و استقرار خود را سفارشی کنید. شما باید مقادیر project_id و region را در این فایل تعریف کنید؛ سایر متغیرها اختیاری هستند. موارد زیر را به terraform.tfvars اضافه کنید:

project_id        = "<var label="Google Cloud project ID">your-gcp-project-id</var>"
region            = "<var label="Google Cloud region">your-gcp-region</var>" # For example, us-central1 or europe-west1

برای مشاهده‌ی تمام متغیرهای موجود و مقادیر پیش‌فرض آنها variables.tf مراجعه کنید. می‌توانید با تنظیم مقادیر پیش‌فرض در terraform.tfvars آنها را لغو کنید.

زیرساخت را مستقر کنید

پس از ایجاد terraform.tfvars ، می‌توانید پیکربندی Terraform را مقداردهی اولیه و اعمال کنید. این مرحله تمام منابع مورد نیاز Google Cloud، از جمله Artifact Registry، Redis و Cloud Run را فراهم می‌کند. پس از اتمام، Terraform سرویس Google Cloud Run را ایجاد می‌کند که یک تصویر کانتینر placeholder را اجرا می‌کند. این مرحله ممکن است چند دقیقه طول بکشد.

# Run from the infrastructure/ directory
terraform init
terraform apply

وقتی از شما خواسته شد که terraform apply اعمال کنید، طرح را بررسی کنید و برای تأیید، yes را تایپ کنید.

ساخت و استقرار برنامه MCG

پس از فراهم شدن زیرساخت، مرحله بعدی ساخت کد منبع MCG و استقرار آن در Google Cloud Run است. این کار با ارسال کد منبع به Google Cloud Build انجام می‌شود که تصویر Docker را می‌سازد، آن را به Artifact Registry ارسال می‌کند و سرویس Google Cloud Run را برای استفاده از تصویر جدید به‌روزرسانی می‌کند.

Google Cloud Build از متغیر جایگزینی COMMIT_SHA برای برچسب‌گذاری تصویر ساخته‌شده استفاده می‌کند. می‌توانید از شماره نسخه (مثلاً v1.0.0 ) یا SHA کامیت مخزن خود استفاده کنید. برچسب‌گذاری به شما کمک می‌کند تا بین نسخه‌های موجود در Artifact Registry تمایز قائل شوید، استقرارها را مدیریت کنید و در صورت نیاز به نسخه قبلی برگردید.

برای شروع ساخت و استقرار، دستور gcloud زیر را اجرا کنید:

# Run from the repository root
#
# The command tags the image with the Git commit SHA.
# To tag with a version number, replace '$(git rev-parse --short HEAD)' with the version number.
gcloud builds submit . \
  --config=cloudbuild.yaml \
  --substitutions=COMMIT_SHA=$(git rev-parse --short HEAD)

این دستور، استقرار اولیه کد برنامه را انجام می‌دهد. برای استقرار به‌روزرسانی‌ها در کد منبع MCG، این دستور را دوباره اجرا کنید.

اعطای دسترسی و تأیید استقرار

برای اینکه به کاربران یا حساب‌های سرویس اجازه دهید MCG API را فراخوانی کنند، باید به آنها نقش IAM مربوط به Cloud Run Invoker ( roles/run.invoker ) را اعطا کنید:

gcloud run services add-iam-policy-binding mcg-service \
  --member=<var label="member type, e.g. user or serviceAccount">MEMBER_TYPE</var>:<var label="email address of member">EMAIL_ADDRESS</var> \
  --role=roles/run.invoker \
  --region=<var label="Google Cloud region">your-gcp-region</var>

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

SERVICE_URL=$(gcloud run services describe mcg-service \
  --region <var label="Google Cloud region">your-gcp-region</var> \
  --format='value(status.url)')

پس از اعطای مجوزها، با فراخوانی نقطه پایانی /health آن، تأیید کنید که سرویس در حال اجرا و قابل دسترسی است. از آنجا که سرویس‌های Google Cloud Run نیاز به احراز هویت دارند، هنگام فراخوانی نقطه پایانی، باید یک توکن مجوز از gcloud را در هدر درخواست قرار دهید:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
  $SERVICE_URL/health

اگر سرویس در حال اجرا باشد، این دستور OK را برمی‌گرداند و اکنون می‌توانید هر یک از نقاط پایانی API را همانطور که در بخش «فراخوانی API» توضیح داده شده است، فراخوانی کنید.