Wdrożenie

Na tej stronie dowiesz się, jak wdrożyć generator konfiguracji wskaźników (MCG).

Dostęp do kodu źródłowego

Kod źródłowy MCG jest hostowany na GitHubie w repozytorium aaos-sdv-telemetry-mcg. Możesz uruchomić MCG lokalnie na potrzeby programowania i testowania lub wdrożyć go w środowisku chmury, aby zapewnić dostęp zespołowi.

Uruchamianie lokalne

Aby uruchomić MCG z katalogu źródłowego na potrzeby lokalnego programowania i testowania, użyj Bazela. Musisz mieć zainstalowany Bazel. Jeśli uruchamiasz lokalnie, musisz włączyć buforowanie w pamięci RAM, ustawiając MCG_LOCALCACHE=true. Umożliwia to przechowywanie katalogów sygnałów pojazdów. Aby skompilować i uruchomić usługę lokalnie, użyj tych poleceń w katalogu źródłowym:

# 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

Wdróż w Google Cloud

Baza kodu MCG zawiera pliki Terraform i Google Cloud Build, które umożliwiają wdrożenie MCG w Google Cloud jako usługi Google Cloud Run. W poniższych sekcjach znajdziesz instrukcje dotyczące procesu wdrażania, który obejmuje utworzenie pliku zmiennych, wdrożenie infrastruktury, utworzenie i wdrożenie aplikacji oraz przyznanie dostępu i zweryfikowanie wdrożenia.

Cloud Run to platforma bezserwerowa, która oszczędza zasoby, uruchamiając kontenery tylko podczas przetwarzania żądań, zamiast utrzymywać serwer aktywny przez całą dobę. Oznacza to, że dane w pamięci są tracone, gdy instancje kontenera są wyłączane między żądaniami. Dlatego Redis jest wymagany do zapewnienia pamięci trwałej na dane katalogu między wywołaniami usługi. Takie podejście zapewnia skalowalne wdrożenie, które nadaje się do użytku zespołowego lub produkcyjnego.

Wymagania wstępne

Zanim rozpoczniesz wdrażanie w Google Cloud, sprawdź, czy spełniasz te wymagania:

Struktura pliku

Wdrażanie w Google Cloud obejmuje uruchamianie poleceń Terraform z podkatalogu infrastructure/ i poleceń Cloud Build z katalogu głównego repozytorium. Główne pliki i katalogi, z którymi będziesz pracować, to:

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

Tworzenie pliku zmiennych Terraform

W katalogu infrastructure/ utwórz plik o nazwie terraform.tfvars, aby podać wartości zmiennych zdefiniowanych w variables.tf i dostosować wdrożenie. W tym pliku musisz zdefiniować wartości zmiennych project_id i region. Wszystkie pozostałe zmienne są opcjonalne. Dodaj do pliku terraform.tfvars ten kod:

project_id        = "your-gcp-project-id"
region            = "your-gcp-region" # For example, us-central1 or europe-west1

Wszystkie dostępne zmienne i ich wartości domyślne znajdziesz w variables.tf. Możesz zastąpić wartości domyślne, ustawiając je w pliku terraform.tfvars.

Wdrażanie infrastruktury

Po utworzeniu terraform.tfvars możesz zainicjować i zastosować konfigurację Terraform. Ten krok powoduje udostępnienie wszystkich wymaganych zasobów Google Cloud, w tym Artifact Registry, Redis i Cloud Run. Po zakończeniu Terraform tworzy usługę Google Cloud Run, która uruchamia obraz kontenera obiektu zastępczego. Może to potrwać kilka minut.

# Run from the infrastructure/ directory
terraform init
terraform apply

Gdy pojawi się prośba od terraform apply, sprawdź plan i wpisz yes, aby potwierdzić.

Tworzenie i wdrażanie aplikacji MCG

Po udostępnieniu infrastruktury następnym krokiem jest utworzenie kodu źródłowego MCG i wdrożenie go w Google Cloud Run. W tym celu prześlij kod źródłowy do Google Cloud Build, który utworzy obraz Dockera, przeniesie go do Artifact Registry i zaktualizuje usługę Google Cloud Run, aby używała nowego obrazu.

Google Cloud Build używa zmiennej podstawienia COMMIT_SHA do tagowania utworzonego obrazu. Możesz użyć numeru wersji (np. v1.0.0) lub identyfikatora SHA zatwierdzenia repozytorium. Tagowanie pomaga odróżniać wersje w Artifact Registry, zarządzać wdrożeniami i w razie potrzeby przywracać poprzednią wersję.

Uruchom to polecenie gcloud, aby aktywować kompilację i wdrożenie:

# 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)

To polecenie wykonuje początkowe wdrożenie kodu aplikacji. Aby wdrożyć aktualizacje kodu źródłowego MCG, uruchom to polecenie ponownie.

Przyznawanie dostępu i weryfikowanie wdrożenia

Aby umożliwić użytkownikom lub kontom usługi wywoływanie interfejsu MCG API, musisz przypisać im rolę uprawnień Wywołujący Cloud Run (roles/run.invoker):

gcloud run services add-iam-policy-binding mcg-service \
  --member=MEMBER_TYPE:EMAIL_ADDRESS \
  --role=roles/run.invoker \
  --region=your-gcp-region

Adres URL usługi możesz uzyskać, uruchamiając to polecenie. Adres URL pozostaje stabilny we wszystkich wdrożeniach.

SERVICE_URL=$(gcloud run services describe mcg-service \
  --region your-gcp-region \
  --format='value(status.url)')

Po przyznaniu uprawnień potwierdź, że usługa działa i jest dostępna, wywołując jej punkt końcowy /health. Usługi Google Cloud Run wymagają uwierzytelniania, dlatego podczas wywoływania punktu końcowego musisz dołączyć token autoryzacji z gcloud w nagłówku żądania:

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

Jeśli usługa działa, to polecenie zwraca OK i możesz teraz wywołać dowolny punkt końcowy interfejsu API zgodnie z opisem w sekcji Wywoływanie interfejsu API.