Anwendung anhand von Messwerten analysieren

In dieser Kurzanleitung erfahren Sie, wie Sie mit Cloud Deploy Ihren bereitgestellten Cloud Run-Dienst anhand von Messwerten aus Google Cloud Observability analysieren können, um sicherzustellen, dass die Anwendung wie erwartet funktioniert.

Dieser Schnellstart erläutert folgende Schritte:

  1. Einen Cloud Run-Dienst erstellen und bereitstellen.

    In diesem Fall verwenden Sie Cloud Deploy nicht für die Bereitstellung.

  2. Eine Verfügbarkeitsdiagnose in Google Cloud Observability erstellen.

    Mit dieser Diagnose wird Ihr Cloud Run-Dienst überwacht, um sicherzustellen, dass er ausgeführt wird.

  3. Eine Benachrichtigungsrichtlinie in Cloud Monitoring erstellen.

    Standardmäßig können bei der Cloud Deploy-Analyse viele Arten von Messwerten aus Google Cloud Observability verwendet werden. Mit dieser Richtlinie wird eine Benachrichtigung erstellt, wenn eine Verfügbarkeitsdiagnose ein Problem anzeigt.

  4. Eine Skaffold-Konfiguration erstellen, um den Cloud Run-Dienst zu identifizieren.

  5. Lieferpipeline und Ziel für Cloud Deploy definieren.

    Diese Pipeline enthält nur eine Phase und verwendet nur ein Ziel. Außerdem enthält sie die Definition für einen Analysejob.

  6. Einen Release erstellen, der automatisch für das Ziel bereitgestellt wird.

    Nachdem die Anwendung bereitgestellt wurde, wird die Analyse als Job in dem Roll-out ausgeführt.

    Der Dienst sollte erfolgreich für das Ziel bereitgestellt werden, der Roll-out sollte jedoch fehlschlagen, da die Benachrichtigungsrichtlinie eine Benachrichtigung generiert.

  7. Die Cloud Run-Dienstdefinition ändern, um die Anzahl der Instanzen für den Dienst zu erhöhen, und einen neuen Release erstellen.

    Diesmal wird der Dienst erfolgreich bereitgestellt und der Roll-out wird abgeschlossen.

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie noch kein Google Cloud-Konto haben, erstellen Sie ein Konto, um zu sehen, wie sich unsere Produkte in realen Szenarien schlagen. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  6. Installieren Sie die Google Cloud CLI.

  7. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  8. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  9. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  10. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  11. Verify that billing is enabled for your Google Cloud project.

  12. Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  13. Installieren Sie die Google Cloud CLI.

  14. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  15. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init

Erforderliche Rollen

Damit das Cloud Deploy-Dienstkonto die erforderlichen Berechtigungen zum Ausführen von Cloud Deploy-Vorgängen und zum Bereitstellen in Cloud Run hat, bitten Sie Ihren Administrator, dem Cloud Deploy-Dienstkonto die folgenden IAM-Rollen für Ihr Projekt zu gewähren:

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

Ihr Administrator kann dem Cloud Deploy-Dienstkonto möglicherweise auch die erforderlichen Berechtigungen über benutzerdefinierte Rollen oder andere vordefinierte Rollen erteilen.

Weitere Informationen zum Cloud Deploy-Dienstkonto

Cloud Run-Dienst bereitstellen

In dieser Kurzanleitung wird eine Benachrichtigungsrichtlinie verwendet, für die der Cloud Run-Dienst bereits vorhanden sein muss. Daher stellen wir hier einen bereit und definieren in einem späteren Abschnitt eine service.yaml-Datei mit demselben Dienstnamen.

Führen Sie den folgenden Befehl aus, um den ersten Dienst zu erstellen:

gcloud run deploy my-analysis-run-service \
  --image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a \
  --project=PROJECT_ID \
  --region=us-central1 \
  --allow-unauthenticated

Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

Verfügbarkeitsdiagnose in Google Cloud Observability erstellen

Mit dieser Verfügbarkeitsdiagnose wird Ihr ausgeführter Dienst überwacht, um zu bestätigen, dass er ausgeführt wird. In einem späteren Abschnitt erstellen Sie eine Benachrichtigungsrichtlinie für Google Cloud Observability, die eine Benachrichtigung generiert, wenn für Ihren Dienst mindestens eine verfügbare Instanz ausgeführt wird.

  1. Führen Sie den folgenden Befehl aus, um die Verfügbarkeitsdiagnose zu erstellen:

    gcloud monitoring uptime create my-analysis-run-service-cloud-run-uptime-check \
      --resource-type=cloud-run-revision \
      --resource-labels="project_id=PROJECT_ID,location=us-central1,service_name=my-analysis-run-service" \
      --project=PROJECT_ID \
      --protocol=https \
      --path="/" \
      --port=443 \
      --period=1 \
      --timeout=10 \
      --service-agent-auth="oidc-token" \
      --status-classes="2xx"
    
  2. Kopieren Sie die ID der Verfügbarkeitsdiagnose.

    Die Ausgabe des gerade ausgeführten Befehls enthält die ID.

Skaffold-Konfiguration und Dienstdefinition vorbereiten

In dieser Kurzanleitung erstellen Sie eine skaffold.yaml-Datei, die das Manifest identifiziert, das zum Bereitstellen des Cloud Run-Beispieldienstes verwendet werden soll. Außerdem definieren Sie die service.yaml-Datei, die den Cloud Run-Dienst selbst definiert.

  1. Öffnen Sie ein Terminalfenster.

  2. Erstellen Sie ein neues Verzeichnis und wechseln Sie zu diesem.

mkdir deploy-analysis-run-quickstart
cd deploy-analysis-run-quickstart
  1. Erstellen Sie eine Datei mit dem Namen skaffold.yaml und mit folgendem Inhalt:
apiVersion: skaffold/v4beta7
kind: Config
manifests:
  rawYaml:
  - service.yaml
deploy:
  cloudrun: {}

Weitere Informationen zu dieser Konfigurationsdatei finden Sie in der skaffold.yaml Referenz.

  1. Erstellen Sie eine Datei mit dem Namen service.yaml und mit folgendem Inhalt:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: my-analysis-run-service
  annotations:
    run.googleapis.com/scalingMode: manual
    run.googleapis.com/manualInstanceCount: 0
spec:
  template:
    spec:
      containers:
      - image: my-app-image

Diese Datei ist eine Cloud Run-Dienstdefinition, die zum Bereitstellen der Anwendung verwendet wird. Das bereitzustellende Container-Image wird hier als a Platzhalter, my-app-image, festgelegt, der beim Erstellen des Release durch das spezifische Image ersetzt wird, wenn Sie das Release erstellen.

Der Skalierungsmodus ist auf „Manuell“ und die Anzahl der Instanzen auf 0 festgelegt. Das bedeutet, dass der bereitgestellte Dienst keinen Traffic empfangen kann und keine Instanzen ausgeführt werden, was eine Benachrichtigung auslöst. Sie konfigurieren diese Benachrichtigung als Nächstes.

Benachrichtigungsrichtlinie erstellen

In dieser Kurzanleitung wird eine Benachrichtigungsrichtlinie für Google Cloud Observability verwendet. Diese Benachrichtigungsrichtlinie generiert eine Benachrichtigung, wenn die Verfügbarkeitsdiagnose für den Cloud Run-Dienst, die Sie zuvor erstellt haben, fehlschlägt.

  1. Erstellen Sie im Verzeichnis deploy-analysis-run-quickstart eine Datei mit dem Namen policy.yaml und mit folgendem Inhalt:

    displayName: Cloud Run service uptime check
    userLabels:
      policy-for: analysis-run-pipeline
    combiner: OR
    conditions:
    - displayName: Failure of uptime check UPTIME_ID
      conditionThreshold:
        filter: metric.type="monitoring.googleapis.com/uptime_check/check_passed" AND metric.label.check_id="UPTIME_ID" AND resource.type="cloud_run_revision"
        aggregations:
        - alignmentPeriod: 60s
          crossSeriesReducer: REDUCE_COUNT_FALSE
          groupByFields:
          - resource.label.*
          perSeriesAligner: ALIGN_NEXT_OLDER
        comparison: COMPARISON_GT
        duration: 60s
        thresholdValue: 1.0
    

    Ersetzen Sie UPTIME_ID durch die ID der zuvor erstellten Verfügbarkeitsdiagnose vorher.

  2. Führen Sie den folgenden Befehl aus, um die Richtlinie zu erstellen:

    gcloud monitoring policies create \
      --policy-from-file=policy.yaml\
      --project=PROJECT_ID
    

    Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

  3. Kopieren Sie die Richtlinien-ID aus der Ausgabe des gerade ausgeführten Befehls.

    Kopieren Sie diesmal die gesamte Ressourcen-ID einschließlich des Pfads. Sie verwenden diese ID im nächsten Abschnitt in der Analysekonfiguration in Ihrer Lieferpipeline.

Lieferpipeline und Ziel erstellen

Diese Lieferpipeline hat eine Phase für ein Ziel: analysis-staging.

  1. Erstellen Sie im Verzeichnis deploy-analysis-run-quickstart eine neue Datei mit dem Namen clouddeploy.yaml und mit folgendem Inhalt:

    apiVersion: deploy.cloud.google.com/v1
    kind: DeliveryPipeline
    metadata:
      name: deploy-analysis-demo-app-run
    description: main application pipeline
    serialPipeline:
      stages:
      - targetId: analysis-staging
        profiles: []
        strategy:
          standard:
            analysis:
              duration: 300s
              googleCloud:
                alertPolicyChecks: