In dieser Anleitung erfahren Sie, wie Sie die Python Bookshelf-Beispielanwendung mit Cloud Deployment Manager bereitstellen.
Deployment Manager ermöglicht Ihnen, die für eine Bereitstellung erforderlichen Google Cloud-Ressourcen in einem einzigen Schritt über einen deklarativen, wiederholbaren Prozess zu erstellen. Mit Deployment Manager können Sie Ihre Bereitstellungen aktualisieren, Änderungen im Zeitverlauf verfolgen, Vorlagen mit Jinja oder Python erstellen und Ihre Vorlagen so parametrisieren, dass ähnliche Bereitstellungen eine Vorlage gemeinsam nutzen.
Lernziele
- Bookshelf-Beispiel-App klonen und konfigurieren
- Deployment Manager-Konfigurationen und -Vorlagen erstellen
- Deployment Manager-Bereitstellungen erstellen
- Bookshelf-Beispiel-App mittels Deployment Manager bereitstellen
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.
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
- 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.
-
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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 Datastore API, Cloud Storage API, Pub/Sub API APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Installieren Sie Python,
pip
undvirtualenv
auf Ihrem System. Eine Anleitung finden Sie unter Python-Entwicklungsumgebung für Google Cloud einrichten.
Cloud Storage-Bucket erstellen
In der folgenden Anleitung wird im Detail erläutert, wie Sie einen Cloud Storage-Bucket erstellen. Buckets sind die grundlegenden Container für Ihre Daten in Cloud Storage.
Erstellen Sie in Ihrem Terminalfenster einen Cloud Storage-Bucket, wobei YOUR_BUCKET_NAME der Name Ihres Buckets ist:
gsutil mb gs://YOUR_BUCKET_NAME
Legen Sie für die standardmäßige Access Control List (ACL) des Buckets
public-read
fest, damit hochgeladene Bilder in der Bookshelf-Anwendung angezeigt werden.gsutil defacl set public-read gs://YOUR_BUCKET_NAME
Beispiel-App klonen
Die Beispielanwendung steht auf GitHub unter GoogleCloudPlatform/getting-started-python
zur Verfügung.
Klonen Sie das Repository:
git clone https://github.com/GoogleCloudPlatform/getting-started-python.git -b steps
Gehen Sie zum Beispielverzeichnis:
cd getting-started-python/7-gce
App konfigurieren
Öffnen Sie
config.py
zum Bearbeiten.Legen Sie den Wert von
PROJECT_ID
auf Ihre Projekt-ID fest.Legen Sie den Wert
CLOUD_STORAGE_BUCKET
auf den Namen des Cloud Storage-Buckets fest.
Speichern und schließen Sie
config.py
.
App auf lokalem Computer ausführen
Erstellen Sie eine isolierte Python-Umgebung und installieren Sie Abhängigkeiten:
Linux/macOS
virtualenv -p python3 env source env/bin/activate pip install -r requirements.txt
Windows
virtualenv -p python3 env env\scripts\activate pip install -r requirements.txt
Führen Sie die Anwendung aus:
python main.py
Geben Sie im Browser die folgende Adresse ein:
Drücken Sie Strg+C, um den lokalen Webserver zu beenden. Wenn Sie die virtuelle Umgebung beenden möchten, geben Sie deactivate
ein.
Beispiel-App bereitstellen
Code per Push in Repository übertragen
Sie können Ihren Code auf verschiedene Weise in eine ausgeführten Compute Engine-Instanz abrufen. Eine Möglichkeit ist z. B. die Verwendung von Cloud Source Repositories. Jedes Projekt enthält ein Git-Repository, das Compute Engine-Instanzen zur Verfügung steht. Ihre Instanzen rufen dann beim Start die neueste Version des Anwendungscodes ab. Die Verwendung eines Git-Repositorys ist praktisch, weil Sie zum Aktualisieren der Anwendung keine neuen Images oder Instanzen konfigurieren müssen. Sie starten einfach eine vorhandene Instanz oder erstellen eine neue.
Wenn Sie Git zum ersten Mal verwenden, richten Sie mit
git config --global
Ihre Identität ein.Erstellen Sie in der Cloud Console ein Repository:
Übertragen Sie dann den Anwendungscode per Push in das Projekt-Repository, wobei
[YOUR_PROJECT_ID]
Ihre Projekt-ID und[YOUR_REPO]
der Name Ihres Repositorys ist:git commit -am "Updating configuration" git config credential.helper gcloud.sh git remote add cloud https://source.developers.google.com/p/[YOUR_PROJECT_ID]/r/[YOUR_REPO] git push cloud master
Bereitstellung erstellen
Nachdem die Konfiguration festgeschrieben und der Code in Cloud Source Repositories hochgeladen wurde, können Sie die Bereitstellung mit Deployment Manager erstellen:
Wechseln Sie in das Verzeichnis
deployment_manager
:cd getting-started-python/7-gce/gce/deployment_manager
Erstellen Sie die Bereitstellung:
gcloud deployment-manager deployments create my-deployment --config config.yaml
Rufen Sie eine Liste aller Bereitstellungen auf:
gcloud deployment-manager deployments list
Rufen Sie eine Beschreibung der Bereitstellung und der von ihr erstellten Ressourcen ab:
gcloud deployment-manager deployments describe my-deployment
Anwendung ansehen
Nachdem Sie die Weiterleitungsregel erstellt haben, kann es einige Minuten dauern, bis die Konfiguration angewendet wurde und Traffic zu Ihren Instanzen geleitet wird.
So prüfen Sie den Fortschritt:
gcloud compute backend-services get-health bookshelf-my-deployment-frontend --global
Wenn mindestens eine Ihrer Instanzen
HEALTHY
meldet, rufen Sie die Weiterleitungs-IP-Adresse für den Load-Balancer ab:gcloud compute forwarding-rules list --global
Die Weiterleitungs-IP-Adresse befindet sich in der Spalte
IP_ADDRESS
.Geben Sie die IP-Adresse aus der Liste in die Adressleiste Ihres Browsers ein.
Ihre Anwendung wird jetzt in Google Cloud ausgeführt.
Den Code verstehen
Bereitstellung konfigurieren
Sie können die Konfiguration der Bereitstellung in config.yaml
ansehen:
Durch die Konfigurationsdatei wird die Vorlagendatei als Ressource importiert und damit eine Ressource namens bookshelf
definiert. Die Vorlage nimmt einige Attribute als Parameter an. Weitere Informationen zum Erstellen von Deployment Manager-Konfigurationsdateien finden Sie unter Konfiguration erstellen.
Schema der Bereitstellungsvorlage konfigurieren
Sehen Sie sich die Schemadatei bookshelf.jinja.schema
an, in der die Parameter definiert und dokumentiert werden, die die Bereitstellung in der zugehörigen Konfigurationsdatei zur Verfügung stellen soll. Weitere Informationen zu Konfigurationsschemas finden Sie unter Schemas verwenden.
Bereitstellungsvorlage konfigurieren
Durch die Vorlage werden mehrere Ressourcen definiert, die zum Erstellen einer verwalteten Instanzgruppe erforderlich sind, die automatisch skaliert wird und Load-Balancing verwendet. Eine vollständige Beschreibung der erstellten Ressourcen finden Sie in den Kommentaren der Vorlage und in der Anleitung Node.js Bookshelf in Compute Engine ausführen.
Deployment Manager bietet zwar die Möglichkeit, Ressourcen deklarativ festzulegen, die Konfiguration einer Ressource wird jedoch größtenteils durch die zugehörige API definiert. Die meisten Konfigurationsoptionen für die Instanzvorlagenressource finden Sie beispielsweise unter Definition der Instanzvorlagenressource in der Referenzdokumentation zur Compute Engine API.
Die Vorlage wird in der Vorlagensprache Jinja geschrieben. Beim Schreiben von Deployment Manager-Vorlagen können Sie entweder Jinja oder Python verwenden. Jinja bietet den Vorteil, dass es deklarativer und damit unter Umständen leichter zu lesen und zu verstehen als Python ist Für manche komplexen Bereitstellungen kann aber die Ausdrucksweise von Python günstiger sein. In diesem Fall reicht Jinja aus, um die erforderlichen Ressourcen zu erstellen.
In einer Vorlage werden bestimmte Umgebungsvariablen automatisch festgelegt. Auf diese Variablen können Sie über das Wörterbuch env
zugreifen. In diesem Fall wird der Name der Bereitstellung als Name angegeben, der bei der Zuweisung von Namen für die erstellten Ressourcen wiederverwendet werden soll. Weitere Informationen zu verfügbaren Umgebungsvariablen finden Sie unter Einsatzspezifische Umgebungsvariablen verwenden in der Deployment Manager-Dokumentation.
Die Vorlage verwendet dasselbe Startskript, das in der Compute Engine-Anleitung zum Einsatz kommt. Der Inhalt des Skripts wird in die Vorlage eingefügt und die Indent-Anweisung von Jinja rückt den Inhalt korrekt ein:
In einer Deployment Manager-Vorlage von Jinja können Sie auch auf Ressourcen verweisen, die an anderer Stelle in der Vorlage erstellt wurden. Im folgenden Beispiel verwendet der Back-End-Dienst die Referenz der verwalteten Instanzgruppe, um die Instanzgruppe abzurufen, auf die er verweisen soll:
Die in config.yaml
angegebenen Attribute können in der Vorlage verwendet werden:
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.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten durch Löschen des für die Anleitung erstellten Projekts.
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.
Bereitstellung löschen
Geben Sie den folgenden Befehl ein, um die Bereitstellung zu löschen. Mit diesem Befehl werden der Load-Balancer und alle Compute Engine-Instanzen gelöscht, die mit Ihrer Bereitstellung verknüpft sind:
gcloud deployment-manager deployments delete my-deployment
Weitere Informationen
Mehr über die Definition von Deployment Manager-Vorlagen erfahren
Python Bookshelf-Beispielanwendung in Google Kubernetes Engine ausführen
Python Bookshelf-Beispielanwendung in der flexiblen App Engine-Umgebung ausführen
Referenzarchitekturen, Diagramme, Anleitungen und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center
Weitere Google Cloud-Dienste kennenlernen