Bereitstellung

Auf dieser Seite wird beschrieben, wie Sie den Metrics Configuration Generator (MCG) bereitstellen. Sie können MCG entweder lokal für die Entwicklung und das Testen ausführen oder in einer Cloud-Umgebung für den Teamzugriff bereitstellen.

Quellcode abrufen

Der Quellcode für MCG wird auf sdv.googlesource.com, gehostet. Für den Zugriff ist eine Authentifizierung erforderlich, wie unter Auf Tooling-Repositories zugreifen beschrieben.

Wenn Sie auf den Quellcode zugreifen möchten, klonen Sie das MCG-Repository:

git clone https://sdv.googlesource.com/external/mcg-external

Lokal ausführen

Wenn Sie MCG aus dem zugehörigen Quellverzeichnis für die lokale Entwicklung und das lokale Testen ausführen möchten, verwenden Sie Bazel. Bazel muss installiert sein. Sie müssen das In-Memory-Caching aktivieren, indem Sie MCG_LOCALCACHE=true festlegen, wenn Sie lokal ausgeführt werden. Dies unterstützt die Speicherung von Fahrzeugsignalkatalogen. Verwenden Sie die folgenden Befehle im Quellverzeichnis, um den Dienst lokal zu erstellen und auszuführen:

# 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

In Google Cloud bereitstellen

Die MCG-Codebasis enthält Terraform- und Google Cloud Build-Dateien, um MCG als Google Cloud Run-Dienst in Google Cloud bereitzustellen. In den folgenden Abschnitten wird der Bereitstellungsprozess beschrieben. Dazu gehören das Erstellen einer Variablendatei, das Bereitstellen der Infrastruktur, das Erstellen und Bereitstellen der Anwendung sowie das Gewähren des Zugriffs und das Überprüfen der Bereitstellung.

Da Cloud Run eine serverlose Plattform ist, werden Ressourcen geschont, indem Container nur bei der Verarbeitung von Anfragen ausgeführt werden. Ein Server muss also nicht rund um die Uhr aktiv sein. Das bedeutet, dass In-Memory-Daten verloren gehen, wenn Containerinstanzen zwischen Anfragen heruntergefahren werden. Daher ist Redis erforderlich, um nichtflüchtigen Speicher für Katalogdaten bei Dienstaufrufen bereitzustellen. Dieser Ansatz bietet eine skalierbare Bereitstellung, die für die Verwendung im Team oder in der Produktion geeignet ist.

Vorbereitung

Bevor Sie die Bereitstellung in Google Cloud starten, sollten Sie prüfen, ob die folgenden Voraussetzungen erfüllt sind:

Dateistruktur

Für die Bereitstellung in Google Cloud müssen Sie Terraform-Befehle aus dem Unterverzeichnis infrastructure/ und Cloud Build-Befehle aus dem Stammverzeichnis des Repositorys ausführen. Die wichtigsten Dateien und Verzeichnisse, mit denen Sie interagieren, sind:

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

Terraform-Variablendatei erstellen

Erstellen Sie im Verzeichnis infrastructure/ eine Datei mit dem Namen terraform.tfvars, um Werte für Variablen in variables.tf anzugeben und die Bereitstellung anzupassen. Sie müssen Werte für project_id und region in dieser Datei definieren. Alle anderen Variablen sind optional. Fügen Sie terraform.tfvars Folgendes hinzu:

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

Alle verfügbaren Variablen und ihre Standardwerte finden Sie unter variables.tf. Sie können alle Standardwerte überschreiben, indem Sie sie in terraform.tfvars festlegen.

Stellen Sie die Infrastruktur bereit:

Nachdem Sie terraform.tfvars erstellt haben, können Sie die Terraform-Konfiguration initialisieren und anwenden. In diesem Schritt werden alle erforderlichen Google Cloud-Ressourcen bereitgestellt, einschließlich Artifact Registry, Redis und Cloud Run. Wenn der Vorgang abgeschlossen ist, erstellt Terraform den Google Cloud Run-Dienst, in dem ein Platzhalter-Container-Image ausgeführt wird. Dieser Schritt kann einige Minuten dauern.

# Run from the infrastructure/ directory
terraform init
terraform apply

Wenn Sie von terraform apply dazu aufgefordert werden, prüfen Sie den Plan und geben Sie yes ein, um ihn zu bestätigen.

MCG-Anwendung erstellen und bereitstellen

Nachdem die Infrastruktur bereitgestellt wurde, besteht der nächste Schritt darin, den MCG-Quellcode zu erstellen und in Google Cloud Run bereitzustellen. Dazu wird der Quellcode an Google Cloud Build gesendet. Dort wird das Docker-Image erstellt, per Push in Artifact Registry übertragen und der Google Cloud Run-Dienst wird so aktualisiert, dass er das neue Image verwendet.

Google Cloud Build verwendet die Ersetzungsvariable COMMIT_SHA, um das erstellte Image zu taggen. Sie können eine Versionsnummer (z. B. v1.0.0) oder den Commit-SHA Ihres Repositorys verwenden. Durch das Tagging können Sie Versionen in Artifact Registry unterscheiden, Bereitstellungen verwalten und bei Bedarf ein Rollback auf eine frühere Version durchführen.

Führen Sie den folgenden gcloud-Befehl aus, um den Build und die Bereitstellung auszulösen:

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

Mit diesem Befehl wird der Anwendungscode zum ersten Mal bereitgestellt. Wenn Sie Updates für den MCG-Quellcode bereitstellen möchten, führen Sie diesen Befehl noch einmal aus.

Zugriff gewähren und Bereitstellung überprüfen

Damit Nutzer oder Dienstkonten die MCG API aufrufen können, müssen Sie ihnen die IAM-Rolle Cloud Run Invoker (roles/run.invoker) gewähren:

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>

Sie können die Dienst-URL abrufen, indem Sie den folgenden Befehl ausführen. Die URL bleibt über Bereitstellungen hinweg stabil.

SERVICE_URL=$(gcloud run services describe mcg-service \
  --region <var label="Google Cloud region">your-gcp-region</var> \
  --format='value(status.url)')

Bestätigen Sie nach dem Erteilen der Berechtigungen, dass der Dienst ausgeführt wird und zugänglich ist, indem Sie den /health-Endpunkt aufrufen. Da für Google Cloud Run-Dienste eine Authentifizierung erforderlich ist, müssen Sie beim Aufrufen des Endpunkts ein Autorisierungstoken von gcloud in den Anfrageheader einfügen:

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

Wenn der Dienst ausgeführt wird, gibt dieser Befehl OK zurück. Sie können jetzt alle API-Endpunkte aufrufen, wie unter API aufrufen beschrieben.