परिनियोजन

इस पेज पर, Metrics Configuration Generator (MCG) को डिप्लॉय करने का तरीका बताया गया है.

सोर्स कोड ऐक्सेस करना

एमसीजी का सोर्स कोड, GitHub पर aaos-sdv-telemetry-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

Google Cloud पर डिप्लॉय करना

MCG के कोडबेस में Terraform और Google Cloud Build फ़ाइलें शामिल होती हैं. इनका इस्तेमाल करके, MCG को Google Cloud Run सेवा के तौर पर Google Cloud पर डिप्लॉय किया जा सकता है. यहां दिए गए सेक्शन में, डिप्लॉयमेंट की प्रोसेस के बारे में बताया गया है. इसमें वैरिएबल फ़ाइल बनाना, इन्फ़्रास्ट्रक्चर डिप्लॉय करना, ऐप्लिकेशन बनाना और डिप्लॉय करना, और ऐक्सेस देना और डिप्लॉयमेंट की पुष्टि करना शामिल है.

Cloud Run एक सर्वरलेस प्लैटफ़ॉर्म है. इसलिए, यह संसाधनों को बचाता है. ऐसा इसलिए, क्योंकि यह अनुरोधों को प्रोसेस करते समय सिर्फ़ कंटेनर चलाता है. यह सर्वर को 24 घंटे चालू नहीं रखता. इसका मतलब है कि अनुरोधों के बीच कंटेनर इंस्टेंस बंद होने पर, इन-मेमोरी डेटा मिट जाता है. इसलिए, सेवा के सभी अनुरोधों के लिए कैटलॉग डेटा को लगातार सेव करने के लिए, Redis की ज़रूरत होती है. इस तरीके से, बड़े पैमाने पर डिप्लॉयमेंट किया जा सकता है. यह टीम या प्रोडक्शन के इस्तेमाल के लिए सही है.

ज़रूरी शर्तें

Google Cloud पर डिप्लॉयमेंट शुरू करने से पहले, पुष्टि करें कि आपने यहां दी गई ज़रूरी शर्तें पूरी कर ली हों:

  • बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट. साथ ही, संसाधन और IAM भूमिकाएं उपलब्ध कराने के लिए ज़रूरी अनुमतियां
  • Terraform (v1.0.0 और इसके बाद का वर्शन) इंस्टॉल किया गया हो
  • Google Cloud CLI (gcloud) इंस्टॉल और पुष्टि की गई हो

फ़ाइल स्ट्रक्चर

Google Cloud पर डिप्लॉय करने के लिए, infrastructure/ सबडायरेक्ट्री से Terraform कमांड और रिपॉज़िटरी रूट से 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 सेवा बनाता है. यह सेवा, प्लेसहोल्डर कंटेनर इमेज को चलाती है. इस प्रोसेस में कुछ मिनट लग सकते हैं.

# Run from the infrastructure/ directory
terraform init
terraform apply

terraform apply से पूछे जाने पर, प्लान की समीक्षा करें और पुष्टि करने के लिए yes लिखें.

एमसीजी ऐप्लिकेशन बनाना और उसे डिप्लॉय करना

बुनियादी ढांचा तैयार होने के बाद, अगला चरण 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 API कॉल करने की अनुमति देने के लिए, आपको उन्हें Cloud Run Invoker (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 दिखाता है. अब एपीआई को कॉल करना में बताए गए तरीके से, किसी भी एपीआई एंडपॉइंट को कॉल किया जा सकता है.