Serverlose Pipelines mit Active Assist verwenden

Last reviewed 2021-06-09 UTC

Dieses Dokument richtet sich an Unternehmensarchitekten und Softwareentwickler, die eine Automatisierungspipeline erstellen möchten, um Active Assist in ihrer Google Cloud-Organisation zu verwenden. Das Dokument ist Teil einer Reihe, in der Architekturmuster erläutert werden, mit denen Unternehmen ihren Cloud-Fußabdruck mit Active Assist umfassend optimieren können. Die Reihe besteht aus folgenden Teilen:

In dieser Anleitung erfahren Sie, wie Sie mit serverlosen Technologien von Google Cloud eine Automatisierungspipeline erstellen, um Active Assist-Empfehlungen abzurufen und zu verarbeiten. Die Empfehlungen basieren auf den Geschäftsregeln, die von Ihrem Unternehmen festgelegt wurden. Die Automatisierungspipeline, die Sie in dieser Anleitung einrichten, hilft Ihnen bei der Arbeit mit Active Assist in großem Umfang, während Sie gleichzeitig einen teamgeführten Überprüfungs- und Aktivierungsprozess verfolgen. Dieser Ansatz ist nützlich, wenn Ihr Unternehmen die Verwendung des Active Assist-Portfolios skalieren möchte, aber die Kontrolle über den Überprüfungs- und Aktivierungsprozess innerhalb von Teams behalten soll. Es bietet eine Alternative zur Verwendung einer CI/CD-Pipeline (Continuous Integration und Continuous Delivery).

Die in dieser Anleitung gezeigte Architektur ist generisch und Sie können sie auf andere serverlose Produkte erweitern. In dieser Anleitung wird davon ausgegangen, dass Sie mit den folgenden Google Cloud-Technologien vertraut sind:

Damit Sie diese Anleitung abschließen können, benötigen Sie ein Konto für Slack oder ein ähnliches Tool für Benachrichtigungen oder Ticketverarbeitung. Das Tool muss auf Ihrem Computer eingerichtet und einsatzbereit sein.

Architektur

Da die in dieser Anleitung gezeigte Architektur modular ist, können Sie die Benachrichtigungskomponente an die Anforderungen Ihres Unternehmens anpassen. In dieser Anleitung wird gezeigt, wie Benachrichtigungen generiert und an Slack gesendet werden. Sie können Benachrichtigungen auch an Pub/Sub oder ein anderes Tool zur Benachrichtigungs- oder Ticketverarbeitung senden.

Im folgenden Diagramm sehen Sie die Komponenten, die Sie in dieser Anleitung verwenden:

Serverlose Pipeline.

Die Architektur besteht aus folgenden Komponenten:

  • Einem Cloud Run-Dienst, der in festen Intervallen von einem Planer ausgelöst wird. Der Dienst ruft die Recommender APIs auf, indem er die Metadaten (Projekt-IDs und Recommender-Typen) liest, die in einer Firestore-Sammlung definiert sind und aufbewahrt werden.
  • Einem Pub/Sub-Thema, in das die Active Assist-Empfehlungen verschoben werden und in dem sie verarbeitet werden.
  • Einem zweiten Cloud Run-Dienst, der Active Assist-Empfehlungen parst. Dieser Dienst bestimmt, wie Empfehlungen basierend auf den von Ihrem Unternehmen definierten Geschäftsregeln verarbeitet und in einer Firestore-Sammlung gespeichert werden.
  • Zwei Firestore-Sammlungen zum Speichern der Geschäftsmetadaten und der Geschäftsregeln. Die Firestore-Sammlungen funktionieren so:
    • In der ersten Sammlung werden die geschäftlichen Metadaten gespeichert, die für den Abruf von Active Assist-Empfehlungen relevant sind. In dieser Anleitung werden die Attribute recommendation type, Google Cloud project IDs und locations als geschäftliche Metadaten verwendet. Diese Attribute werden vom Cloud Run-Dienst recommendation-collector verwendet, um zu bestimmen, welche Empfehlungstypen abgerufen werden.
    • Die zweite Sammlung speichert Geschäftsregeln, die bei der Verarbeitung von Empfehlungen angewendet werden.

Ziele

  • Erstellen Sie einen Cloud Run-Beispieldienst, um Active Assist-Empfehlungen für ein Beispielprojekt abzurufen und per Push in ein Pub/Sub-Thema zu übertragen.
  • Erstellen Sie zwei Firestore-Sammlungen, um Beispielmetadaten bzw. Geschäftsregeln zu speichern.
  • Erstellen Sie einen zweiten Cloud Run-Dienst, um Empfehlungen entsprechend den in dieser Anleitung definierten Beispielregeln für das Unternehmen zu verarbeiten.
  • Erstellen Sie einen Slack-Kanal, an den der Cloud Run-Dienst Beispiele für Active Assist-Beispielempfehlungen sendet.
  • Testen Sie die End-to-End-Pipeline mit Active Assist-Beispielempfehlungen.

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.

Hinweis

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Select or create a Google Cloud project.

  3. Notieren Sie sich die Google Cloud-Projekt-ID für das Empfehlungsmanagerprojekt. Sie benötigen diese ID im nächsten Abschnitt zum Einrichten der Umgebung.
  4. Enable the Cloud Build, Firestore, App Engine, Pub/Sub, Cloud Run, Cloud Scheduler und Cloud Source Repositories APIs.

    Enable the APIs

    Bei dieser Anleitung verwenden Sie die Standardanmeldedaten für Anwendungen. Wenn Sie aufgefordert werden, Anmeldedaten auf der Seite Anmeldedaten zu Ihrem Projekt hinzufügen zu erstellen, klicken Sie auf Abbrechen.
  5. Make sure that billing is enabled for your Google Cloud project.

  6. Erstellen Sie Folgendes:
    • Einen Slack-Beispielkanal
    • Eine Slack-Beispielanwendung und einen eingehenden Webhook zum Empfangen von Benachrichtigungen, die von einer Engine namens recommendation-rules-engine generiert wurden. Sie richten die Engine später in dieser Anleitung ein.
    Weitere Informationen finden Sie unter Slack-Kanal erstellen und Nachrichten mit eingehenden Webhooks senden.

    Wenn Sie eine Slack-Anwendung und eine eingehende Webhook-URL erstellt haben, notieren Sie sich die URL, da Sie sie später in dieser Anleitung benötigen.

Serverlose Pipeline erstellen

In diesem Abschnitt erstellen Sie die Komponenten, die Sie zum Erstellen der serverlosen Pipeline benötigen. Die Plattform generiert Active Assist-Empfehlungen basierend auf Nutzungsmustern und Systemmesswerten. Je nach generierten Empfehlungen kann jede Empfehlungskategorie einen anderen Standardzeitraum in der Vergangenheit verwenden, um Nutzungsdaten und Messwerte zu analysieren.

Wenn Sie ein Google Cloud-Beispielprojekt mit vorhandenen Ressourcen und Active Assist-Empfehlungen haben, können Sie die Pipeline ausführen, um diese Empfehlungen zu verarbeiten, nachdem Sie die entsprechenden Änderungen am bereitgestellten Beispielcode vorgenommen haben.

Firestore-Sammlungen erstellen

In diesem Abschnitt erstellen Sie zwei Firestore-Sammlungen. Die erste Sammlung activeassist-metadata speichert die Geschäftsmetadaten, die für das Abrufen von Active Assist-Empfehlungen relevant sind. In der zweiten Sammlung activeassist-business-rules werden die Geschäftsregeln gespeichert, die angewendet werden, wenn die Pipeline Empfehlungen verarbeitet.

Wenn Active Assist-Empfehlungen basierend auf den Geschäftsregeln in der Firestore-Sammlung geparst werden, wird entweder eine Benachrichtigung generiert und gesendet oder die Empfehlung wird automatisch auf die entsprechende Google Cloud-Ressource angewendet.

activeassist-metadata-Sammlung erstellen

  1. Rufen Sie in der Google Cloud Console die Seite Firestore auf.

    Firestore öffnen

  2. Erstellen Sie eine Firestore-Datenbank, falls Sie noch keine haben. Wenn Sie bereits eine Firestore-Datenbank haben, fahren Sie mit dem nächsten Schritt fort.

    Erstellen Sie die Datenbank:

    1. Klicken Sie auf Nativen Modus auswählen, um Firestore zu aktivieren.
    2. Wählen Sie einen Standort in der Nähe der Region aus, in der Ihre Cloud Run-Dienste ausgeführt werden.
    3. Klicken Sie auf Datenbank erstellen. Es dauert einige Augenblicke, bis die Konfiguration abgeschlossen ist.
  3. Klicken Sie auf der Firestore-Seite auf Sammlung starten.

  4. Geben Sie im Feld Sammlungs-ID Folgendes ein: activeassist-metadata.

  5. Füllen Sie die Felder wie in der folgenden Tabelle dargestellt aus. Klicken Sie auf Feld hinzufügen, um das nächste Feld hinzuzufügen.

    Feldname Feldtyp Feldwert Hinweis
    project string Stub-Project-ID In dieser Anleitung wird ein Stub für den Feldwert verwendet. Wenn Sie Empfehlungen aus einem vorhandenen Google Cloud-Projekt verwenden möchten, geben Sie stattdessen die Projekt-ID ein.
    locations array global Einige Empfehlungen können regions- oder zonenspezifisch sein, z. B. Empfehlungen zur VM-Größenanpassung. Andere Empfehlungen sind global, z. B. IAM-Empfehlungen.
    recommenderType string google.iam.policy.Recommender Nicht zutreffend.

  6. Wenn die Felder ausgefüllt sind, klicken Sie auf Speichern.

activeassist-business-rules-Sammlung erstellen

  1. Klicken Sie auf Start Collection (Sammlung starten).
  2. Geben Sie im Feld Sammlungs-ID Folgendes ein: activeassist-business-rules.

    Befüllen Sie das Dokument wie in der folgenden Tabelle dargestellt. Klicken Sie auf Feld hinzufügen, um das nächste Feld hinzuzufügen.

    Feldname Feldtyp Feldwert Hinweis
    action string Notify Wenn Sie den Wert auf Apply festlegen, wendet der Dienst die Empfehlung an und entfernt die nicht verwendete Rolle.
    projectId string Stub-Project-ID In dieser Anleitung wird eine Stub-Empfehlung verwendet. Wenn Sie Empfehlungen aus einem vorhandenen Google Cloud-Projekt verwenden möchten, geben Sie stattdessen die Projekt-ID ein.
    projectNumber string 999999999 In dieser Anleitung wird eine Stub-Empfehlung verwendet.

    Wenn Sie eine Empfehlung aus einem vorhandenen Google Cloud-Projekt verwenden, geben Sie stattdessen die Projektnummer ein. Die Projektnummer finden Sie im Google Cloud Console-Dashboard.
    recommenderType string google.iam.policy.Recommender Nicht zutreffend.
    recommenderSubtype string REMOVE_ROLE Nicht zutreffend.
    slackWebhookURL string Geben Sie die Slack-Webhook-URL ein, die Sie in einem vorherigen Schritt generiert haben. Die URL sieht etwa so aus:

    https://hooks.slack.com/services/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

    In dieser Anleitung erfahren Sie, wie Sie eine Regel erstellen, um zu bestimmen, ob eine Empfehlung automatisch angewendet wird oder ob eine Benachrichtigung generiert und an eine Plattform wie Slack gesendet wird. Informationen dazu, wie eine Empfehlung automatisch anhand der Auswertung von Beispielgeschäftsregeln angewendet werden kann, die Sie eingerichtet haben, finden Sie im zugehörigen Repository.

  3. Wenn das Dokument gefüllt ist, klicken Sie auf Speichern.

Geplanten Cloud Run-Dienst erstellen

In diesem Abschnitt erstellen Sie einen geplanten Cloud Run-Dienst namens recommendation-collector, der die Recommender API auslöst und aktive Empfehlungen abruft. Die Identity and Access Management Recommender API wird in dieser Anleitung als Recommender API verwendet. Der Dienst liest Metadaten aus der von Ihnen erstellten Firestore-Sammlung activeassist-metadata, um zu ermitteln, welche Empfehlungen abgerufen werden sollen.

  1. Klicken Sie auf In Cloud Shell öffnen, um Cloud Shell für das Empfehlungsmanagerprojekt zu öffnen.

    In Cloud Shell öffnen

    Wenn Cloud Shell geöffnet wird, werden die folgenden Befehle ausgeführt:

    Wenn das Dialogfeld In Cloud Shell öffnen angezeigt wird, wählen Sie Vertrauen aus und klicken Sie dann auf Bestätigen.

  2. Legen Sie die Projekt-ID und die Projektnummer des aktuellen Empfehlungsmanagerprojekts als Variablen fest:

    export RECO_MGR_PROJECT=PROJECT_ID
    gcloud config set project $RECO_MGR_PROJECT
    export RECO_MGR_PROJECT_NUMBER=$(gcloud projects describe $DEVSHELL_PROJECT_ID --format='value(projectNumber)')
    

    Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID. Klicken Sie nach der Eingabe der Befehle auf Autorisieren, wenn Sie dazu aufgefordert werden.

  3. Legen Sie für die Deployment-Region eine Variable fest:

    export REGION=us-central1
    

    Obwohl in dieser Anleitung die Region us-central1 verwendet wird, können Sie eine beliebige Region verwenden, in der Cloud Run verfügbar ist.

  4. Erstellen Sie eine Umgebungsvariable für Ihr Docker-Image:

    export RECOMMENDER_IMAGE=gcr.io/$RECO_MGR_PROJECT/recommendation-collector:1.0
    
  5. Erstellen Sie das Docker-Image und laden Sie es in Container Registry hoch:

     gcloud builds submit --tag $RECOMMENDER_IMAGE
    
  6. Erstellen Sie ein Dienstkonto für den Dienst recommendation-collector, um mit anderen Google Cloud-Diensten in der Pipeline zu interagieren:

    gcloud iam service-accounts create recommendation-collector-sa \
      --description "Service Account that the recommendation-collector service uses to invoke other Google Cloud services" \
      --display-name "recommendation-collector-sa" \
      --project $RECO_MGR_PROJECT
    

    Es empfiehlt sich, Ihren Cloud Run-Diensten detaillierte Berechtigungen zu gewähren, indem Sie dem Dienstkonto vordefinierte Rollen zuweisen. Weitere Informationen finden Sie unter Dienstidentität.

  7. Gewähren Sie dem Dienstkonto für den Dienst recommendation-collector Zugriff auf Firestore und die Recommender API:

    gcloud projects add-iam-policy-binding $RECO_MGR_PROJECT \
      --member serviceAccount:recommendation-collector-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/datastore.user
    gcloud projects add-iam-policy-binding $RECO_MGR_PROJECT \
      --member serviceAccount:recommendation-collector-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/pubsub.publisher
    
  8. Wenn Sie diese Anleitung mit dem Beispiel-stub ausführen, das im von Ihnen geklonten Repository bereitgestellt wird, fahren Sie mit dem nächsten Schritt fort.

    Wenn Sie die Pipeline in dieser Anleitung erstellen und dabei Empfehlungen für ein vorhandenes Google Cloud-Projekt verwenden, müssen Sie den Dienstkonten, die Sie zum Ausführen der beiden Cloud Run-Dienste erstellt haben, IAM-Berechtigungen zuweisen.

    Legen Sie die Umgebungsvariable TEST_PROJECT_ID mit der ID des Projekts fest, für das Sie diese Pipeline ausführen, bevor Sie die Befehle ausführen:

    export TEST_PROJECT_ID=TEST_PROJECT_ID
    gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \
      --member serviceAccount:recommendation-collector-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/recommender.iamAdmin
    gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \
      --member serviceAccount:recommendation-collector-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/serviceusage.serviceUsageConsumer
    gcloud services enable recommender.googleapis.com --project $TEST_PROJECT_ID
    

    Achten Sie darauf, dass die verwendete Projekt-ID mit der ID übereinstimmt, die Sie unter Firestore-Sammlungen erstellen eingegeben haben.

  9. In dieser Anleitung stellen Sie den Dienst mit einer Umgebungsvariable namens STUB_RECOMMENDATIONS bereit. Mit dieser Variablen können Sie einen Stub zum Testen der Pipeline verwenden.

    Stellen Sie den Cloud Run-Dienst bereit:

    gcloud run deploy recommendation-collector \
      --image=$RECOMMENDER_IMAGE \
      --no-allow-unauthenticated \
      --region $REGION \
      --platform managed \
      --service-account recommendation-collector-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --set-env-vars="STUB_RECOMMENDATIONS=true" \
      --project $RECO_MGR_PROJECT \
    

    Nehmen Sie alle Systemaufforderungen an.

    Wenn Sie die Pipeline mit Active Assist-Empfehlungen ausführen möchten, die für ein Google Cloud-Projekt generiert wurden, entfernen Sie die folgende Zeile aus dem Befehl, bevor Sie ihn bereitstellen:

    --set-env-vars="STUB_RECOMMENDATIONS=true"
    

Cloud Scheduler-Job zum Ausführen des recommender-collector service einrichten

  1. Erstellen Sie in Cloud Shell ein Dienstkonto für Cloud Scheduler-Jobs, die zum Ausführen des Dienstes recommendation-collector verwendet werden:

    gcloud iam service-accounts create recommender-scheduler-sa \
      --description "Service Account used by Cloud Scheduler to invoke the recommender-parser service" \
      --display-name "recommender-scheduler-sa" \
      --project $RECO_MGR_PROJECT
    
  2. Weisen Sie dem Dienstkonto die Rolle run/invoker zu, damit es den Cloud Run-Dienst aufrufen kann:

    gcloud run services add-iam-policy-binding recommendation-collector \
      --member=serviceAccount:recommender-scheduler-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role=roles/run.invoker \
      --region=$REGION \
      --platform=managed
    
  3. Rufen Sie die Dienst-URL recommendation-collector ab:

    export RECOMMENDER_SERVICE_URI=`gcloud run services describe recommendation-collector \
      --platform managed \
      --project $RECO_MGR_PROJECT \
      --region $REGION \
      --format="value(status.url)"`/run
    
  4. Erstellen Sie einen Cloud Scheduler-Job mit dem Namen recommender-iam-scheduler:

    gcloud scheduler jobs create http recommender-iam-scheduler \
      --project $RECO_MGR_PROJECT \
      --time-zone "America/Los_Angeles" \
      --schedule="0 */3 * * *" \
      --uri=$RECOMMENDER_SERVICE_URI \
      --description="Scheduler job to invoke recommendation pipeline" \
      --oidc-service-account-email="recommender-scheduler-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com" \
      --headers="Content-Type=application/json" \
      --http-method="POST"
    

    Legen Sie die Zeitzone Ihres Standorts fest. Das Zeitzonenwertformat basiert auf der tz-Datenbank.

    Weitere Informationen finden Sie unter gcloud scheduler jobs create http.

    Ihr Cloud Scheduler-Job ruft die Route /run für den Dienst recommendation-collector auf.

    Mit dem Flag --schedule="0 */3 * * *" wird der Planerjob alle drei Stunden ausgeführt. Sie können diese Einstellung Ihren Anforderungen entsprechend ändern. Weitere Informationen finden Sie unter Cronjob-Zeitpläne konfigurieren.

Empfehlungsregeln-Engine erstellen, um Empfehlungen zu verarbeiten

In diesem Abschnitt erstellen Sie einen zweiten Cloud Run-Dienst mit dem Namen recommendation-rules-engine, um Empfehlungen zu verarbeiten, die vom Dienst recommendation-collector erfasst werden. Der Dienst recommendation-rules-engine wird von Pub/Sub aufgerufen, wenn neue Empfehlungen per Push in das Thema activeassist-recommendations übertragen werden.

Dieser Dienst parst Empfehlungen basierend auf den Geschäftsregeln, die Sie in der Sammlung activeassist-business-rules definiert haben.

  1. Öffnen Sie in Cloud Shell das Verzeichnis recommendation-rules-engine:

    cd ../recommendation-rules-engine
    
  2. Erstellen Sie eine Umgebungsvariable für Ihr Docker-Image:

    export RULES_ENGINE_IMAGE=gcr.io/$RECO_MGR_PROJECT/recommendation-rules-engine:1.0
    
  3. Erstellen Sie das Docker-Image und laden Sie es in Container Registry hoch:

    gcloud builds submit --tag $RULES_ENGINE_IMAGE
    
  4. Erstellen Sie ein Dienstkonto für den Dienst recommendation-rules-engine, um mit anderen Google Cloud-Diensten in der Pipeline zu interagieren:

    gcloud iam service-accounts create recommendation-rules-sa \
     --description "Service Account that recommendation-rules-engine uses to invoke other Google Cloud services" \
     --display-name "recommendation-rules-sa" \
     --project $RECO_MGR_PROJECT
    
  5. Gewähren Sie dem Dienstkonto für den Dienst recommendation-rules-engine Zugriff auf Firestore:

    gcloud projects add-iam-policy-binding $RECO_MGR_PROJECT \
      --member serviceAccount:recommendation-rules-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/datastore.user
    

    Wenn Sie die für diese Anleitung bereitgestellten Stubs verwenden, fahren Sie mit dem nächsten Schritt fort.

    Wenn Sie die Pipeline mit Empfehlungen testen, die für ein Google Cloud-Projekt generiert wurden, anstatt mit den für dieses Tutorial bereitgestellten Stubs, führen Sie die folgenden Befehle aus, um dem Dienstkonto der Regel-Engine den Zugriff auf Ihr Projekt zu ermöglichen:

    gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \
      --member serviceAccount:recommendation-rules-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/serviceusage.serviceUsageConsumer
    gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \
      --member serviceAccount:recommendation-rules-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/recommender.iamAdmin
    gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \
      --member serviceAccount:recommendation-rules-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/resourcemanager.projectIamAdmin
    
  6. Stellen Sie den Cloud Run-Dienst bereit:

    gcloud run deploy recommendation-rules-engine \
      --image=$RULES_ENGINE_IMAGE \
      --no-allow-unauthenticated \
      --region $REGION \
      --platform managed \
      --service-account recommendation-rules-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --project $RECO_MGR_PROJECT
    

    Nehmen Sie alle Systemaufforderungen an.

  7. Rufen Sie die URL recommendation-rules-engine ab:

    export RECOMMENDER_SERVICE_RULES_URI=`gcloud run services describe recommendation-rules-engine \
      --platform managed \
      --project $RECO_MGR_PROJECT \
      --region $REGION \
      --format="value(status.url)"`/process
    

    Die URL, die Sie in diesem Schritt abrufen, wird aufgerufen, wenn das Pub/Sub-Thema, das Sie im nächsten Schritt erstellen, neue Empfehlungen erhält.

Pub/Sub-Thema für aktive Empfehlungen erstellen

In diesem Abschnitt erstellen Sie ein Pub/Sub-Thema für die Active Assist-Empfehlungen, die der Dienst recommender-collector durch Aufrufen der Recommender API abruft.

  1. Erstellen Sie in Cloud Shell ein Pub/Sub-Thema:

    gcloud pubsub topics create activeassist-recommendations
    
  2. Erstellen Sie ein Dienstkonto für Pub/Sub zum Aufrufen des Cloud Run-Dienstes recommendation-rules-engine:

    gcloud iam service-accounts create recommendation-engine-sub-sa \
      --description "Service Account used by Pub/Sub to push recommendations to the recommendation-rules-engine service" \
      --display-name "recommendation-engine-sub-sa" \
      --project $RECO_MGR_PROJECT
    
  3. Das Pub/Sub-Dienstkonto muss den Rollen zugeordnet sein, die es zum Veröffentlichen von Nachrichten und zum Aufrufen des Dienstes recommendation-rules-engine benötigt:

    gcloud projects add-iam-policy-binding $RECO_MGR_PROJECT \
      --member serviceAccount:recommendation-engine-sub-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/run.invoker \
      --project $RECO_MGR_PROJECT
    

Abo für das Pub/Sub-Thema erstellen

  1. Erstellen Sie ein Abo für den Dienst recommendation-rules-engine:

    # grant Pub/Sub the permission to create tokens
    PUBSUB_SERVICE_ACCOUNT="service-$RECO_MGR_PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding $RECO_MGR_PROJECT \
      --member="serviceAccount:$PUBSUB_SERVICE_ACCOUNT"\
      --role='roles/iam.serviceAccountTokenCreator'
    # configure the subscription push identity
    gcloud pubsub subscriptions create active-assist-recommendations-for-rules-engine \
      --topic=activeassist-recommendations \
      --topic-project=$RECO_MGR_PROJECT \
      --push-auth-service-account=recommendation-engine-sub-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --ack-deadline=60 \
      --push-endpoint=$RECOMMENDER_SERVICE_RULES_URI
    
  2. Erlauben Sie dem erstellten recommendation-engine-sub-sa-Dienstkonto, den Dienst recommendation-rules-engine aufzurufen:

    gcloud run services add-iam-policy-binding recommendation-rules-engine \
      --member=serviceAccount:recommendation-engine-sub-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role=roles/run.invoker \
      --region=$REGION \
      --platform=managed
    

End-to-End-Tests mit Stubs ausführen

Active Assist-Empfehlungen werden von der Plattform auf Basis von Nutzungsmustern und Systemmesswerten generiert. Jede Empfehlungskategorie kann ein anderes Standardzeitfenster in der Vergangenheit verwenden, um Nutzungsdaten und Messwerte auf der Grundlage der generierten Empfehlungen zu analysieren. Beispielsweise werden IAM-Empfehlungen von der Plattform basierend auf Nutzungsmustern der letzten 90 Tage generiert.

Zum Testen der End-to-End-Pipeline enthält das für diese Anleitung geklonte Repository Beispielempfehlungen (Stubs), mit denen Sie die End-to-End-Pipeline ausführen.

In diesem Abschnitt tun Sie Folgendes:

  • Prüfen Sie die Stub-Empfehlungen.
  • Rufen Sie die Pipeline manuell auf.
  • Prüfen Sie, ob eine Benachrichtigung generiert und an den von Ihnen erstellten Slack-Kanal gesendet wird.
  1. Prüfen Sie die im Repository bereitgestellten Beispielempfehlungen:

    cat ../recommendation-collector/stub.json
    

    Diese Datei enthält eine Beispielempfehlung mit der Aktion REMOVE für eine Beispielrolle namens roles/gkehub.connect.

  2. Führen Sie den folgenden Befehl aus, damit Cloud Scheduler den Job sofort ausführt, anstatt auf die nächste geplante Ausführung zu warten:

    gcloud scheduler jobs run recommender-iam-scheduler
    
  3. Auf demCloud Scheduler Konsolenseite, in der Spalte Ergebnis für den recommender-iam-scheduler-Job prüfen Sie, ob das ErgebnisErfolgreich ist.

    Um eine detaillierte Ansicht der Schritte zu erhalten, die die einzelnen Dienste ausführen, können Sie auch die Cloud Run-Dienstlogs für die Dienste recommendation-collector und recommendation-rules-engine aufrufen.

  4. Wenn die serverlose End-to-End-Pipeline, die Sie in dieser Anleitung erstellen, erfolgreich ausgeführt wird, wird eine Slack-Benachrichtigung mit Details zur empfohlenen Rollenbindung erstellt, die Sie entfernen sollen. Hier ein Beispiel für die Benachrichtigung, die Sie erhalten:

    Project xxxxxxxx\
    **Impact**: SECURITY\
    This role has not been used during the observation window.\
    **Role**: roles/gkehub.connect\
    **Member**:
    serviceAccount:sample-sa@recommendation-sample.iam.gserviceaccount.com\
    **Action**: remove
    

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

  • In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  • In the project list, select the project that you want to delete, and then click Delete.
  • In the dialog, type the project ID, and then click Shut down to delete the project.
  • Nächste Schritte