Criar um aplicativo com recursos atuais
Neste guia de início rápido, mostramos como organizar os serviços Google Cloud em um aplicativo do App Hub. Primeiro, implante uma configuração de exemplo, que será usada para definir um aplicativo da Web global registrando os componentes dele como um aplicativo no App Hub.
Essa abordagem é para usuários que querem usar a infraestrutura atual para ganhar visibilidade e controle operacional agrupando recursos em aplicativos lógicos.
Antes de começar
Antes de iniciar este guia de início rápido, faça o seguinte:
Configure o App Hub com uma pasta habilitada para gerenciar apps.
Anote o ID do projeto de gerenciamento para usar em todo este documento.
Verifique se as seguintes APIs estão ativadas no projeto de gerenciamento. Ao configurar uma pasta compatível com apps, a maioria das APIs necessárias para este guia de início rápido é ativada automaticamente.
- API Compute Engine (
compute.googleapis.com
) - API Infrastructure Manager (
config.googleapis.com
)
- API Compute Engine (
Funções exigidas
Para receber as permissões necessárias para ativar as APIs obrigatórias e criar um aplicativo de amostra com recursos atuais, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto de gerenciamento:
-
Para ativar as APIs necessárias:
Administrador do Service Usage (
roles/serviceusage.serviceUsageAdmin
) -
Para ter acesso total aos serviços necessários:
-
Administrador do App Hub (
roles/apphub.admin
) -
Administrador do Cloud Run (
roles/run.admin
) -
Administrador do Compute (
roles/compute.admin
) -
Administrador do Cloud Infrastructure Manager (
roles/config.admin
)
-
Administrador do App Hub (
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Implantar recursos para o aplicativo
Primeiro, implante um conjunto de recursos de amostra que você usará mais tarde para definir um aplicativo global no App Hub:
- Um serviço do Cloud Run que atua como back-end do aplicativo.
- Um balanceador de carga de aplicativo externo global que direciona o tráfego para o serviço do Cloud Run como uma regra de encaminhamento.
Siga estas etapas para implantar esses recursos:
gcloud
Defina as variáveis de ambiente necessárias:
export PROJECT_ID="PROJECT_ID" export REGION="REGION"
Substitua:
PROJECT_ID
: o ID do projeto de gerenciamento.REGION
: a região escolhida para os recursos, por exemplo,us-central1
.
Implante um serviço de amostra do Cloud Run chamado
hello-run
:gcloud run deploy hello-run \ --image=us-docker.pkg.dev/cloudrun/container/hello \ --allow-unauthenticated \ --region=${REGION} \ --project=${PROJECT_ID}
Crie o balanceador de carga de aplicativo externo global. Esse processo envolve as seguintes etapas:
Crie um grupo de endpoints de rede (NEG) sem servidor chamado
hello-run-neg
:gcloud compute network-endpoint-groups create hello-run-neg \ --region=${REGION} \ --network-endpoint-type=serverless \ --cloud-run-service=hello-run \ --project=${PROJECT_ID}
O NEG atua como um back-end para o balanceador de carga, apontando para o serviço
hello-run
.Crie um serviço de back-end para gerenciar como o tráfego é distribuído para o NEG:
gcloud compute backend-services create hello-backend-service \ --global \ --load-balancing-scheme=EXTERNAL_MANAGED \ --project=${PROJECT_ID}
Adicione o NEG sem servidor como um back-end ao serviço de back-end:
gcloud compute backend-services add-backend hello-backend-service \ --global \ --network-endpoint-group=hello-run-neg \ --network-endpoint-group-region=${REGION} \ --project=${PROJECT_ID}
Crie um mapa de URL para encaminhar solicitações recebidas para o serviço de back-end :
gcloud compute url-maps create hello-url-map \ --default-service=hello-backend-service \ --project=${PROJECT_ID}
Crie um proxy HTTP para receber solicitações e encaminhá-las usando o mapa de URLs:
gcloud compute target-http-proxies create hello-http-proxy \ --url-map=hello-url-map \ --project=${PROJECT_ID}
Crie uma regra de encaminhamento global:
gcloud compute forwarding-rules create hello-forwarding-rule \ --global \ --load-balancing-scheme=EXTERNAL_MANAGED \ --target-http-proxy=hello-http-proxy \ --ports=80 \ --project=${PROJECT_ID}
Essa regra de encaminhamento fornece um endereço IP público e uma porta para processar solicitações de usuários recebidas e as direciona ao proxy.
Terraform
Crie um arquivo
main.tf
e adicione o seguinte código:# Provider configuration provider "google" { project = "PROJECT_ID" } # Cloud Run service resource "google_cloud_run_v2_service" "default" { name = "hello-run" location = "REGION" template { containers { image = "us-docker.pkg.dev/cloudrun/container/hello" } } } # Allow unauthenticated access to the Cloud Run service resource "google_cloud_run_v2_service_iam_member" "noauth" { project = google_cloud_run_v2_service.default.project location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name role = "roles/run.invoker" member = "allUsers" }
Substitua:
PROJECT_ID
: o ID do projeto de gerenciamento.REGION
: a região escolhida para os recursos, por exemplo,us-central1
.
Esse bloco define o Google Cloud provedor e configura um serviço do Cloud Run voltado ao público usando uma imagem de contêiner
hello-world
de amostra. Ele também inclui uma vinculação de política do IAM para permitir invocações não autenticadas, tornando o serviço acessível ao público.Adicione o seguinte código ao arquivo
main.tf
para criar o balanceador de carga de aplicativo externo global:# Serverless NEG for the Cloud Run service resource "google_compute_region_network_endpoint_group" "serverless_neg" { name = "hello-run-neg" network_endpoint_type = "SERVERLESS" region = "REGION" cloud_run { service = google_cloud_run_v2_service.default.name } } # Global external backend service resource "google_compute_backend_service" "default" { name = "hello-backend-service" protocol = "HTTP" load_balancing_scheme = "EXTERNAL_MANAGED" backend { group = google_compute_region_network_endpoint_group.serverless_neg.id } } # URL map to route requests to the backend service resource "google_compute_url_map" "default" { name = "hello-url-map" default_service = google_compute_backend_service.default.id } # HTTP proxy to route requests to the URL map resource "google_compute_target_http_proxy" "default" { name = "hello-http-proxy" url_map = google_compute_url_map.default.id } # Global forwarding rule to handle incoming requests resource "google_compute_global_forwarding_rule" "default" { name = "hello-forwarding-rule" target = google_compute_target_http_proxy.default.id port_range = "80" }
Esse bloco define os seguintes componentes:
- Um grupo de endpoints de rede (NEG) sem servidor, que atua como um back-end para o balanceador de carga e aponta para o serviço do Cloud Run.
- Um serviço de back-end que direciona o tráfego para o NEG sem servidor.
- Um mapa de URL para encaminhar solicitações recebidas ao serviço de back-end.
- Um proxy HTTP para receber solicitações e encaminhá-las usando o mapa de URLs.
- Uma regra de encaminhamento global, que fornece um endereço IP público e uma porta para processar solicitações de usuários recebidas e as direciona ao proxy.
Inicialize e aplique a configuração do Terraform:
terraform init terraform apply
O Terraform implanta os recursos no seu projeto.
Definir o aplicativo no App Hub
Depois de implantar os recursos como uma regra de encaminhamento e um serviço do Cloud Run, siga estas etapas para agrupá-los em um aplicativo no App Hub:
Console
Acesse a página Aplicativos no App Hub:
Clique em Criar aplicativo.
Selecione Global como o local do aplicativo.
Insira
my-global-app
no Nome do aplicativo e clique em Continuar.Se quiser, adicione um nome de exibição, uma gravidade, um ambiente e proprietários.
Clique em Criar.
Na guia Serviços e cargas de trabalho, clique em Registrar serviço/carga de trabalho.
Selecione a regra de encaminhamento, dê a ela o nome
frontend-service
e clique em Registrar.Selecione o serviço do Cloud Run, nomeie-o como
backend-service
e clique em Registrar.
gcloud
Crie o aplicativo:
gcloud apphub applications create my-global-app \ --location=global \ --display-name="My Global Application" \ --project=${PROJECT_ID}
Descubra os IDs da regra de encaminhamento e do serviço do Cloud Run na região apropriada:
gcloud apphub discovered-services list \ --location=global \ --project=${PROJECT_ID} gcloud apphub discovered-services list \ --location=${REGION} \ --project=${PROJECT_ID}
Anote o ID da regra de encaminhamento e do serviço do Cloud Run.
Registre a regra de encaminhamento no aplicativo global:
gcloud apphub applications services create frontend-service \ --application=my-global-app \ --discovered-service=projects/${PROJECT_ID}/locations/global/discoveredServices/FRONTEND_ID \ --display-name="Frontend Service" \ --location=global \ --project=${PROJECT_ID}
Substitua
FRONTEND_ID
pelo ID da regra de encaminhamento.Registre o serviço do Cloud Run no aplicativo global:
gcloud apphub applications services create backend-service \ --application=my-global-app \ --discovered-service=projects/${PROJECT_ID}/locations/${REGION}/discoveredServices/BACKEND_ID \ --display-name="Backend Service" \ --location=global \ --project=${PROJECT_ID}
Substitua
BACKEND_ID
pelo ID do serviço do Cloud Run.
Terraform
Crie um arquivo
application.tf
e adicione o seguinte código:# Application resource "google_apphub_application" "my_global_app" { project = "PROJECT_ID" location = "global" application_id = "my-global-app" display_name = "My Global Web App" description = "A sample global web application." scope { type = "GLOBAL" } attributes { criticality { type = "MEDIUM" } environment { type = "DEVELOPMENT" } business_owners { display_name = "Example Business Owner" email = "business-owner@example.com" } developer_owners { display_name = "Example Developer" email = "dev-owner@example.com" } operator_owners { display_name = "Example Operator" email = "operator-owner@example.com" } } }
Esse bloco usa o recurso
google_apphub_application
para criar um agrupamento lógico dos seus serviços e cargas de trabalho.Este exemplo cria um aplicativo global e define atributos para governança e capacidade de descoberta, como criticidade, ambiente e proprietários. É possível modificar esses valores para sua configuração de exemplo.
Adicione o seguinte código a
application.tf
para descobrir os recursos implantados:# Discover the forwarding rule data "google_apphub_discovered_service" "frontend_service" { location = "global" service_uri = "//compute.googleapis.com/${google_compute_global_forwarding_rule.default.id}" } # Discover the Cloud Run service data "google_apphub_discovered_service" "backend_service" { location = "REGION" service_uri = "//run.googleapis.com/${google_cloud_run_v2_service.default.id}" }
As fontes de dados
google_apphub_discovered_service
encontram os nomes de recursos da sua infraestrutura atual com base nos URIs. Essa etapa permite que o App Hub identifique os recursos específicos que você quer registrar.Adicione o seguinte código a
application.tf
para registrar os recursos descobertos:# Register the forwarding rule as a service in the application resource "google_apphub_service" "frontend" { project = "PROJECT_ID" location = "global" application_id = google_apphub_application.my_global_app.application_id service_id = "frontend-service" display_name = "Frontend Service (LB)" discovered_service = data.google_apphub_discovered_service.frontend_service.name } # Register the Cloud Run service as a service in the application resource "google_apphub_service" "backend" { project = "PROJECT_ID" location = "global" application_id = google_apphub_application.my_global_app.application_id service_id = "backend-service" display_name = "Backend Service (Cloud Run)" discovered_service = data.google_apphub_discovered_service.backend_service.name }
Os recursos
google_apphub_service
registram formalmente os recursos descobertos no seu aplicativo. Esta etapa cria o link entre sua infraestrutura e o aplicativo definido no App Hub.Inicialize e aplique a configuração do Terraform:
terraform init terraform apply
O Terraform registra os recursos no aplicativo
my-global-app
no App Hub.
Opcional: monitorar seu novo aplicativo
Depois de definir seu aplicativo no App Hub, use os serviços integrados do Google Cloud para monitorar a integridade e o desempenho dele:
Acessar dados operacionais no Cloud Hub:
No console do Google Cloud , acesse a página Início do Cloud Hub.
No seletor de aplicativos, escolha seu aplicativo
my-global-app
. A página mostra um resumo da integridade do aplicativo. Para mais informações, consulte a Visão geral do Cloud Hub.
Acessar painéis detalhados no Application Monitoring:
Configure o Google Cloud Observability para o Application Monitoring.
-
No console do Google Cloud , acesse a página Monitoramento de aplicativos:
Acessar Monitoramento de aplicativos
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
No seletor de projetos do console Google Cloud , selecione o projeto de gerenciamento.
A página Monitoramento de aplicativos mostra painéis predefinidos para seu aplicativo. Para mais informações, consulte Monitorar a integridade e o desempenho do aplicativo.
Para instruções detalhadas sobre como usar os painéis predefinidos e analisar seus dados de telemetria, consulte Ver telemetria de aplicativos.
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga as etapas abaixo.
- Cancelar o registro de serviços e cargas de trabalho.
- Exclua o aplicativo global.
- Se você usou o Terraform para implantar o aplicativo, execute
terraform destroy
no diretório que contém os arquivos do Terraform para desprovisionar todos os recursos criados. - Opcional: se você criou um novo projeto para este guia de início rápido, exclua o projeto.