En esta página, se describe cómo implementar el generador de configuración de métricas (MCG).
Accede al código fuente
El código fuente de MCG se aloja en GitHub, en aaos-sdv-telemetry-mcg. Puedes ejecutar MCG de forma local para el desarrollo y las pruebas, o bien implementarlo en un entorno de nube para el acceso del equipo.
Ejecuta de forma local
Para ejecutar MCG desde su directorio del código fuente para el desarrollo y las pruebas locales, usa Bazel. Se debe instalar Bazel. Debes habilitar el almacenamiento en caché en la memoria configurando MCG_LOCALCACHE=true cuando se ejecuta de forma local. Esto admite el almacenamiento de catálogos de señales de
vehículos. Para compilar y ejecutar el servicio de forma local, usa los siguientes comandos desde el directorio del código fuente:
# 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
Implementa el cuaderno en Google Cloud
La base de código de MCG incluye archivos de Terraform y Google Cloud Build para implementar MCG en Google Cloud como un servicio de Google Cloud Run. En las siguientes secciones, se te guiará por el proceso de implementación, que incluye la creación de un archivo de variables, la implementación de la infraestructura, la compilación y la implementación de la aplicación, y el otorgamiento de acceso y la verificación de la implementación.
Como Cloud Run es una plataforma sin servidores, conserva los recursos ejecutando contenedores solo cuando procesa solicitudes, en lugar de mantener un servidor activo las 24 horas, los 7 días de la semana. Esto significa que los datos en la memoria se pierden cuando las instancias de contenedor se apagan entre las solicitudes. Por lo tanto, se requiere Redis para proporcionar almacenamiento persistente para los datos del catálogo en las invocaciones de servicio. Este enfoque proporciona una implementación escalable adecuada para el uso del equipo o la producción.
Requisitos previos
Antes de comenzar la implementación en Google Cloud, verifica que cumplas con los siguientes requisitos previos:
- Un proyecto de Google Cloud con la facturación habilitada y permisos suficientes para aprovisionar recursos y roles de IAM
- Terraform (v1.0.0 y versiones posteriores) instalado
- La Google Cloud CLI (
gcloud) instalada y autenticada
Estructura de archivos
La implementación en Google Cloud implica ejecutar comandos de Terraform desde el subdirectorio infrastructure/ y comandos de Cloud Build desde la raíz del repositorio. Los principales archivos y directorios con los que interactúas son los siguientes:
repository-root/
├── cloudbuild.yaml
└── infrastructure/
└── terraform.tfvars <-- you create this file
Crea un archivo de variables de Terraform
En el directorio infrastructure/, crea un archivo llamado terraform.tfvars para
proporcionar valores para las variables definidas en variables.tf y personalizar tu
implementación. Debes definir valores para project_id y region en este archivo. Todas las demás variables son opcionales. Agrega lo siguiente a 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
Consulta variables.tf para ver todas las variables disponibles y sus valores predeterminados. Puedes anular los valores predeterminados configurándolos en terraform.tfvars.
Implementa la infraestructura
Después de crear terraform.tfvars, puedes inicializar y aplicar la configuración de Terraform. Este paso aprovisiona todos los recursos necesarios de Google Cloud,
incluidos Artifact Registry, Redis y Cloud Run. Cuando se complete, Terraform creará el servicio de Google Cloud Run, que ejecuta una imagen de contenedor de marcador de posición.
Este paso puede tardar varios minutos.
# Run from the infrastructure/ directory
terraform init
terraform apply
Cuando terraform apply te lo solicite, revisa el plan y escribe yes para confirmar.
Compila e implementa la aplicación de MCG
Después de aprovisionar la infraestructura, el siguiente paso es compilar el código fuente de MCG y, luego, implementarlo en Google Cloud Run. Para ello, envía el código fuente a Google Cloud Build, que compila la imagen de Docker, la envía a Artifact Registry y actualiza el servicio de Google Cloud Run para usar la imagen nueva.
Google Cloud Build usa la variable de sustitución COMMIT_SHA para etiquetar la imagen compilada. Puedes usar un número de versión (por ejemplo, v1.0.0) o el SHA de confirmación de tu repositorio. El etiquetado te ayuda a distinguir entre las versiones en Artifact Registry, administrar las implementaciones y revertir a una versión anterior si es necesario.
Ejecuta el siguiente comando gcloud para activar la compilación y la implementación:
# 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)
Este comando realiza la implementación inicial del código de la aplicación. Para implementar actualizaciones en el código fuente de MCG, vuelve a ejecutar este comando.
Otorga acceso y verifica la implementación
Para permitir que los usuarios o las cuentas de servicio llamen a la API de MCG, debes otorgarles el
rol de IAM de invocador de 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>
Puedes obtener la URL del servicio ejecutando el siguiente comando. La URL permanece estable en todas las implementaciones.
SERVICE_URL=$(gcloud run services describe mcg-service \
--region <var label="Google Cloud region">your-gcp-region</var> \
--format='value(status.url)')
Después de otorgar permisos, confirma que el servicio se esté ejecutando y que se pueda acceder a él llamando a su extremo /health. Como los servicios de Google Cloud Run requieren autenticación, debes incluir un token de autorización de gcloud en el encabezado de la solicitud cuando llames al extremo:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
$SERVICE_URL/health
Si el servicio se está ejecutando, este comando muestra OK y, ahora, puedes llamar a cualquiera
de los extremos de la API como se describe en Llama a la API.