Créer une application à partir de ressources existantes
Ce guide de démarrage rapide vous explique comment organiser les ressources Google Cloud existantes dans une application App Hub en les enregistrant en tant que services. Tout d'abord, vous déployez des composants exemples, 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 ressources Google Cloud 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 démarrage rapide suppose que vous avez défini une limite de gestion des applications au niveau du dossier et crée une application à l'aide du projet de gestion du dossier. 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 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 Service Usage (
roles/serviceusage.serviceUsageAdmin) -
Pour accéder à l'ensemble des 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 composants exemples pour l'application
Vous devez d'abord déployer un ensemble de ressources Google Cloud que vous utiliserez ultérieurement pour définir une application globale dans App Hub en les enregistrant en tant que composants d'application :
- Un service Cloud Run qui sert de service de backend de l'application.
- Un équilibreur de charge d'application externe global qui sert de service d'interface de l'application en redirigeant le trafic vers le service Cloud Run en tant que règle de transfert.
Pour déployer ces ressources, procédez comme suit :
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 de votre choix 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 sert de backend à l'équilibreur de charge et pointe vers votre service
hello-run.Créez un service de backend pour gérer la façon dont le trafic est distribué au 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 utilisateur entrantes et les rediriger 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 de votre choix pour les ressources, par exempleus-central1.
Ce bloc définit le fournisseur Google Cloud et configure un service Cloud Run public à l'aide d'un exemple d'image de conteneur
hello-world. 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 sert de backend à l'équilibreur de charge et pointe vers le service Cloud Run.
- Un service de backend qui dirige le trafic vers le NEG sans serveur.
- 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.
- Règle de transfert globale, qui fournit une adresse IP publique et un port pour gérer les requêtes utilisateur entrantes et les rediriger 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.
Sélectionnez Global comme emplacement de l'application.
Saisissez
my-global-apppour le nom de l'application, puis cliquez sur Continuer.Vous pouvez éventuellement ajouter un nom à afficher, une criticité, un environnement et des propriétaires.
Cliquez sur Créer.
Dans l'onglet Services et charges de travail, cliquez sur Enregistrer un service/une charge de travail.
Sélectionnez la règle de transfert, nommez-la
frontend-service, puis cliquez sur Enregistrer.Sélectionnez le service Cloud Run, nommez-le
backend-service, puis cliquez sur Enregistrer.
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 ressource
google_apphub_applicationpour 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
google_apphub_discovered_servicetrouvent les noms de ressources de votre infrastructure existante en fonction de leurs URI. Cette é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étectées :# 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 ressources
google_apphub_serviceenregistrent formellement 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 les produitsGoogle Cloud intégrés pour surveiller son état et ses performances :
Afficher les données opérationnelles dans Cloud Hub :
Dans la console Google Cloud , 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écapitulatif 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 Application Monitoring :
Configurez Google Cloud Observability pour la surveillance des applications.
-
Dans la console Google Cloud , accédez à la page Surveillance des applications :
Accéder à 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 console Google Cloud , 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.
Effectuer un nettoyage
Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre compte Google Cloud , 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 supprimer toutes les ressources que vous avez créées. - Facultatif : Si vous avez créé un projet pour ce démarrage rapide, supprimez-le.