Crea una aplicación a partir de recursos existentes
En esta guía de inicio rápido, se muestra cómo organizar los recursos existentes de una aplicación de App Hub registrándolos como servicios. Google Cloud Primero, implementarás componentes de muestra, que luego usarás para definir una aplicación web global en App Hub.
Esta guía de inicio rápido es para los usuarios que desean utilizar su infraestructura existente para obtener visibilidad y control operativo agrupando los recursos de Google Cloud en aplicaciones lógicas.
Antes de comenzar
Antes de comenzar esta guía de inicio rápido, haz lo siguiente:
Elige el modelo de configuración de tu aplicación. En este inicio rápido, se supone que definiste un límite de administración de aplicaciones a nivel de la carpeta y se crea una aplicación con el proyecto de administración de la carpeta. Para obtener más información sobre la configuración de este recurso, consulta el modelo de recursos de App Hub.
Toma nota del ID del proyecto de administración que usarás en todo este documento. Para obtener más información, consulta Cómo encontrar el nombre, el número y el ID del proyecto.
Verifica que las siguientes APIs estén habilitadas en el proyecto de administración. Cuando configuras un proyecto de administración, la mayoría de las APIs que necesitas para este inicio rápido se habilitan automáticamente.
- API de Compute Engine (
compute.googleapis.com) - API de Infrastructure Manager (
config.googleapis.com)
- API de Compute Engine (
Roles obligatorios
Para obtener los permisos que necesitas para habilitar las APIs requeridas y crear una aplicación de muestra a partir de recursos existentes, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto de administración:
-
Para habilitar las APIs requeridas:
Administrador de Service Usage (
roles/serviceusage.serviceUsageAdmin) -
Para obtener acceso completo a los servicios requeridos, haz lo siguiente:
-
Administrador de App Hub (
roles/apphub.admin) -
Administrador de Cloud Run (
roles/run.admin) -
Administrador de Compute (
roles/compute.admin) -
Administrador de Cloud Infrastructure Manager (
roles/config.admin)
-
Administrador de App Hub (
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Implementa componentes de muestra para la aplicación
Primero, debes implementar un conjunto de recursos de muestra Google Cloud que usarás más adelante para definir una aplicación global en App Hub registrándolos como componentes de la aplicación:
- Un servicio de Cloud Run que actúa como el servicio de backend de la aplicación
- Un balanceador de cargas de aplicaciones externo global que actúa como el servicio de frontend de la aplicación dirigiendo el tráfico al servicio de Cloud Run como una regla de reenvío.
Sigue estos pasos para implementar estos recursos:
gcloud
Configura las variables de entorno necesarias:
export PROJECT_ID="PROJECT_ID" export REGION="REGION"Reemplaza lo siguiente:
PROJECT_ID: Es el ID de tu proyecto de administración.REGION: La región que elegiste para los recursos, por ejemplo,us-central1.
Implementa un servicio de muestra de Cloud Run llamado
hello-run:gcloud run deploy hello-run \ --image=us-docker.pkg.dev/cloudrun/container/hello \ --allow-unauthenticated \ --region=${REGION} \ --project=${PROJECT_ID}Crea el balanceador de cargas de aplicaciones externo global. Este proceso implica los siguientes pasos:
Crea un grupo de extremos de red (NEG) sin servidores llamado
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}El NEG actúa como backend del balanceador de cargas y apunta a tu servicio de
hello-run.Crea un servicio de backend para administrar cómo se distribuye el tráfico al NEG:
gcloud compute backend-services create hello-backend-service \ --global \ --load-balancing-scheme=EXTERNAL_MANAGED \ --project=${PROJECT_ID}Agrega el NEG sin servidores al servicio de backend:
gcloud compute backend-services add-backend hello-backend-service \ --global \ --network-endpoint-group=hello-run-neg \ --network-endpoint-group-region=${REGION} \ --project=${PROJECT_ID}Crea un mapa de URL para enrutar las solicitudes entrantes al servicio de backend:
gcloud compute url-maps create hello-url-map \ --default-service=hello-backend-service \ --project=${PROJECT_ID}Crea un proxy HTTP para recibir solicitudes y enrutarlas con el mapa de URL:
gcloud compute target-http-proxies create hello-http-proxy \ --url-map=hello-url-map \ --project=${PROJECT_ID}Crea una regla de reenvío 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}Esta regla de reenvío proporciona una dirección IP pública y un puerto para controlar las solicitudes entrantes de los usuarios y las dirige al proxy.
Terraform
Crea un archivo
main.tfy agrega el siguiente 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" }Reemplaza lo siguiente:
PROJECT_ID: Es el ID de tu proyecto de administración.REGION: La región que elegiste para los recursos, por ejemplo,us-central1.
Este bloque define el Google Cloud proveedor y configura un servicio de Cloud Run público con una imagen de contenedor de muestra
hello-world. También incluye una vinculación de política de IAM para permitir invocaciones no autenticadas, lo que hace que el servicio sea accesible públicamente.Agrega el siguiente código a tu archivo
main.tfpara crear el balanceador de cargas de aplicaciones 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" }Este bloque define los siguientes componentes:
- Un grupo de extremos de red (NEG) sin servidores, que actúa como backend para el balanceador de cargas y apunta al servicio de Cloud Run.
- Un servicio de backend que dirige el tráfico al NEG sin servidores.
- Es un mapa de URL para enrutar las solicitudes entrantes al servicio de backend.
- Un proxy HTTP para recibir solicitudes y enrutarlas con el mapa de URL.
- Una regla de reenvío global que proporciona una dirección IP pública y un puerto para controlar las solicitudes entrantes de los usuarios y dirigirlas al proxy.
Inicializa y aplica la configuración de Terraform:
terraform init terraform applyTerraform implementa los recursos en tu proyecto.
Define la aplicación en App Hub
Después de implementar los recursos como una regla de reenvío y un servicio de Cloud Run, sigue estos pasos para agruparlos en una aplicación de App Hub registrándolos como los servicios de la aplicación:
Console
Ve a la página Applications desde App Hub:
Haz clic en Crear aplicación.
Selecciona Global como la ubicación de la aplicación.
Ingresa
my-global-appen el Nombre de la aplicación y haz clic en Continuar.De manera opcional, agrega un nombre visible, la criticidad, el entorno y los propietarios.
Haz clic en Crear.
En la pestaña Servicios y cargas de trabajo, haz clic en Registrar servicio o carga de trabajo.
Selecciona la regla de reenvío, asígnale el nombre
frontend-servicey haz clic en Registrar.Selecciona el servicio de Cloud Run, asígnale el nombre
backend-servicey haz clic en Registrar.
gcloud
Crea la aplicación:
gcloud apphub applications create my-global-app \ --location=global \ --display-name="My Global Application" \ --project=${PROJECT_ID}Descubre los IDs de la regla de reenvío y el servicio de Cloud Run en la región adecuada:
gcloud apphub discovered-services list \ --location=global \ --project=${PROJECT_ID} gcloud apphub discovered-services list \ --location=${REGION} \ --project=${PROJECT_ID}Toma nota del ID de la regla de reenvío y del servicio de Cloud Run.
Registra la regla de reenvío en la aplicación 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}Reemplaza
FRONTEND_IDpor el ID de la regla de reenvío.Registra el servicio de Cloud Run en la aplicación 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}Reemplaza
BACKEND_IDpor el ID del servicio de Cloud Run.
Terraform
Crea un archivo
application.tfy agrega el siguiente 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" } } }Este bloque usa el recurso
google_apphub_applicationpara crear una agrupación lógica de los componentes de la aplicación.En este ejemplo, se crea una aplicación global y se definen atributos para la gobernanza y la detección, como la importancia, el entorno y los propietarios. Puedes modificar esos valores para tu configuración de muestra.
Agrega el siguiente código a
application.tfpara descubrir tus recursos implementados:# 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}" }Las fuentes de datos de
google_apphub_discovered_serviceencuentran los nombres de recursos de tu infraestructura existente según sus URIs. Este paso permite que App Hub identifique los recursos específicos que deseas registrar como servicios.Agrega el siguiente código a
application.tfpara registrar los recursos descubiertos:# 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 }Los recursos
google_apphub_serviceregistran formalmente los recursos descubiertos en tu aplicación como servicios. En este paso, se vincula tu infraestructura con la aplicación que definiste en App Hub.Inicializa y aplica la configuración de Terraform:
terraform init terraform applyTerraform registra los recursos en tu aplicación
my-global-appen App Hub.
Opcional: Supervisa tu nueva aplicación
Después de definir tu aplicación en App Hub, puedes usar los productos integrados deGoogle Cloud para supervisar su estado y rendimiento:
Visualiza los datos operativos en Cloud Hub:
En la consola de Google Cloud , ve a la página principal del Centro de estadísticas.
En el selector de aplicaciones, elige la aplicación
my-global-app. En la página, se muestra un resumen del estado de tu aplicación. Para obtener más información, consulta la descripción general de Cloud Hub.
Consulta los paneles detallados en Application Monitoring:
Configura Google Cloud Observability para la supervisión de aplicaciones.
-
En la consola de Google Cloud , ve a la página Supervisión de aplicaciones:
Ir a Supervisión de aplicaciones
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.
En el selector de proyectos de la consola de Google Cloud , selecciona el proyecto de administración.
En la página Supervisión de aplicaciones, se muestran paneles predefinidos para tu aplicación. Para obtener más información, consulta Supervisa el estado y el rendimiento de la aplicación.
Para obtener instrucciones detalladas sobre cómo usar los paneles predefinidos y explorar tus datos de telemetría, consulta Cómo ver la telemetría de la aplicación.
Realiza una limpieza
Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.
- Cancela el registro de los servicios.
- Borra la aplicación global.
- Si usaste Terraform para implementar tu aplicación, ejecuta
terraform destroyen el directorio que contiene tus archivos de Terraform para desaprovisionar todos los recursos que creaste. - Opcional: Si creaste un proyecto nuevo para esta guía de inicio rápido, bórralo.