Bereitstellung

Auf dieser Seite wird beschrieben, wie Sie den Metrics Configuration Generator (MCG) bereitstellen.

Auf den Quellcode zugreifen

Der Quellcode für MCG wird auf GitHub unter aaos-sdv-telemetry-mcg gehostet. Sie können MCG lokal für die Entwicklung und das Testen ausführen oder in einer Cloud-Umgebung bereitstellen, damit das Team darauf zugreifen kann.

Lokal ausführen

Wenn Sie MCG aus dem Quellverzeichnis für die lokale Entwicklung und das Testen ausführen möchten, verwenden Sie Bazel. Bazel muss installiert sein. Sie müssen den In-Memory-Cache aktivieren, indem Sie beim lokalen Ausführen MCG_LOCALCACHE=true festlegen. Dadurch wird die Speicherung von Fahrzeug Signalkatalogen unterstützt. Verwenden Sie die folgenden Befehle aus dem 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 werden Sie durch den Bereitstellungsprozess geführt, der das Erstellen einer Variablendatei, das Bereitstellen der Infrastruktur, das Erstellen und Bereitstellen der Anwendung sowie das Gewähren von Zugriff und das Überprüfen der Bereitstellung umfasst.

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

Vorbereitung

Bevor Sie mit der Bereitstellung in Google Cloud beginnen, prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:

Dateistruktur

Bei der Bereitstellung in Google Cloud werden Terraform-Befehle aus dem Unterverzeichnis infrastructure/ und Cloud Build-Befehle aus dem Stammverzeichnis des Repository ausgeführt. 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 anzugeben, die in variables.tf definiert sind, und die Bereitstellung anzupassen. Sie müssen in dieser Datei Werte für project_id und region 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

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

Infrastruktur bereitstellen

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. Nach Abschluss erstellt Terraform den Google Cloud Run-Dienst, der ein Platzhalter-Container-Image ausführt. Dieser Schritt kann einige Minuten dauern.

# Run from the infrastructure/ directory
terraform init
terraform apply

Prüfen Sie bei der Aufforderung durch terraform apply den Plan und geben Sie yes ein, um zu bestätigen.

MCG-Anwendung erstellen und bereitstellen

Nachdem die Infrastruktur bereitgestellt wurde, müssen Sie den MCG-Quellcode erstellen und in Google Cloud Run bereitstellen. Dazu senden Sie den Quellcode an Google Cloud Build, das das Docker-Image erstellt, es per Push an Artifact Registry überträgt und den Google Cloud Run-Dienst aktualisiert, um das neue Image zu verwenden.

Google Cloud Build verwendet die Substitutionsvariable COMMIT_SHA, um das erstellte Image zu taggen. Sie können eine Versionsnummer (z. B. v1.0.0) oder die Commit-SHA Ihres Repository verwenden. Durch das Taggen können Sie zwischen Versionen in Artifact Registry unterscheiden, Bereitstellungen verwalten und bei Bedarf zu einer vorherigen Version zurückkehren.

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 mit dem folgenden Befehl abrufen. Die URL bleibt bei allen Bereitstellungen gleich.

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 Gewähren von Berechtigungen, dass der Dienst ausgeführt wird und zugänglich ist, indem Sie den Endpunkt /health 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.