На этой странице описано, как развернуть генератор конфигурации метрик (MCG) .
Получите доступ к исходному коду
Исходный код MCG размещен на GitHub в репозитории aaos-sdv-telemetry-mcg . Вы можете запустить MCG локально для разработки и тестирования или развернуть его в облачной среде для доступа команды.
Запустить локально
Для запуска MCG из исходного каталога для локальной разработки и тестирования используйте Bazel. Bazel должен быть установлен. При локальном запуске необходимо включить кэширование в памяти, установив параметр MCG_LOCALCACHE=true . Это поддерживает хранение каталогов сигналов транспортных средств . Для сборки и запуска службы локально используйте следующие команды из исходного каталога:
# 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
Развертывание в Google Cloud
В кодовую базу MCG входят файлы Terraform и Google Cloud Build для развертывания MCG в Google Cloud в качестве сервиса Google Cloud Run . В следующих разделах описан процесс развертывания, который включает создание файла переменных, развертывание инфраструктуры, сборку и развертывание приложения, а также предоставление доступа и проверку развертывания.
Поскольку Cloud Run — это бессерверная платформа, она экономит ресурсы, запуская контейнеры только при обработке запросов, а не поддерживая сервер активным круглосуточно. Это означает, что данные в оперативной памяти теряются при завершении работы экземпляров контейнеров между запросами; следовательно, для обеспечения постоянного хранения данных каталога между вызовами сервиса требуется Redis . Такой подход обеспечивает масштабируемое развертывание, подходящее для командной работы или использования в производственной среде.
Предварительные требования
Прежде чем начать развертывание в Google Cloud, убедитесь, что у вас есть следующие необходимые условия:
- Проект Google Cloud с включенной функцией выставления счетов и достаточными правами доступа для выделения ресурсов и ролей IAM.
- Установлена программа Terraform (версия 1.0.0 и выше).
- Установлен и авторизован интерфейс командной строки Google Cloud (
gcloud).
Структура файлов
Развертывание в Google Cloud включает в себя выполнение команд Terraform из подкаталога infrastructure/ и команд Cloud Build из корневого каталога репозитория. Основные файлы и каталоги, с которыми вы взаимодействуете, следующие:
repository-root/
├── cloudbuild.yaml
└── infrastructure/
└── terraform.tfvars <-- you create this file
Создайте файл переменных Terraform.
В каталоге infrastructure/ создайте файл с именем terraform.tfvars , чтобы указать значения для переменных, определенных в variables.tf , и настроить развертывание. В этом файле необходимо определить значения для project_id и region ; все остальные переменные являются необязательными. Добавьте в 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
See variables.tf for all available variables and their default values. You can override default values by setting them in terraform.tfvars .
Разверните инфраструктуру
После создания terraform.tfvars вы можете инициализировать и применить конфигурацию Terraform. На этом этапе будут подготовлены все необходимые ресурсы Google Cloud, включая Artifact Registry, Redis и Cloud Run. После завершения Terraform создаст службу Google Cloud Run, которая запустит образ контейнера-заглушки. Этот шаг может занять несколько минут.
# Run from the infrastructure/ directory
terraform init
terraform apply
Когда команда terraform apply предложит это сделать, просмотрите план и введите yes для подтверждения.
Создайте и разверните приложение MCG.
После развертывания инфраструктуры следующим шагом является сборка исходного кода MCG и его развертывание в Google Cloud Run. Это делается путем отправки исходного кода в Google Cloud Build, который собирает образ Docker, загружает его в Artifact Registry и обновляет службу Google Cloud Run для использования нового образа.
Google Cloud Build использует переменную подстановки COMMIT_SHA для присвоения тега собранному образу. Вы можете использовать номер версии (например, v1.0.0 ) или SHA коммита вашего репозитория. Присвоение тегов помогает различать версии в реестре артефактов, управлять развертываниями и при необходимости откатываться к предыдущей версии.
Выполните следующую команду 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)
Эта команда выполняет первоначальное развертывание кода приложения. Для развертывания обновлений исходного кода MCG выполните эту команду еще раз.
Предоставьте доступ и проверьте развертывание.
Чтобы разрешить пользователям или учетным записям служб вызывать API MCG, необходимо предоставить им роль IAM Cloud Run Invoker ( 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>
Получить URL-адрес сервиса можно, выполнив следующую команду. URL-адрес остается неизменным при разных развертываниях.
SERVICE_URL=$(gcloud run services describe mcg-service \
--region <var label="Google Cloud region">your-gcp-region</var> \
--format='value(status.url)')
После предоставления разрешений подтвердите, что служба запущена и доступна, вызвав ее конечную точку /health . Поскольку службы Google Cloud Run требуют аутентификации, необходимо включить токен авторизации от gcloud в заголовок запроса при вызове конечной точки:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
$SERVICE_URL/health
Если служба запущена, эта команда вернет OK , и теперь вы можете вызывать любую из конечных точек API, как описано в разделе «Вызов API» .