স্থাপনা

This page describes how to deploy the Metrics Configuration Generator (MCG) .

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

The source code for MCG is hosted on GitHub, in aaos-sdv-telemetry-mcg . You can run MCG locally for development and testing, or deploy it to a cloud environment for team access.

স্থানীয়ভাবে চালান

স্থানীয় উন্নয়ন এবং পরীক্ষার জন্য এর সোর্স ডিরেক্টরি থেকে 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 Run পরিষেবা হিসাবে Google Cloud-এ ডেপ্লয় করার জন্য ব্যবহৃত হয়। নিম্নলিখিত বিভাগগুলি আপনাকে ডেপ্লয়মেন্ট প্রক্রিয়ার মাধ্যমে পথ দেখাবে, যার মধ্যে রয়েছে একটি ভেরিয়েবল ফাইল তৈরি করা, ইনফ্রাস্ট্রাকচার ডেপ্লয় করা, অ্যাপ্লিকেশনটি বিল্ড ও ডেপ্লয় করা এবং অ্যাক্সেস প্রদান ও ডেপ্লয়মেন্ট যাচাই করা।

ক্লাউড রান একটি সার্ভারবিহীন প্ল্যাটফর্ম হওয়ায়, এটি ২৪/৭ সার্ভার সক্রিয় রাখার পরিবর্তে শুধুমাত্র অনুরোধ প্রক্রিয়াকরণের সময় কন্টেইনার চালু রেখে রিসোর্স সাশ্রয় করে। এর মানে হলো, অনুরোধের মাঝে কন্টেইনার ইনস্ট্যান্সগুলো বন্ধ হয়ে গেলে ইন-মেমরি ডেটা হারিয়ে যায়; তাই, বিভিন্ন সার্ভিস চালুর সময় ক্যাটালগ ডেটার জন্য স্থায়ী স্টোরেজ সরবরাহ করতে রেডিস (Redis) প্রয়োজন হয়। এই পদ্ধতিটি একটি স্কেলেবল ডেপ্লয়মেন্ট প্রদান করে যা টিম বা প্রোডাকশন ব্যবহারের জন্য উপযুক্ত।

পূর্বশর্ত

গুগল ক্লাউডে ডেপ্লয়মেন্ট শুরু করার আগে, আপনার নিম্নলিখিত পূর্বশর্তগুলো রয়েছে কিনা তা যাচাই করে নিন:

  • একটি গুগল ক্লাউড প্রজেক্ট, যেখানে বিলিং সক্রিয় করা আছে এবং রিসোর্স ও আইএএম রোল প্রোভিশন করার জন্য পর্যাপ্ত অনুমতি রয়েছে।
  • টেরাফর্ম (v1.0.0 এবং উচ্চতর) ইনস্টল করা আছে
  • Google Cloud CLI ( gcloud ) ইনস্টল এবং প্রমাণীকৃত হয়েছে

ফাইল কাঠামো

গুগল ক্লাউডে ডেপ্লয় করার জন্য infrastructure/ সাবডিরেক্টরি থেকে Terraform কমান্ড এবং রিপোজিটরি রুট থেকে Cloud Build কমান্ড চালাতে হয়। এর জন্য আপনাকে প্রধানত যে ফাইল এবং ডিরেক্টরিগুলোর সাথে কাজ করতে হয়, সেগুলো হলো:

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

একটি টেরাফর্ম ভেরিয়েবল ফাইল তৈরি করুন

infrastructure/ ডিরেক্টরিতে, variables.tf এ সংজ্ঞায়িত ভেরিয়েবলগুলোর মান প্রদান করতে এবং আপনার ডেপ্লয়মেন্ট কাস্টমাইজ করতে terraform.tfvars নামে একটি ফাইল তৈরি করুন। এই ফাইলে আপনাকে 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

See variables.tf for all available variables and their default values. You can override default values by setting them in terraform.tfvars .

অবকাঠামো স্থাপন করুন

terraform.tfvars তৈরি করার পরে, আপনি Terraform কনফিগারেশনটি ইনিশিয়ালাইজ এবং প্রয়োগ করতে পারেন। এই ধাপে Artifact Registry, Redis , এবং Cloud Run সহ সমস্ত প্রয়োজনীয় Google Cloud রিসোর্স প্রোভিশন করা হয়। এটি সম্পন্ন হলে, Terraform Google Cloud Run সার্ভিসটি তৈরি করে, যা একটি প্লেসহোল্ডার কন্টেইনার ইমেজ রান করে। এই ধাপে কয়েক মিনিট সময় লাগতে পারে।

# Run from the infrastructure/ directory
terraform init
terraform apply

terraform apply কমান্ডের নির্দেশ অনুযায়ী, প্ল্যানটি পর্যালোচনা করুন এবং নিশ্চিত করতে yes টাইপ করুন।

এমসিজি অ্যাপ্লিকেশনটি তৈরি এবং স্থাপন করুন

পরিকাঠামো প্রস্তুত হয়ে গেলে, পরবর্তী ধাপ হলো MCG সোর্স কোড বিল্ড করে Google Cloud Run-এ ডেপ্লয় করা। এটি করার জন্য সোর্স কোডটি Google Cloud Build-এ জমা দিতে হয়, যা ডকার ইমেজটি বিল্ড করে, আর্টিফ্যাক্ট রেজিস্ট্রি-তে পুশ করে এবং নতুন ইমেজটি ব্যবহার করার জন্য Google Cloud Run সার্ভিসটি আপডেট করে।

Google Cloud Build বিল্ড করা ইমেজকে ট্যাগ করার জন্য COMMIT_SHA সাবস্টিটিউশন ভেরিয়েবল ব্যবহার করে। আপনি একটি ভার্সন নম্বর (যেমন, v1.0.0 ) অথবা আপনার রিপোজিটরির কমিট SHA ব্যবহার করতে পারেন। ট্যাগিং আপনাকে আর্টিফ্যাক্ট রেজিস্ট্রি-তে ভার্সনগুলোর মধ্যে পার্থক্য করতে, ডেপ্লয়মেন্ট পরিচালনা করতে এবং প্রয়োজনে পূর্ববর্তী ভার্সনে ফিরে যেতে সাহায্য করে।

বিল্ড এবং ডিপ্লয়মেন্ট শুরু করতে নিম্নলিখিত 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 কল করার অনুমতি দিতে, আপনাকে অবশ্যই তাদেরকে ক্লাউড রান ইনভোকার ( roles/run.invoker ) IAM রোলটি প্রদান করতে হবে:

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 রিটার্ন করে, এবং আপনি এখন "Call the API" অংশে বর্ণিত পদ্ধতি অনুযায়ী যেকোনো API এন্ডপয়েন্ট কল করতে পারবেন।