Развертывание

На этой странице описано, как развернуть генератор конфигурации метрик (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 включает в себя выполнение команд 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» .