Implantação

Nesta página, descrevemos como implantar o Gerador de configuração de métricas (MCG, na sigla em inglês).

Acessar o código-fonte

O código-fonte do MCG está hospedado no GitHub, em aaos-sdv-telemetry-mcg. É possível executar o MCG localmente para desenvolvimento e teste ou implantá-lo em um ambiente de nuvem para acesso da equipe.

Executar no local

Para executar o MCG no diretório de origem para desenvolvimento e testes locais, use o Bazel. O Bazel precisa estar instalado. Ative o cache em memória definindo MCG_LOCALCACHE=true ao executar localmente. Isso permite o armazenamento de catálogos de indicadores de veículos. Para criar e executar o serviço localmente, use os seguintes comandos no diretório de origem:

# 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

Implantar no Google Cloud

A base de código do MCG inclui arquivos do Terraform e do Google Cloud Build para implantar o MCG no Google Cloud como um serviço do Google Cloud Run. As seções a seguir orientam você no processo de implantação, que inclui criar um arquivo de variáveis, implantar a infraestrutura, criar e implantar o aplicativo, conceder acesso e verificar a implantação.

Como o Cloud Run é uma plataforma sem servidor, ele conserva recursos executando contêineres apenas ao processar solicitações, em vez de manter um servidor ativo 24 horas por dia, 7 dias por semana. Isso significa que os dados na memória são perdidos quando as instâncias de contêiner são encerradas entre as solicitações. Portanto, o Redis é necessário para fornecer armazenamento permanente para dados de catálogo em todas as invocações de serviço. Essa abordagem oferece uma implantação escalonável adequada para uso em equipe ou produção.

Pré-requisitos

Antes de iniciar a implantação no Google Cloud, verifique se você tem os seguintes pré-requisitos:

Estrutura do arquivo

A implantação no Google Cloud envolve a execução de comandos do Terraform no subdiretório infrastructure/ e de comandos do Cloud Build na raiz do repositório. Os principais arquivos e diretórios com que você interage são:

repository-root/
├── cloudbuild.yaml
└── infrastructure/
    └── terraform.tfvars  <-- you create this file

Criar um arquivo de variáveis do Terraform

No diretório infrastructure/, crie um arquivo chamado terraform.tfvars para fornecer valores para as variáveis definidas em variables.tf e personalizar sua implantação. É necessário definir valores para project_id e region nesse arquivo. Todas as outras variáveis são opcionais. Adicione o seguinte a terraform.tfvars:

project_id        = "your-gcp-project-id"
region            = "your-gcp-region" # For example, us-central1 or europe-west1

Consulte variables.tf para ver todas as variáveis disponíveis e os valores padrão delas. É possível substituir os valores padrão definindo-os em terraform.tfvars.

implantação da infraestrutura

Depois de criar terraform.tfvars, é possível inicializar e aplicar a configuração do Terraform. Esta etapa provisiona todos os recursos necessários do Google Cloud, incluindo o Artifact Registry, o Redis e o Cloud Run. Quando concluído, o Terraform cria o serviço do Google Cloud Run, que executa uma imagem de contêiner de marcador de posição. Essa etapa pode levar alguns minutos.

# Run from the infrastructure/ directory
terraform init
terraform apply

Quando solicitado por terraform apply, revise o plano e digite yes para confirmar.

Criar e implantar o aplicativo do MCG

Depois que a infraestrutura for provisionada, a próxima etapa será criar o código-fonte do MCG e implantá-lo no Google Cloud Run. Para isso, envie o código-fonte para o Google Cloud Build, que cria a imagem Docker, a envia para o Artifact Registry e atualiza o serviço do Google Cloud Run para usar a nova imagem.

O Google Cloud Build usa a variável de substituição COMMIT_SHA para marcar a imagem criada. É possível usar um número de versão (por exemplo, v1.0.0) ou o SHA de commit do repositório. A inclusão de tags ajuda a distinguir entre versões no Artifact Registry, gerenciar implantações e reverter para uma versão anterior, se necessário.

Execute o seguinte comando gcloud para acionar a criação e a implantação:

# 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)

Esse comando executa a implantação inicial do código do aplicativo. Para implantar atualizações no código-fonte do MCG, execute esse comando novamente.

Conceder acesso e verificar a implantação

Para permitir que usuários ou contas de serviço chamem a API MCG, conceda a eles o papel do IAM de Invocador do Cloud Run (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

Para encontrar o URL do serviço, execute o comando a seguir. O URL permanece estável entre as implantações.

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

Depois de conceder as permissões, confirme se o serviço está em execução e acessível chamando o endpoint /health. Como os serviços do Google Cloud Run exigem autenticação, é necessário incluir um token de autorização de gcloud no cabeçalho da solicitação ao chamar o endpoint:

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

Se o serviço estiver em execução, esse comando vai retornar OK, e você poderá chamar qualquer um dos endpoints de API, conforme descrito em Chamar a API.