In dieser Anleitung wird beschrieben, wie Sie eine sichere Zwei-Dienst-Anwendung erstellen, die in Cloud Run ausgeführt wird. Diese Anwendung ist ein Markdown-Editor, der einen öffentlichen "Front-End"-Dienst enthält, den jeder zum Erstellen von Markdown-Text verwenden kann, sowie einen privaten "Back-End"-Dienst, der Markdown-Text in HTML rendert.
Der Back-End-Dienst ist privat und nutzt das Feature für IAM-basierte Dienst-zu-Dienst-Authentifizierung von Cloud Run, das den Aufruf des Dienstes einschränkt. Beide Dienste werden mit dem Prinzip der geringsten Berechtigung erstellt, ohne Zugriff auf den Rest von Google Cloud, sofern nicht erforderlich.
Beschränkungen und nicht behandelte Themen in dieser Anleitung
In dieser Anleitung wird nicht die Endnutzerauthentifizierung erläutert, die Identity Platform oder Firebase Authentication dazu verwendet, Nutzer-ID-Tokens zu generieren und Nutzeridentitäten manuell überprüfen. Weitere Informationen zur Endnutzerauthentifizierung finden Sie in der Cloud Run-Anleitung zur Endnutzerauthentifizierung.
In dieser Anleitung wird nicht die Kombination von IAM-basierter Authentifizierung und ID-Token-Methoden erläutert, da diese nicht unterstützt wird.
Ziele
- Ein dediziertes Dienstkonto mit minimalen Berechtigungen für die Dienst-zu-Dienst-Authentifizierung und den Dienstzugriff auf den Rest von Google Cloud erstellen
- Zwei Dienste in Cloud Run, die miteinander interagieren, schreiben, erstellen und bereitstellen
- Anfragen zwischen einem öffentlichen und einem privaten Cloud Run-Dienst stellen
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.
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run API.
- Installieren und initialisieren Sie die gcloud CLI.
- Installieren Sie curl, um den Dienst zu testen.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen der Anleitung benötigen:
-
Cloud Build-Bearbeiter (
roles/cloudbuild.builds.editor
) -
Cloud Run-Administrator (
roles/run.admin
) -
Create Service Accounts (
roles/iam.serviceAccountCreator
) -
Projekt-IAM-Administrator (
roles/resourcemanager.projectIamAdmin
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer
) -
Storage-Administrator (
roles/storage.admin
) -
Repository-Administrator für Artifact Registry (
roles/artifactregistry.repoAdmin
)
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.
gcloud-Standardeinstellungen einrichten
So konfigurieren Sie gcloud mit Standardeinstellungen für den Cloud Run-Dienst:
Legen Sie ein Standardprojekt fest:
gcloud config set project PROJECT_ID
Ersetzen Sie PROJECT_ID durch den Namen des Projekts, das Sie für diese Anleitung erstellt haben.
Konfigurieren Sie gcloud für die von Ihnen ausgewählte Region:
gcloud config set run/region REGION
Ersetzen Sie REGION durch die unterstützte Cloud Run-Region Ihrer Wahl.
Cloud Run-Standorte
Cloud Run ist regional. Die Infrastruktur, in der die Cloud Run-Dienste ausgeführt werden, befindet sich demnach in einer bestimmten Region. Aufgrund der Verwaltung durch Google sind die Anwendungen in allen Zonen innerhalb dieser Region redundant verfügbar.
Bei der Auswahl der Region, in der Ihre Cloud Run-Dienste ausgeführt werden, ist vorrangig, dass die Anforderungen hinsichtlich Latenz, Verfügbarkeit oder Langlebigkeit erfüllt werden.
Sie können im Allgemeinen die Region auswählen, die Ihren Nutzern am nächsten liegt, aber Sie sollten den Standort der anderen Google Cloud-Produkte berücksichtigen, die von Ihrem Cloud Run-Dienst verwendet werden.
Die gemeinsame Nutzung von Google Cloud-Produkten an mehreren Standorten kann sich auf die Latenz und die Kosten des Dienstes auswirken.
Cloud Run ist in diesen Regionen verfügbar:
Unterliegt Preisstufe 1
asia-east1
(Taiwan)asia-northeast1
(Tokio)asia-northeast2
(Osaka)europe-north1
(Finnland) Niedriger CO2-Werteurope-southwest1
(Madrid) Niedriger CO2-Ausstoßeurope-west1
(Belgien) Niedriger CO2-Ausstoßeurope-west4
(Niederlande) Niedriger CO2-Ausstoßeurope-west8
(Mailand)europe-west9
(Paris) Niedriger CO2-Ausstoßme-west1
(Tel Aviv)us-central1
(Iowa) Niedriger CO2-Ausstoßus-east1
(South Carolina)us-east4
(Northern Virginia)us-east5
(Columbus)us-south1
(Dallas) Niedriger CO2-Ausstoßus-west1
(Oregon) Niedriger CO2-Ausstoß
Unterliegt Preisstufe 2
africa-south1
(Johannesburg)asia-east2
(Hongkong)asia-northeast3
(Seoul, Südkorea)asia-southeast1
(Singapur)asia-southeast2
(Jakarta)asia-south1
(Mumbai, Indien)asia-south2
(Delhi, Indien)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Warschau, Polen)europe-west10
(Berlin) Niedriger CO2-Ausstoßeurope-west12
(Turin)europe-west2
(London, Vereinigtes Königreich) Niedriger CO2-Ausstoßeurope-west3
(Frankfurt, Deutschland) Niedriger CO2-Ausstoßeurope-west6
(Zürich, Schweiz) Niedriger CO2-Ausstoßme-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal) Niedriger CO2-Ausstoßnorthamerica-northeast2
(Toronto) Niedriger CO2-Ausstoßsouthamerica-east1
(Sao Paulo, Brasilien) Niedriger CO2-Ausstoßsouthamerica-west1
(Santiago, Chile) Niedriger CO2-Ausstoßus-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Wenn Sie bereits einen Cloud Run-Dienst erstellt haben, können Sie dessen Region im Cloud Run-Dashboard der Google Cloud Console aufrufen.
Codebeispiel abrufen
So rufen Sie das gewünschte Codebeispiel ab:
Klonen Sie das Repository der Beispielanwendung in Ihre Cloud Shell oder Ihren lokalen Computer:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Wechseln Sie in das Verzeichnis, das den Cloud Run-Beispielcode enthält:
Node.js
cd nodejs-docs-samples/run/markdown-preview/
Python
cd python-docs-samples/run/markdown-preview/
Go
cd golang-samples/run/markdown-preview/
Java
cd java-docs-samples/run/markdown-preview/
C#
cd dotnet-docs-samples/run/markdown-preview/
Privaten Markdown-Renderingdienst prüfen
Aus Sicht des Front-Ends gibt es eine einfache API-Spezifikation für den Markdown-Dienst:
- Ein Endpunkt bei
/
- Erwartet POST-Anfragen
- Der Text der POST-Anfrage ist Markdown-Text
Möglicherweise möchten Sie den gesamten Code auf Sicherheitsprobleme prüfen oder einfach weitere Informationen dazu erhalten, indem Sie das Verzeichnis ./renderer/
untersuchen. Beachten Sie, dass der Markdown-Transformationscode in dieser Anleitung nicht erläutert wird.
Privaten Markdown-Renderingdienst senden
Um Ihren Code zu senden, erstellen Sie ihn mit Cloud Build, laden Sie ihn in Artifact Registry hoch und stellen Sie ihn in Cloud Run bereit:
Wechseln Sie in das Verzeichnis
renderer
:Node.js
cd renderer/
Python
cd renderer/
Go
cd renderer/
Java
cd renderer/
C#
cd Samples.Run.MarkdownPreview.Renderer/
Erstellen Sie eine Artifact Registry:
gcloud artifacts repositories create REPOSITORY \ --repository-format docker \ --location REGION
Ersetzen Sie:
- REPOSITORY durch einen eindeutigen Namen für das Repository. Repository-Namen können für jeden Repository-Speicherort in einem Projekt nur einmal vorkommen.
- REGION durch die Google Cloud-Region, die für das Artifact Registry-Repository verwendet werden soll.
Führen Sie den folgenden Befehl aus, um den Container zu erstellen und ihn in Artifact Registry zu veröffentlichen:
Node.js
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
Dabei ist PROJECT_ID Ihre Google-Cloud-Projekt-ID und
renderer
der Name, den Sie dem Dienst geben möchten.Bei Erfolg wird eine SUCCESS-Meldung mit der ID, Erstellungszeit und dem Image-Namen angezeigt. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Python
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
Dabei ist PROJECT_ID Ihre Google-Cloud-Projekt-ID und
renderer
der Name, den Sie dem Dienst geben möchten.Bei Erfolg wird eine SUCCESS-Meldung mit der ID, Erstellungszeit und dem Image-Namen angezeigt. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Go
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
Dabei ist PROJECT_ID Ihre Google-Cloud-Projekt-ID und
renderer
der Name, den Sie dem Dienst geben möchten.Bei Erfolg wird eine SUCCESS-Meldung mit der ID, Erstellungszeit und dem Image-Namen angezeigt. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Java
In diesem Beispiel wird Jib verwendet, um Docker-Images mit gängigen Java-Tools zu erstellen. Jib optimiert Container-Builds, ohne dass ein Dockerfile erforderlich ist oder Docker installiert sein muss. Weitere Informationen zum Erstellen von Java-Containern mit Jib
Verwenden Sie den gcloud Credential Helper, um Docker für das Übertragen per Push in Ihre Artifact Registry zu autorisieren.
gcloud auth configure-docker
Verwenden Sie das Jib-Maven-Plug-in, um den Container zu erstellen und per Push in Artifact Registry zu übertragen.
mvn compile jib:build -Dimage=REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
Dabei ist PROJECT_ID Ihre Google-Cloud-Projekt-ID und
renderer
der Name, den Sie dem Dienst geben möchten.Bei Erfolg sollte die Nachricht "BUILD SUCCESS" angezeigt werden. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden.
C#
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
Dabei ist PROJECT_ID Ihre Google-Cloud-Projekt-ID und
renderer
der Name, den Sie dem Dienst geben möchten.Bei Erfolg wird eine SUCCESS-Meldung mit der ID, Erstellungszeit und dem Image-Namen angezeigt. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Als privaten Dienst mit eingeschränktem Zugriff bereitstellen
Cloud Run bietet sofort einsatzbereit Zugriffskontrolle und Dienstidentität-Features. Die Zugriffssteuerung stellt eine Authentifizierungsschicht bereit, die verhindert, dass Nutzer und andere Dienste den Dienst aufrufen. Mit der Dienstidentität können Sie verhindern, dass Ihr Dienst auf andere Google Cloud-Ressourcen zugreift. Dazu erstellen Sie ein dediziertes Dienstkonto mit eingeschränkten Berechtigungen.
Erstellen Sie ein Dienstkonto, das als "Compute-Identität" des Renderingdienstes dient. Standardmäßig hat dieses keine anderen Berechtigungen als die Projektmitgliedschaft.
Befehlszeile
gcloud iam service-accounts create renderer-identity
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Der Markdown-Renderingdienst lässt sich nicht direkt in andere Komponenten in Google Cloud einbinden. Er benötigt keine weiteren Berechtigungen.
Mit dem
renderer-identity
-Dienstkonto bereitstellen und nicht authentifizierten Zugriff verweigernBefehlszeile
gcloud run deploy renderer \ --image REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer \ --service-account renderer-identity \ --no-allow-unauthenticated
Cloud Run kann den Kurznamen des Dienstkontos anstelle der vollständigen E-Mail-Adresse verwenden, wenn das Dienstkonto Teil desselben Projekts ist.
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Privaten Markdown-Renderingdienst testen
Private Dienste können nicht direkt von einem Webbrowser geladen werden. Verwenden Sie stattdessen curl
oder ein ähnliches HTTP-Anfrage-Befehlszeilentool, mit dem ein Authorization
-Header eingefügt werden kann.
So senden Sie fett formatierten Text an den Dienst und sehen, wie die Markdown-Sternchen in HTML-<strong>
-Tags konvertiert werden:
Rufen Sie die URL aus der Bereitstellungsausgabe ab.
Verwenden Sie
gcloud
, um ein spezielles Identitätstoken nur für die Entwicklung abzuleiten, das zur Authentifizierung dient:TOKEN=$(gcloud auth print-identity-token)
Erstellen Sie eine curl-Anfrage, die den Markdown-Rohtext als URL-codierten Abfragestringparameter übergibt:
curl -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: text/plain' \ -d '**Hello Bold Text**' \ SERVICE_URL
Ersetzen Sie SERVICE_URL durch die nach der Bereitstellung des Markdown-Renderingdiensts bereitgestellte URL.
Die Antwort sollte ein HTML-Snippet sein:
<strong>Hello Bold Text</strong>
Integration von Editor- und Renderingdiensten prüfen
Der Editordienst bietet eine einfache Benutzeroberfläche für Texteingaben und einen Bereich, in dem die HTML-Vorschau angezeigt wird. Bevor Sie fortfahren, prüfen Sie den zuvor abgerufenen Code, indem Sie das Verzeichnis ./editor/
öffnen.
Sehen Sie sich als Nächstes die folgenden Codeabschnitte an, in denen die beiden Dienste sicher eingebunden werden.
Node.js
Das Modul render.js
erstellt authentifizierte Anfragen an den privaten Renderer-Dienst. Dabei wird der Google Cloud-Metadatenserver in der Cloud Run-Umgebung verwendet, um ein Identitätstoken zu erstellen und es der HTTP-Anfrage als Teil eines Authorization
-Headers hinzuzufügen.
In anderen Umgebungen verwendet render.js
die Standardanmeldedaten für Anwendungen, um ein Token von Google-Servern anzufordern.
Parst den Markdown-Text aus JSON und sendet ihn an den Renderer-Dienst, um ihn in HTML umzuwandeln.
Python
Mit der Methode new_request
werden authentifizierte Anfragen an private Dienste erstellt.
Dabei wird der Google Cloud-Metadatenserver in der Cloud Run-Umgebung verwendet, um ein Identitätstoken zu erstellen und es der HTTP-Anfrage als Teil eines Authorization
-Headers hinzuzufügen.
In anderen Umgebungen fordert new_request
ein Identitätstoken von den Google-Servern an. Dazu erfolgt eine Authentifizierung mit Standardanmeldedaten für Anwendungen.
Parst den Markdown-Text aus JSON und sendet ihn an den Renderer-Dienst, um ihn in HTML umzuwandeln.
Go
Mit RenderService
werden authentifizierte Anfragen an private Dienste erstellt. Dabei wird der Google Cloud-Metadatenserver in der Cloud Run-Umgebung verwendet, um ein Identitätstoken zu erstellen und es der HTTP-Anfrage als Teil eines Authorization
-Headers hinzuzufügen.
In anderen Umgebungen fordert RenderService
ein Identitätstoken von den Google-Servern an. Dazu erfolgt eine Authentifizierung mit Standardanmeldedaten für Anwendungen.
Die Anfrage wird an den Renderer-Dienst gesendet, nachdem der Markdown-Text in HTML umgewandelt wurde. Antwortfehler werden verarbeitet, um zwischen Kommunikationsproblemen und der Renderingfunktion zu unterscheiden.
Java
Mit makeAuthenticatedRequest
werden authentifizierte Anfragen an private Dienste erstellt. Dabei wird der Google Cloud-Metadatenserver in der Cloud Run-Umgebung verwendet, um ein Identitätstoken zu erstellen und es der HTTP-Anfrage als Teil eines Authorization
-Headers hinzuzufügen.
In anderen Umgebungen fordert makeAuthenticatedRequest
ein Identitätstoken von den Google-Servern an. Dazu erfolgt eine Authentifizierung mit Standardanmeldedaten für Anwendungen.
Parst den Markdown-Text aus JSON und sendet ihn an den Renderer-Dienst, um ihn in HTML umzuwandeln.
C#
Mit GetAuthenticatedPostResponse
werden authentifizierte Anfragen an private Dienste erstellt. Dabei wird der Google Cloud-Metadatenserver in der Cloud Run-Umgebung verwendet, um ein Identitätstoken zu erstellen und es der HTTP-Anfrage als Teil eines Authorization
-Headers hinzuzufügen.
In anderen Umgebungen fordert GetAuthenticatedPostResponse
ein Identitätstoken von den Google-Servern an. Dazu erfolgt eine Authentifizierung mit Standardanmeldedaten für Anwendungen.
Parst den Markdown-Text aus JSON und sendet ihn an den Renderer-Dienst, um ihn in HTML umzuwandeln.
Öffentlichen Editordienst senden
So erstellen Sie Ihren Code und stellen ihn bereit:
Wechseln Sie in das Verzeichnis
editor
:Node.js
cd ../editor
Python
cd ../editor
Go
cd ../editor
Java
cd ../editor
C#
cd ../Samples.Run.MarkdownPreview.Editor/
Führen Sie den folgenden Befehl aus, um den Container zu erstellen und ihn in Artifact Registry zu veröffentlichen:
Node.js
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
Dabei ist PROJECT_ID Ihre Google-Cloud-Projekt-ID und
editor
der Name, den Sie dem Dienst geben möchten.Bei Erfolg wird eine SUCCESS-Meldung mit der ID, Erstellungszeit und dem Image-Namen angezeigt. Das Image wird in Container Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Python
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
Dabei ist PROJECT_ID Ihre Google-Cloud-Projekt-ID und
editor
der Name, den Sie dem Dienst geben möchten.Bei Erfolg wird eine SUCCESS-Meldung mit der ID, Erstellungszeit und dem Image-Namen angezeigt. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Go
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
Dabei ist PROJECT_ID Ihre Google-Cloud-Projekt-ID und
editor
der Name, den Sie dem Dienst geben möchten.Bei Erfolg wird eine SUCCESS-Meldung mit der ID, Erstellungszeit und dem Image-Namen angezeigt. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Java
In diesem Beispiel wird Jib verwendet, um Docker-Images mit gängigen Java-Tools zu erstellen. Jib optimiert Container-Builds, ohne dass ein Dockerfile erforderlich ist oder Docker installiert sein muss. Weitere Informationen zum Erstellen von Java-Containern mit Jibmvn compile jib:build -Dimage=REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
Dabei ist PROJECT_ID Ihre Google-Cloud-Projekt-ID und
editor
der Name, den Sie dem Dienst geben möchten.Bei Erfolg sollte die Nachricht "BUILD SUCCESS" angezeigt werden. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden.
C#
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
Dabei ist PROJECT_ID Ihre Google-Cloud-Projekt-ID und
editor
der Name, den Sie dem Dienst geben möchten.Bei Erfolg wird eine SUCCESS-Meldung mit der ID, Erstellungszeit und dem Image-Namen angezeigt. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Als privaten Dienst mit speziellem Zugriff auf den Renderingdienst bereitstellen
Erstellen Sie ein Dienstkonto, das als „Compute-Identität“ des privaten Dienstes dient. Standardmäßig hat dieses keine anderen Berechtigungen als die Projektmitgliedschaft.
Befehlszeile
gcloud iam service-accounts create editor-identity
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Der Editordienst muss außer mit dem Markdown-Renderingdienst mit keinen anderen Komponenten in Google Cloud interagieren.
Gewähren Sie der Compute-Identität
editor-identity
Zugriff, um den Markdown-Renderingdienst aufzurufen. Jeder Dienst, der dies als Compute-Identität verwendet, hat diese Berechtigung.Befehlszeile
gcloud run services add-iam-policy-binding renderer \ --member serviceAccount:editor-identity@PROJECT_ID.iam.gserviceaccount.com \ --role roles/run.invoker
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Da hiermit im Kontext des Renderingdienstes die Invoker-Rolle zugewiesen wird, ist der Renderingdienst der einzige private Cloud Run-Dienst, den der Editor aufrufen kann.
Mit dem Dienstkonto
editor-identity
bereitstellen und öffentlichen, nicht authentifizierten Zugriff zulassenBefehlszeile
gcloud run deploy editor --image REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor \ --service-account editor-identity \ --set-env-vars EDITOR_UPSTREAM_RENDER_URL=SERVICE_URL \ --allow-unauthenticated
Ersetzen Sie:
- PROJECT_ID durch Ihre Projekt-ID
- SERVICE_URL durch die nach der Bereitstellung des Markdown-Renderingdiensts bereitgestellte URL.
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Stellen Sie den Editordienst bereit:
Gewähren Sie die Berechtigung
allUsers
zum Aufrufen des Dienstes:
Informationen zum HTTPS-Traffic
Für das Rendering von Markdown mithilfe dieser Dienste gibt es drei HTTP-Anfragen.
Testen
So testen Sie die fertige Zwei-Dienst-Anwendung:
Rufen Sie im Browser die URL auf, die Sie im oben beschriebenen Bereitstellungsschritt erhalten haben.
Versuchen Sie, den Markdown-Text auf der linken Seite zu bearbeiten, und klicken Sie auf die Schaltfläche, um rechts eine Vorschau davon zu sehen.
Sie sollte so aussehen:
Wenn Sie sich dafür entscheiden, mit der Entwicklung dieser Dienste fortzufahren, denken Sie daran, dass diese nur eingeschränkten IAM-Zugriff (Identity and Access Management) auf den Rest von Google Cloud haben und ihnen zusätzliche IAM-Rollen zugewiesen werden müssen, um auf viele andere Dienste zugreifen zu können.
Bereinigen
Wenn Sie ein neues Projekt für diese Anleitung erstellt haben, löschen Sie das Projekt. Wenn Sie ein vorhandenes Projekt verwendet haben und es beibehalten möchten, ohne die Änderungen in dieser Anleitung hinzuzufügen, löschen Sie die für die Anleitung erstellten Ressourcen.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das zum Ausführen der Anleitung erstellte Projekt löschen.
So löschen Sie das Projekt:
- In the Google Cloud console, go to the Manage resources page.
- 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.
Anleitungsressourcen löschen
Löschen Sie den Cloud Run-Dienste, den Sie in dieser Anleitung bereitgestellt haben:
gcloud
gcloud run services delete editor gcloud run services delete renderer
Sie können Cloud Run-Dienste auch über die Google Cloud Console löschen.
Entfernen Sie die gcloud-Standardkonfigurationen, die Sie während der Einrichtung der Anleitung hinzugefügt haben.
gcloud config unset run/region
Entfernen Sie die Projektkonfiguration:
gcloud config unset project
Löschen Sie sonstige Google Cloud-Ressourcen, die in dieser Anleitung erstellt wurden:
- Container-Image des Editors mit dem Namen
REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
aus Artifact Registry löschen - Rendering-Container-Image mit dem Namen
REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
aus Artifact Registry löschen - Löschen Sie das Editor-Dienstkonto
editor-identity@PROJECT_ID.iam.gserviceaccount.com
- Löschen Sie das Renderingdienstkonto
renderer-identity@PROJECT_ID.iam.gserviceaccount.com
- Container-Image des Editors mit dem Namen
Nächste Schritte
- Schützen Sie Ihr Projekt zusätzlich, indem Sie die Checkliste IAM sicher verwenden durchgehen.
- Erweitern Sie diese Beispielanwendung und verfolgen Sie die Markdown-Nutzung mithilfe von benutzerdefinierten Cloud Monitoring-Messwerten.
- In der Pub/Sub-Anleitung finden Sie einen Ansatz für sichere asynchrone Mikrodienste.