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

На этой странице описано, как развернуть Metrics Configuration Generator (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        = "your-gcp-project-id"
region            = "your-gcp-region" # For example, us-central1 or europe-west1

Все доступные переменные и их значения по умолчанию приведены в variables.tf. Вы можете переопределить значения по умолчанию, задав их в 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 коммита вашего репозитория. Теги помогают различать версии в Artifact Registry, управлять развертываниями и при необходимости откатываться к предыдущей версии.

Чтобы запустить сборку и развертывание, выполните следующую команду 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, выполните эту команду ещё раз.

Предоставьте доступ и проверьте развертывание

Чтобы пользователи или сервисные аккаунты могли вызывать MCG API, им нужно назначить роль IAM Cloud Run Invoker (roles/run.invoker).

gcloud run services add-iam-policy-binding mcg-service \
  --member=MEMBER_TYPE:EMAIL_ADDRESS \
  --role=roles/run.invoker \
  --region=your-gcp-region

Чтобы получить URL сервиса, выполните следующую команду: URL остается неизменным при развертывании.

SERVICE_URL=$(gcloud run services describe mcg-service \
  --region your-gcp-region \
  --format='value(status.url)')

Предоставив разрешения, убедитесь, что сервис работает и доступен, вызвав его конечную точку /health. Поскольку сервисы Google Cloud Run требуют аутентификации, при вызове конечной точки необходимо включить в заголовок запроса токен авторизации из gcloud:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
  $SERVICE_URL/health

Если сервис запущен, команда возвращает OK, и вы можете вызвать любую из конечных точек API, как описано в разделе Вызов API.