Anwendung aus vorhandenen Ressourcen erstellen

In dieser Kurzanleitung erfahren Sie, wie Sie vorhandene Google Cloud Ressourcen in einer App Hub-Anwendung organisieren, indem Sie sie als Dienste registrieren. Zuerst stellen Sie Beispielkomponenten bereit, mit denen Sie dann eine globale Webanwendung in App Hub definieren.

Diese Kurzanleitung richtet sich an Nutzer, die ihre vorhandene Infrastruktur nutzen möchten, um die Sichtbarkeit und betriebliche Kontrolle zu verbessern, indem sie Google Cloud Ressourcen in logischen Anwendungen gruppieren.

Hinweis

Führen Sie vor Beginn dieser Kurzanleitung folgende Schritte aus:

  1. Wählen Sie Ihr Anwendungssetupmodell aus. In dieser Kurzanleitung wird davon ausgegangen, dass Sie eine Grenze für die Anwendungsverwaltung definiert haben, und es wird eine Anwendung mit dem Verwaltungsprojekt erstellt. Weitere Informationen zu dieser Ressourcenkonfiguration finden Sie unter App Hub-Ressourcenmodell.

  2. Notieren Sie sich die Projekt-ID des Verwaltungsprojekts, die in diesem Dokument verwendet wird. Weitere Informationen finden Sie unter Projektname, ‑nummer und ‑-ID ermitteln.

  3. Prüfen Sie, ob die folgenden APIs im Verwaltungsprojekt aktiviert sind. Wenn Sie ein Verwaltungsprojekt einrichten, werden die meisten APIs, die Sie für diese Kurzanleitung benötigen, automatisch aktiviert.

    • Compute Engine API (compute.googleapis.com)
    • Infrastructure Manager API (config.googleapis.com)

    APIs aktivieren

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Verwaltungsprojekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aktivieren der erforderlichen APIs und zum Erstellen einer Beispielanwendung aus vorhandenen Ressourcen benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Beispielkomponenten für die Anwendung bereitstellen

Zuerst müssen Sie eine Reihe von Beispiel Google Cloud ressourcen bereitstellen, die Sie später verwenden, um eine globale Anwendung in App Hub zu definieren, indem Sie sie als Anwendungskomponentenregistrieren:

Führen Sie die folgenden Schritte aus, um diese Ressourcen bereitzustellen:

gcloud

  1. Legen Sie die erforderlichen Umgebungsvariablen fest:

    export PROJECT_ID="PROJECT_ID"
    export REGION="REGION"
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Verwaltungsprojekts.
    • REGION: die von Ihnen ausgewählte Region für Ressourcen, z. B. us-central1.
  2. Stellen Sie einen Beispiel-Cloud Run-Dienst namens hello-run bereit:

    gcloud run deploy hello-run \
        --image=us-docker.pkg.dev/cloudrun/container/hello \
        --allow-unauthenticated \
        --region=${REGION} \
        --project=${PROJECT_ID}
    
  3. Erstellen Sie den globalen externen Application Load Balancer. Dieser Vorgang umfasst folgende Schritte:

    1. Erstellen Sie eine serverlose Netzwerk-Endpunktgruppe (NEG) namens 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}
      

      Die NEG fungiert als Backend für den Load Balancer und verweist auf Ihren hello-run-Dienst.

    2. Erstellen Sie einen Backend-Dienst, um zu verwalten, wie Traffic an die NEG verteilt wird:

      gcloud compute backend-services create hello-backend-service \
          --global \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --project=${PROJECT_ID}
      
    3. Fügen Sie dem Backend-Dienst die serverlose NEG hinzu:

      gcloud compute backend-services add-backend hello-backend-service \
          --global \
          --network-endpoint-group=hello-run-neg \
          --network-endpoint-group-region=${REGION} \
          --project=${PROJECT_ID}
      
    4. Erstellen Sie eine URL-Zuordnung, um eingehende Anfragen an den Backend-Dienst weiterzuleiten:

      gcloud compute url-maps create hello-url-map \
          --default-service=hello-backend-service \
          --project=${PROJECT_ID}
      
    5. Erstellen Sie einen HTTP-Proxy, um Anfragen zu empfangen und sie mithilfe der URL-Zuordnung weiterzuleiten:

      gcloud compute target-http-proxies create hello-http-proxy \
          --url-map=hello-url-map \
          --project=${PROJECT_ID}
      
    6. Erstellen Sie eine globale Weiterleitungsregel:

      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}
      

      Diese Weiterleitungsregel stellt eine öffentliche IP-Adresse und einen Port bereit, um eingehende Nutzeranfragen zu verarbeiten und sie an den Proxy weiterzuleiten.

Terraform

  1. Erstellen Sie eine main.tf-Datei und fügen Sie den folgenden Code hinzu:

    # 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"
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Verwaltungsprojekts.
    • REGION: die von Ihnen ausgewählte Region für Ressourcen, z. B. us-central1.

    Dieser Block definiert den Google Cloud Bereitsteller und konfiguriert einen öffentlichen Cloud Run-Dienst mit einem Beispiel-hello-world Container-Image. Er enthält auch eine IAM-Richtlinienbindung, um nicht authentifizierte Aufrufe zuzulassen, wodurch der Dienst öffentlich zugänglich wird.

  2. Fügen Sie Ihrer main.tf-Datei den folgenden Code hinzu, um den globalen externen Application Load Balancer zu erstellen:

    # 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"
    }
    

    Dieser Block definiert die folgenden Komponenten:

    • Eine serverlose Netzwerk-Endpunktgruppe (NEG), die als Backend für den Load Balancer fungiert und auf den Cloud Run-Dienst verweist.
    • Ein Backend-Dienst, der Traffic an die serverlose NEG weiterleitet.
    • Eine URL-Zuordnung, um eingehende Anfragen an den Backend-Dienst weiterzuleiten.
    • Ein HTTP-Proxy, um Anfragen zu empfangen und sie mithilfe der URL-Zuordnung weiterzuleiten.
    • Eine globale Weiterleitungsregel, die eine öffentliche IP-Adresse und einen Port bereitstellt, um eingehende Nutzeranfragen zu verarbeiten und sie an den Proxy weiterzuleiten.
  3. Initialisieren und übernehmen Sie die Terraform-Konfiguration:

    terraform init
    terraform apply
    

    Terraform stellt die Ressourcen in Ihrem Projekt bereit.

Anwendung in App Hub definieren

Nachdem Sie die Ressourcen als Weiterleitungsregel und Cloud Run Dienst bereitgestellt haben, führen Sie die folgenden Schritte aus, um sie in einer App Hub-Anwendung zu gruppieren, indem Sie sie als Dienste der Anwendung registrieren:

Console

  1. Rufen Sie in App Hub die Seite Anwendungen auf:

    Zu „Anwendungen“

  2. Klicken Sie auf Anwendung erstellen.

  3. Wählen Sie auf dem Tab Anwendungsdetails die Option Global als Anwendungsstandort aus.

  4. Geben Sie unter Anwendungsname my-global-app ein.

  5. Optional können Sie einen Anzeigenamen und eine Beschreibung für die Anwendung hinzufügen.

  6. Klicken Sie auf Weiter.

  7. Suchen Sie auf dem Tab Anwendungsressourcen nach Infrastrukturressourcen und aktivieren Sie die Kontrollkästchen für die Weiterleitungsregel und den Cloud Run-Dienst.

  8. Klicken Sie auf Weiter.

  9. Auf dem Tab Attribute und Inhaber können Sie Attribute für die Anwendung hinzufügen, z. B. Wichtigkeit, Umgebung und Anwendungsbesitzer.

    Sie können dieselben Attribute und Inhaber für die Ressourcen verwenden, die Sie für die Anwendung registrieren, oder diese später definieren.

  10. Klicken Sie auf Erstellen.

Wenn die Anwendung erstellt wurde, werden auf der Seite Anwendungen die Details angezeigt, einschließlich der Ressourcen, die Sie als Dienste registriert haben.

gcloud

  1. Erstellen Sie die Anwendung:

    gcloud apphub applications create my-global-app \
        --location=global \
        --display-name="My Global Application" \
        --project=${PROJECT_ID}
    
  2. Suchen Sie die IDs für die Weiterleitungsregel und den Cloud Run-Dienst in der entsprechenden Region:

    gcloud apphub discovered-services list \
        --location=global \
        --project=${PROJECT_ID}
    
    gcloud apphub discovered-services list \
        --location=${REGION} \
        --project=${PROJECT_ID}
    

    Notieren Sie sich die ID der Weiterleitungsregel und des Cloud Run-Dienstes.

  3. Registrieren Sie die Weiterleitungsregel für die globale Anwendung:

    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}
    

    Ersetzen Sie FRONTEND_ID durch die ID der Weiterleitungsregel.

  4. Registrieren Sie den Cloud Run-Dienst für die globale Anwendung:

    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}
    

    Ersetzen Sie BACKEND_ID durch die ID des Cloud Run-Dienstes.

Terraform

  1. Erstellen Sie eine application.tf-Datei und fügen Sie den folgenden Code hinzu:

    # 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"
        }
      }
    }
    

    Dieser Block verwendet die google_apphub_application Ressource, um eine logische Gruppierung von Anwendungskomponenten zu erstellen.

    In diesem Beispiel wird eine globale Anwendung erstellt und Attribute für Governance und Auffindbarkeit definiert, z. B. Wichtigkeit, Umgebung und Inhaber. Sie können diese Werte für Ihre Beispielkonfiguration ändern.

  2. Fügen Sie application.tf den folgenden Code hinzu, um Ihre bereitgestellten Ressourcen zu ermitteln:

    # 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}"
    }
    

    Die google_apphub_discovered_service Datenquellen suchen die Ressourcennamen Ihrer vorhandenen Infrastruktur anhand ihrer URIs. Mit diesem Schritt kann App Hub die spezifischen Ressourcen identifizieren, die Sie als Dienste registrieren möchten.

  3. Fügen Sie application.tf den folgenden Code hinzu, um die ermittelten Ressourcen zu registrieren:

    # 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
    }
    

    Die google_apphub_service Ressourcen registrieren die ermittelten Ressourcen offiziell als Dienste in Ihrer Anwendung. Mit diesem Schritt wird Ihre Infrastruktur mit der Anwendung verknüpft, die Sie in App Hub definiert haben.

  4. Initialisieren und übernehmen Sie die Terraform-Konfiguration:

    terraform init
    terraform apply
    

    Terraform registriert die Ressourcen für Ihre my-global-app-Anwendung in App Hub.

Optional: Neue Anwendung beobachten

Nachdem Sie Ihre Anwendung in App Hub definiert haben, können Sie integrierte Google Cloud Produkte verwenden, um ihren Zustand und ihre Leistung zu beobachten:

Bereinigen

Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden:

  1. Heben Sie die Registrierung der Dienste auf.
  2. Löschen Sie die globale Anwendung.
  3. Wenn Sie Terraform zum Bereitstellen Ihrer Anwendung verwendet haben, führen Sie terraform destroy in dem Verzeichnis aus, das Ihre Terraform-Dateien enthält, um die Bereitstellung aller von Ihnen erstellten Ressourcen aufzuheben.
  4. Optional: Wenn Sie für diese Kurzanleitung ein neues Projekt erstellt haben, löschen Sie das Projekt.

Nächste Schritte