Wdrożenie

Ta strona zawiera opis wdrażania generatora konfiguracji danych (MCG).

Dostęp do kodu źródłowego

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

Uruchamianie lokalne

Aby uruchomić MCG z katalogu źródłowego na potrzeby lokalnego programowania i testowania, użyj Bazela. Bazel musi być zainstalowany. Podczas uruchamiania lokalnego musisz włączyć buforowanie w pamięci, ustawiając MCG_LOCALCACHE=true. Umożliwia to przechowywanie katalogów sygnałów pojazdu. Aby utworzyć i uruchomić usługę lokalnie, użyj tych poleceń z katalogu źródłowego:

# 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

Wdrażanie 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 kolejnych 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 weryfikację wdrożenia.

Cloud Run to platforma bezserwerowa, która oszczędza zasoby, uruchamiając kontenery tylko wtedy, gdy przetwarza żądania, a nie utrzymując serwera aktywnego przez całą dobę. Oznacza to, że dane w pamięci są tracone, gdy instancje kontenerów są wyłączane między żądaniami. Dlatego do zapewnienia pamięci trwałej danych katalogu w przypadku wywołań usługi wymagany jest Redis. To podejście zapewnia skalowalne wdrożenie odpowiednie do użytku zespołowego lub produkcyjnego.

Wymagania wstępne

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

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ć:

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 project_id i region. Wszystkie inne zmienne są opcjonalne. Dodaj do terraform.tfvars te informacje:

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

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

Wdrażanie infrastruktury

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

# Run from the infrastructure/ directory
terraform init
terraform apply

Gdy pojawi się prośba 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 zastępczej COMMIT_SHA do oznaczania utworzonego obrazu. Możesz użyć numeru wersji (np. v1.0.0) lub SHA zatwierdzenia w repozytorium. Oznaczanie ułatwia odróżnianie wersji w Artifact Registry, zarządzanie wdrożeniami i w razie potrzeby wycofanie zmian do poprzedniej wersji.

Aby uruchomić tworzenie i wdrażanie, uruchom to polecenie 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)

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 przyznać im rolę IAM Wywołujący Cloud Run (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>

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 <var label="Google Cloud region">your-gcp-region</var> \
  --format='value(status.url)')

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

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

Jeśli usługa działa, to polecenie zwraca OK. Możesz teraz wywoływać dowolne punkty końcowe interfejsu API zgodnie z opisem w sekcji Wywoływanie interfejsu API.