Nesta página, descrevemos como implantar o Gerador de configuração de métricas (MCG). É possível executar o MCG localmente para desenvolvimento e testes ou implantá-lo em um ambiente de nuvem para acesso da equipe.
Conseguir o código-fonte
O código-fonte do MCG está hospedado em sdv.googlesource.com,
que exige
autenticação, conforme descrito em Acessar repositórios de ferramentas.
Para acessar o código-fonte, clone o repositório do MCG:
git clone https://sdv.googlesource.com/external/mcg-external
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. É necessário ativar o armazenamento em cache na memória definindo
MCG_LOCALCACHE=true ao executar localmente. Isso permite o armazenamento de catálogos de sinais 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, além de 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 desligadas entre solicitações. Portanto, o Redis é necessário para fornecer armazenamento persistente de dados de catálogo em 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:
- Um projeto do Google Cloud com o faturamento ativado e permissões suficientes para provisionar recursos e papéis do IAM
- O Terraform (v1.0.0 e versões mais recentes) instalado
- A CLI do Google Cloud (
gcloud) instalada e autenticada
Estrutura do arquivo
A implantação no Google Cloud envolve a execução de comandos do Terraform no subdiretório
infrastructure/ e 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 neste arquivo. Todas as outras variáveis são opcionais. Adicione o seguinte 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
Consulte variables.tf para conferir todas as variáveis disponíveis e os valores padrão delas.
É possível substituir qualquer valor padrão definindo-o 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 é provisionada, a próxima etapa é criar o código-fonte do MCG e implantá-lo no Google Cloud Run. Isso é feito enviando o código-fonte para o Google Cloud Build, que cria a imagem Docker, 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 adicionar tags à
imagem criada. É possível usar um número de versão (por exemplo, v1.0.0) ou o SHA do commit do seu repositório. As tags ajudam 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 build 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 realiza a implantação inicial do código do aplicativo. Para implantar atualizações no código-fonte do MCG, execute este 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=<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>
Para conferir o URL do serviço, execute o seguinte comando. O URL permanece estável em todas as implantações.
SERVICE_URL=$(gcloud run services describe mcg-service \
--region <var label="Google Cloud region">your-gcp-region</var> \
--format='value(status.url)')
Depois de conceder permissões, confirme se o serviço está em execução e acessível
chamando o endpoint /health dele. Como os serviços do Google Cloud Run exigem
autenticação, inclua 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 da API, conforme descrito em Chamar a API.