Cette page explique comment déployer le générateur de configuration des métriques (MCG).
Accéder au code source
Le code source de MCG est hébergé sur GitHub, dans aaos-sdv-telemetry-mcg. Vous pouvez exécuter MCG en local pour le développement et les tests, ou le déployer dans un environnement cloud pour l'accès en équipe.
Exécuter localement
Pour exécuter MCG à partir de son répertoire source pour le développement et les tests locaux, utilisez Bazel. Bazel doit être installé. Vous devez activer la mise en cache en mémoire en définissant MCG_LOCALCACHE=true lorsque vous exécutez le serveur localement. Cela permet de stocker les catalogues de signaux de véhicules. Pour compiler et exécuter le service en local, utilisez les commandes suivantes à partir du répertoire source :
# 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
Déployer sur Google Cloud
La base de code MCG inclut des fichiers Terraform et Google Cloud Build pour déployer MCG sur Google Cloud en tant que service Google Cloud Run. Les sections suivantes vous guident tout au long du processus de déploiement, qui inclut la création d'un fichier de variables, le déploiement de l'infrastructure, la compilation et le déploiement de l'application, ainsi que l'octroi d'accès et la vérification du déploiement.
Cloud Run étant une plate-forme sans serveur, il préserve les ressources en n'exécutant les conteneurs que lors du traitement des requêtes, au lieu de maintenir un serveur actif 24h/24 et 7j/7. Cela signifie que les données en mémoire sont perdues lorsque les instances de conteneur s'arrêtent entre les requêtes. Par conséquent, Redis est nécessaire pour fournir un stockage persistant des données de catalogue lors des appels de service. Cette approche fournit un déploiement évolutif adapté à une utilisation en équipe ou en production.
Prérequis
Avant de commencer le déploiement sur Google Cloud, vérifiez que vous disposez des prérequis suivants :
- Un projet Google Cloud avec la facturation activée et les autorisations suffisantes pour provisionner des ressources et des rôles IAM
- Terraform (v1.0.0 et versions ultérieures) installé
- Google Cloud CLI (
gcloud) installé et authentifié
Structure des fichiers
Le déploiement sur Google Cloud implique l'exécution de commandes Terraform à partir du sous-répertoire infrastructure/ et de commandes Cloud Build à partir de la racine du dépôt. Voici les principaux fichiers et répertoires avec lesquels vous interagissez :
repository-root/
├── cloudbuild.yaml
└── infrastructure/
└── terraform.tfvars <-- you create this file
Créer un fichier de variables Terraform
Dans le répertoire infrastructure/, créez un fichier nommé terraform.tfvars pour fournir des valeurs pour les variables définies dans variables.tf et personnaliser votre déploiement. Vous devez définir des valeurs pour project_id et region dans ce fichier. Toutes les autres variables sont facultatives. Ajoutez le code suivant à 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
Consultez variables.tf pour connaître toutes les variables disponibles et leurs valeurs par défaut. Vous pouvez remplacer les valeurs par défaut en les définissant dans terraform.tfvars.
Déployer l'infrastructure
Après avoir créé terraform.tfvars, vous pouvez initialiser et appliquer la configuration Terraform. Cette étape provisionne toutes les ressources Google Cloud requises, y compris Artifact Registry, Redis et Cloud Run. Une fois l'opération terminée, Terraform crée le service Google Cloud Run, qui exécute une image de conteneur de substitution.
Cette étape peut prendre plusieurs minutes.
# Run from the infrastructure/ directory
terraform init
terraform apply
Lorsque terraform apply vous y invite, vérifiez le forfait et saisissez yes pour confirmer.
Créer et déployer l'application MCG
Une fois l'infrastructure provisionnée, l'étape suivante consiste à compiler le code source MCG et à le déployer sur Google Cloud Run. Pour ce faire, le code source est envoyé à Google Cloud Build, qui crée l'image Docker, la transfère vers Artifact Registry et met à jour le service Google Cloud Run pour qu'il utilise la nouvelle image.
Google Cloud Build utilise la variable de substitution COMMIT_SHA pour taguer l'image compilée. Vous pouvez utiliser un numéro de version (par exemple, v1.0.0) ou le SHA de commit de votre dépôt. Le taggage vous aide à distinguer les versions dans Artifact Registry, à gérer les déploiements et à effectuer un rollback vers une version précédente si nécessaire.
Exécutez la commande gcloud suivante pour déclencher la compilation et le déploiement :
# 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)
Cette commande effectue le déploiement initial du code de l'application. Pour déployer les mises à jour du code source MCG, exécutez à nouveau cette commande.
Accorder l'accès et vérifier le déploiement
Pour autoriser des utilisateurs ou des comptes de service à appeler l'API MCG, vous devez leur accorder le rôle IAM Demandeur 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>
Vous pouvez obtenir l'URL du service en exécutant la commande suivante. L'URL reste stable lors des déploiements.
SERVICE_URL=$(gcloud run services describe mcg-service \
--region <var label="Google Cloud region">your-gcp-region</var> \
--format='value(status.url)')
Après avoir accordé les autorisations, vérifiez que le service est en cours d'exécution et accessible en appelant son point de terminaison /health. Étant donné que les services Google Cloud Run nécessitent une authentification, vous devez inclure un jeton d'autorisation provenant de gcloud dans l'en-tête de requête lorsque vous appelez le point de terminaison :
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
$SERVICE_URL/health
Si le service est en cours d'exécution, cette commande renvoie OK. Vous pouvez désormais appeler l'un des points de terminaison de l'API, comme décrit dans Appeler l'API.