স্থাপনার গাইড

The Cloud Telemetry Simulation platform requires you to deploy the infrastructure to your Google Cloud project.

সোর্স কোড অ্যাক্সেস করুন

The source code for the Cloud Telemetry Simulation platform is hosted on GitHub, in aaos-sdv-telemetry-simulator .

পূর্বশর্ত

To deploy the platform, ensure you meet the following prerequisites:

  • বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট।
  • ওয়েব ডেমো নিরাপত্তা: আপনি যদি ওয়েব ডেমোটি ডেপ্লয় করেন, তাহলে অ্যাপ ইঞ্জিন অ্যাপ্লিকেশনটি সুরক্ষিত করতে এবং শুধুমাত্র অনুমোদিত গুগল অ্যাকাউন্টগুলিতে অ্যাক্সেস সীমাবদ্ধ রাখতে আপনাকে অবশ্যই Google Cloud APIs & Services > Credentials- এ একটি OAuth 2.0 ক্লায়েন্ট আইডি কনফিগার করতে হবে।
  • Software Defined Vehicle (SDV) build artifacts: You must have your own compiled SDV image artifacts. These are not provided in this repository.
    • cvd-host_package.tar.gz
    • sdv_core_cf-img-<version>.zip
  • অনুমতি: Terraform চালনাকারী ব্যবহারকারী বা পরিষেবা অ্যাকাউন্টের কনফিগারেশনে সংজ্ঞায়িত রিসোর্সগুলি তৈরি করার জন্য পর্যাপ্ত অনুমতি থাকতে হবে (উদাহরণস্বরূপ, প্রজেক্ট এডিটর , অথবা কম্পিউট ইঞ্জিন, ক্লাউড ফাংশন, আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট, ক্লাউড স্টোরেজ এবং অন্যান্য প্রয়োজনীয় পরিষেবাগুলির অনুমতিসহ একটি কাস্টম রোল)।
  • সরঞ্জাম:
    • গুগল ক্লাউড সিএলআই ( gcloud CLI )
    • টেরাফর্ম (রিপোজিটরিতে ব্যবহৃত সংস্করণ)
    • ডকার
    • গো (রিপোজিটরিতে অর্কেস্ট্রেটর ফাংশনগুলির জন্য ব্যবহৃত সংস্করণ)

গুগল ক্লাউড পরিকাঠামো স্থাপন করুন

সিমুলেশন প্ল্যাটফর্ম স্থাপন করার জন্য দুটি প্রধান ধাপ রয়েছে: টেরাফর্ম ব্যবহার করে গুগল ক্লাউডে মূল পরিকাঠামো স্থাপন করা, এবং সিমুলেশন এজেন্ট ডকার ইমেজ তৈরি করে আর্টিফ্যাক্ট রেজিস্ট্রি-তে পুশ করা। এই বিভাগে আপনাকে পরিকাঠামো স্থাপনের প্রক্রিয়াটি ধাপে ধাপে দেখানো হবে।

Enter values for the following variables to update the code snippets on this page:

  1. Configure the Terraform backend: Create a file to specify where Terraform stores its state file in Cloud Storage. Name the file using this syntax:

    environments/ENVIRONMENT/backend.hcl
    
    # environments/ENVIRONMENT/backend.hcl
    bucket = "TF_BUCKET_NAME"
    prefix = "sdv-telemetry-simulation"
    
  2. প্রজেক্ট ভেরিয়েবল কনফিগার করুন: আপনার প্রজেক্টের বিবরণ দিয়ে একটি ফাইল তৈরি করুন। এই সিনট্যাক্স ব্যবহার করে ফাইলটির নামকরণ করুন:

    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
    
  3. Apply the Terraform configuration: Navigate to the infrastructure directory, then initialize and apply the configuration:

    # 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) সিমুলেশনটি চালায়। আপনি আপনার SDV আর্টিফ্যাক্টগুলো দিয়ে এটি বিল্ড করেন এবং আর্টিফ্যাক্ট রেজিস্ট্রি-তে পুশ করেন।

সিমুলেশন এজেন্ট ইমেজ তৈরি এবং পুশ করতে:

  1. Place artifacts: Copy your cvd-host_package.tar.gz and sdv_core_cf-img-<version>.zip files into the simulation-agent/sdv-image-resources/ directory.

  2. Build and push: Navigate to the simulation-agent directory, then build and push the image. Replace the image path with the one you configured in your variables.tfvars file.

    # 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
    
  3. ফিঙ্গারপ্রিন্ট আপডেট করুন: একটি নতুন ইমেজ পুশ করার পর, আপনাকে এর SHA256 ডাইজেস্ট সংগ্রহ করতে হতে পারে এবং আপনার variables.tfvars ফাইলে থাকা image_fingerprints ম্যাপটি আপডেট করতে হতে পারে, তারপর terraform apply পুনরায় রান করুন।

    # Get the digest using gcloud
    gcloud container images describe $AGENT_IMAGE --format="value(image_summary.digest)"
    

    Your Cloud Telemetry Simulation platform is deployed and ready to accept simulation requests.

অপারেশন এবং সমস্যা সমাধান

এই সমাধানটি আপনাকে পর্যবেক্ষণের জন্য গুগল ক্লাউডের অন্তর্নির্মিত টুলগুলো ব্যবহার করতে দেয়। এটি শুধুমাত্র প্রতি অনুরোধে এবং সিমুলেশন চলাকালীন কম্পিউটেশনাল রিসোর্স ব্যবহার করে।

ব্যয় ব্যবস্থাপনা

The architecture is designed to be cost-effective by using serverless and ephemeral resources. Costs are primarily driven by:

  • Compute Engine: Billed for the time the simulation VMs are running. Using Spot VMs can significantly reduce this cost.
  • ক্লাউড ফাংশন: প্রতিবার ব্যবহারের জন্য বিল করা হয়।
  • ক্লাউড স্টোরেজ: ইনপুট ও আউটপুট ফাইল এবং লগ সংরক্ষণের জন্য বিল করা হয়।
  • ফায়ারস্টোর: রিড, রাইট এবং ডেটা স্টোরেজের জন্য বিল করা হয়।

পর্যবেক্ষণযোগ্যতা

সমস্ত উপাদান গুগল ক্লাউড অপারেশন স্যুটের সাথে সমন্বিত।

  • লগস এক্সপ্লোরার: সমস্যা সমাধানের জন্য এটি আপনার প্রধান টুল। আপনি রিসোর্স অনুযায়ী লগ ফিল্টার করতে পারেন:
    • ক্লাউড ফাংশন: অর্কেস্ট্রেশন সংক্রান্ত সমস্যা ডিবাগ করতে receive-request বা schedule-simulation ফাংশনগুলোর লগ পরীক্ষা করুন।
    • কম্পিউট ইঞ্জিন: চালু বা বন্ধ হওয়ার সমস্যার জন্য ভিএম ইনস্ট্যান্স লগ পরীক্ষা করুন।
    • সিমুলেশন এজেন্ট: ডকার কন্টেইনারের ভিতরে চলমান এজেন্ট তার লগগুলো লগস এক্সপ্লোরারে পাঠিয়ে দেয়। সিমুলেশনের বিস্তারিত অগ্রগতি দেখতে ভিএম ইনস্ট্যান্সের নাম দিয়ে ফিল্টার করুন।
  • Cloud Storage: For completed simulations, the logcat and bugreport files from the Cuttlefish device are uploaded to the simulation's output directory in the Cloud Storage bucket, providing deep insight into the Android environment's behavior.

পরিষেবা অ্যাকাউন্ট

টেরাফর্ম একটি নিরাপদ ও ন্যূনতম সুবিধাযুক্ত পরিবেশ নিশ্চিত করতে বেশ কয়েকটি সার্ভিস অ্যাকাউন্ট তৈরি করে। প্রধান সার্ভিস অ্যাকাউন্টগুলো হলো:

  1. এক্সিকিউশন আইডেন্টিটি (ভিএম):

    • simulation-agent :
      • এর সাথে সংযুক্ত: সিমুলেশন চালনাকারী Compute Engine VM-গুলো।
      • ভূমিকা: ভিএম-কে ফলাফল আপলোড করতে এবং কাজ সম্পন্ন হওয়ার সংকেত দিতে অনুমতি দেয়।
      • অনুমতিসমূহ:
        • roles/storage.objectUser : ইনপুট গ্রহণ করে এবং আর্টিফ্যাক্ট (লগ, রিপোর্ট) ক্লাউড স্টোরেজে আপলোড করে।
        • roles/run.invoker : প্রমাণীকরণ করে এবং finish-simulation ফাংশনটি চালু করে।
  2. অর্কেস্ট্রেশন পরিচিতি (কার্যক্রম):

    • read-simulations-function :
      • এর সাথে সংযুক্ত: read-simulation ক্লাউড ফাংশন।
      • অনুমতিসমূহ:
        • roles/datastore.user : ফায়ারস্টোরে সিমুলেশন এবং চলমান ভিএম-এর রেকর্ডগুলো পড়ে।
    • receive-request-function :

      • Attached to: The receive-request Cloud Function.
      • অনুমতিসমূহ:
        • roles/datastore.user : ফায়ারস্টোরে নতুন PENDING সিমুলেশন রেকর্ড তৈরি করে।
        • 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 ক্লাউড ফাংশন।
      • Permissions: - roles/compute.instanceAdmin.v1 : Deletes the VM after execution completes. - roles/datastore.user : Updates the simulation status to COMPLETED or FAILED .
    • delete-simulation-function :

      • এর সাথে সংযুক্ত: delete-simulation ক্লাউড ফাংশন।
      • Permissions: - roles/compute.instanceAdmin.v1 : Force-deletes virtual machines during cancellation. - roles/datastore.user : Updates the status for canceled jobs.
  3. ট্রিগারের পরিচয়:

    • scheduler-trigger :

      • ব্যবহৃত হয়: ইভেন্টআর্ক (ইভেন্ট) এবং ক্লাউড শিডিউলার ট্রিগার দ্বারা
      • অর্কেস্ট্রেটর ফাংশনগুলো চালু করার জন্য roles/eventarc.eventReceiver এবং roles/run.invoker অনুমতি প্রয়োজন
    • cleanup-scheduler :

      • পরিষ্কার-পরিচ্ছন্নতার জন্য ক্লাউড শিডিউলার ক্রন জব দ্বারা ব্যবহৃত হয়
      • অনুমতি: পরিষ্করণ যুক্তি সক্রিয় করার জন্য roles/run.invoker

এই সার্ভিস অ্যাকাউন্টগুলোর জন্য আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট পলিসিগুলো পরিচালনা করাই হলো সিস্টেমের মধ্যে অ্যাক্সেস ও পারমিশন নিয়ন্ত্রণের প্রধান উপায়।