Créer une application à partir de ressources existantes
Ce guide de démarrage rapide vous explique comment organiser desressources existantes dans une application App Hub en les enregistrant en tant que services.Ce guide de démarrage rapide vous explique comment organiser des Google Cloud ressources existantes dans une application App Hub en les enregistrant en tant que services. Tout d'abord, vous déployez des exemples de composants, que vous utilisez ensuite pour définir une application Web globale dans App Hub.
Ce guide de démarrage rapide s'adresse aux utilisateurs qui souhaitent utiliser leur infrastructure existante pour gagner en visibilité et en contrôle opérationnel en regroupant les Google Cloud ressources dans des applications logiques.
Avant de commencer
Avant de commencer ce guide de démarrage rapide, procédez comme suit :
Choisissez votre modèle de configuration d'application. Ce guide de démarrage rapide suppose que vous avez défini une limite de gestion des applications et crée une application à l'aide du projet de gestion. Pour en savoir plus sur cette configuration de ressources, consultez le modèle de ressources App Hub.
Notez l'ID du projet de gestion à utiliser tout au long de ce document. Pour en savoir plus, consultez Trouver le nom, le numéro et l'ID du projet.
Vérifiez que les API suivantes sont activées dans le projet de gestion. Lorsque vous configurez un projet de gestion, la plupart des API dont vous avez besoin pour ce guide de démarrage rapide sont activées automatiquement.
- API Compute Engine (
compute.googleapis.com) - API Infrastructure Manager (
config.googleapis.com)
- API Compute Engine (
Rôles requis
Pour obtenir les autorisations nécessaires pour activer les API requises et créer un exemple d'application à partir de ressources existantes, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet de gestion :
-
Pour activer les API requises :
Administrateur de l'utilisation des services (
roles/serviceusage.serviceUsageAdmin) -
Pour obtenir un accès complet aux services requis :
- Administrateur App Hub (
roles/apphub.admin) - Administrateur Cloud Run (
roles/run.admin) - Administrateur de Compute (
roles/compute.admin) - Administrateur Cloud Infrastructure Manager (
roles/config.admin)
- Administrateur App Hub (
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Déployer des exemples de composants pour l'application
Vous devez d'abord déployer un ensemble de ressources d'exemple que vous utiliserez ultérieurement pour définir une application globale dans App Hub en les enregistrant en tant que composants d'application : Google Cloud
- Un service Cloud Run qui fait office de service de backend de l'application.
- Un équilibreur de charge d'application externe global qui fait office de service de frontend de l'application en dirigeant le trafic vers le service Cloud Run en tant que règle de transfert.
Procédez comme suit pour déployer ces ressources :
gcloud
Définissez les variables d'environnement requises :
export PROJECT_ID="PROJECT_ID" export REGION="REGION"Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet de gestion.REGION: région choisie pour les ressources, par exempleus-central1.
Déployez un exemple de service Cloud Run nommé
hello-run:gcloud run deploy hello-run \ --image=us-docker.pkg.dev/cloudrun/container/hello \ --allow-unauthenticated \ --region=${REGION} \ --project=${PROJECT_ID}Créez l'équilibreur de charge d'application externe global. Ce processus comprend les étapes suivantes :
Créez un groupe de points de terminaison du réseau (NEG) sans serveur appelé
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}Le NEG fait office de backend pour l'équilibreur de charge et pointe vers votre service
hello-run.Créez un service de backend pour gérer la distribution du trafic vers le NEG :
gcloud compute backend-services create hello-backend-service \ --global \ --load-balancing-scheme=EXTERNAL_MANAGED \ --project=${PROJECT_ID}Ajoutez le NEG sans serveur au service 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}Créez un mappage d'URL pour acheminer les requêtes entrantes vers le service de backend :
gcloud compute url-maps create hello-url-map \ --default-service=hello-backend-service \ --project=${PROJECT_ID}Créez un proxy HTTP pour recevoir les requêtes et les acheminer à l'aide du mappage d'URL :
gcloud compute target-http-proxies create hello-http-proxy \ --url-map=hello-url-map \ --project=${PROJECT_ID}Créez une règle de transfert globale :
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}Cette règle de transfert fournit une adresse IP publique et un port pour gérer les requêtes entrantes des utilisateurs et les redirige vers le proxy.
Terraform
Créez un fichier
main.tfet ajoutez le code suivant :# 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" }Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet de gestion.REGION: région choisie pour les ressources, par exempleus-central1.
Ce bloc définit le Google Cloud fournisseur et configure un service Cloud Run public à l'aide d'un exemple
hello-worldd'image de conteneur. Il inclut également une liaison de stratégie IAM pour autoriser les appels non authentifiés, ce qui rend le service accessible au public.Ajoutez le code suivant à votre fichier
main.tfpour créer l'équilibreur de charge d'application externe 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" }Ce bloc définit les composants suivants :
- Un groupe de points de terminaison du réseau (NEG) sans serveur, qui fait office de backend pour l'équilibreur de charge et pointe vers le service Cloud Run.
- Un service de backend qui dirige le trafic vers le NEG sans serveur.
- Un mappage d'URL pour acheminer les requêtes entrantes vers le service de backend.
- Un proxy HTTP pour recevoir les requêtes et les acheminer à l'aide du mappage d'URL.
- Une règle de transfert globale, qui fournit une adresse IP publique et un port pour gérer les requêtes entrantes des utilisateurs et les redirige vers le proxy.
Initialisez et appliquez la configuration Terraform :
terraform init terraform applyTerraform déploie les ressources dans votre projet.
Définir l'application dans App Hub
Après avoir déployé les ressources en tant que règle de transfert et service Cloud Run, procédez comme suit pour les regrouper dans une application App Hub en les enregistrant en tant que services de l'application :
Console
Accédez à la page Applications depuis App Hub :
Cliquez sur Créer une application.
Dans l'onglet Détails de l'application, sélectionnez Global comme emplacement de l'application.
Saisissez
my-global-appdans le champ Nom de l'application.Vous pouvez également ajouter un nom à afficher et une description pour l'application.
Cliquez sur Continuer.
Dans l'onglet Ressources de l'application, parcourez les ressources d'infrastructure et cochez les cases de la règle de transfert et du service Cloud Run.
Cliquez sur Continuer.
Dans l'onglet Attributs et propriétaires , vous pouvez ajouter des attributs pour l' application, tels que la criticité, l'environnement et les propriétaires de l'application.
Vous pouvez choisir d'utiliser les mêmes attributs et propriétaires pour les ressources que vous enregistrez dans l'application ou les définir ultérieurement.
Cliquez sur Créer.
Une fois l'application créée, la page Applications affiche ses détails, y compris les ressources que vous avez enregistrées en tant que services.
gcloud
Créez l'application :
gcloud apphub applications create my-global-app \ --location=global \ --display-name="My Global Application" \ --project=${PROJECT_ID}Découvrez les ID de la règle de transfert et du service Cloud Run dans la région appropriée :
gcloud apphub discovered-services list \ --location=global \ --project=${PROJECT_ID} gcloud apphub discovered-services list \ --location=${REGION} \ --project=${PROJECT_ID}Notez l'ID de la règle de transfert et du service Cloud Run.
Enregistrez la règle de transfert dans l'application globale :
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}Remplacez
FRONTEND_IDpar l'ID de la règle de transfert.Enregistrez le service Cloud Run dans l'application globale :
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}Remplacez
BACKEND_IDpar l'ID du service Cloud Run.
Terraform
Créez un fichier
application.tfet ajoutez le code suivant :# 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" } } }Ce bloc utilise la
google_apphub_applicationressource pour créer un regroupement logique des composants de l'application.Cet exemple crée une application globale et définit des attributs pour la gouvernance et la détectabilité, tels que la criticité, l'environnement et les propriétaires. Vous pouvez modifier ces valeurs pour votre exemple de configuration.
Ajoutez le code suivant à
application.tfpour découvrir vos ressources déployées :# 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}" }Les sources de données recherchent les noms de ressources de votre infrastructure existante en fonction de leurs URI.
google_apphub_discovered_serviceCette étape permet à App Hub d'identifier les ressources spécifiques que vous souhaitez enregistrer en tant que services.Ajoutez le code suivant à
application.tfpour enregistrer les ressources découvertes :# 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 }Les
google_apphub_serviceressources enregistrent officiellement les ressources découvertes dans votre application en tant que services. Cette étape associe votre infrastructure à l'application que vous avez définie dans App Hub.Initialisez et appliquez la configuration Terraform :
terraform init terraform applyTerraform enregistre les ressources dans votre application
my-global-appdans App Hub.
Facultatif : Surveiller votre nouvelle application
Après avoir défini votre application dans App Hub, vous pouvez utiliser des produits intégrés Google Cloud pour surveiller son état et ses performances :
Afficher les données opérationnelles dans Cloud Hub:
Dans la Google Cloud console, accédez à la page Accueil de Cloud Hub.
Dans le sélecteur d'applications, choisissez l'application
my-global-app. La page affiche un résumé de l'état de votre application. Pour en savoir plus, consultez la présentation de Cloud Hub.
Afficher des tableaux de bord détaillés dans la surveillance des applications :
Configurez Google Cloud Observability pour la surveillance des applications.
-
Dans la Google Cloud console, accédez à la page Surveillance des applications :
Accéder à la page Surveillance des applications
Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.
Dans le sélecteur de projet de la Google Cloud console, sélectionnez le projet de gestion.
La page Surveillance des applications affiche des tableaux de bord prédéfinis pour votre application. Pour en savoir plus, consultez Surveiller l'état et les performances des applications.
Pour obtenir des instructions détaillées sur l'utilisation des tableaux de bord prédéfinis et l'exploration de vos données de télémétrie, consultez Afficher la télémétrie des applications.
Libérer de l'espace
Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre Google Cloud compte pour les ressources utilisées sur cette page, procédez comme suit :
- Annulez l'enregistrement des services.
- Supprimez l'application globale.
- Si vous avez utilisé Terraform pour déployer votre application, exécutez
terraform destroydans le répertoire contenant vos fichiers Terraform pour annuler le provisionnement de toutes les ressources que vous avez créées. - Facultatif : Si vous avez créé un projet pour ce guide de démarrage rapide, supprimez-le.