Kapitel 1. Einführung

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Willkommen bei Google Cloud! Egal, ob du ein erfahrener Cloud-Entwickler oder ein Systemadministrator bist, der zum ersten Mal in die Cloud wechselt: Google Cloud ist eine großartige Plattform, um alles zu entwickeln, von den kleinsten serverlosen Apps bis hin zu den größten Unternehmensanwendungen und Datenpipelines.

Dieses Kapitel bietet einen Überblick über die Plattform und gibt dir einige Tipps für den Einstieg. Wenn du Google Cloud bereits nutzt, kannst du dieses Kapitel wahrscheinlich überspringen. Wenn du neu auf der Plattform bist, egal ob du von On-Premises (vor Ort) oder einem anderen Cloud-Provider kommst, findest du hier einen kurzen Überblick über die Dienste, Tools und Funktionen, die du für den Einstieg kennen musst. Gegen Ende des Kapitels beschreiben wir, wie du dein vorhandenes Wissen über Cloud-Provider schnell umsetzen kannst. Alle weiteren Kapitel sind traditionelle Rezeptsammlungen, wie man sie in einem Kochbuch findet.

Übersicht

Wie die meisten Cloud-Plattformen ist auch Google Cloud eine Sammlung von physischen Ressourcen wie Servern und Speicherung sowie darauf aufbauenden übergeordneten Diensten wie BigQuery oder AppEngine, die alle in Google-Rechenzentren laufen. Die Plattform ist in Zonen, Regionen, Multiregionen (Kontinente) und schließlich den gesamten Globus unterteilt. Tabelle 1-1 zeigt ein grobes mentales Modell, was die einzelnen bedeuten.

Tabelle 1-1. Beschreibung der Regionalität der Dienstleistung
Regionalität der Dienstleistung Beschreibung
Zonal Ein großer Cluster von Rechnern in einem oder mehreren Rechenzentren. Sollte als eine einzige Ausfalldomäne betrachtet werden.a
Regional Eine Ansammlung von Rechenzentrumsgebäuden (Campus). Besteht aus mehreren Zonen. Jede Zone verfügt in der Regel über eine andere Strom- und Netzwerkinfrastruktur und hat einen anderen Zeitplan für die Aufrüstung. Regionale Dienste werden von mehreren Zonen aus bedient oder schlagen automatisch fehl, wenn eine Zone ausfällt.
Multiregional Eine Gruppe von Regionen, die in der Regel auf demselben Kontinent liegen. Multiregionale Dienste werden von mehreren Regionen aus bedient und bewältigen einen regionalen Ausfall.
Global Ein Dienst, der in allen Google Cloud-Regionen auf der ganzen Welt eingesetzt wird.

a Technisch gesehen ist eine Zone eine logische Abstraktion einer Region mit den beschriebenen Eigenschaften einer Ausfalldomäne, obwohl diese physikalische Analogie hilfreich sein kann, um den Unterschied zu verstehen, und oft auch so eingesetzt wird.

Verschiedene Dienste haben unterschiedliche Bereiche; eine virtuelle Maschine (VM) befindet sich zum Beispiel in einer Zone, während ein L7-Netzwerk-Loadbalancer global existiert. Abbildung 1-1 zeigt ein Beispiel für einige grundlegende Rechenressourcen.

Compute and network resources in a region
Abbildung 1-1. Rechenressourcen und Netzwerkressourcen in einer Region

Im Allgemeinen solltest du Produktionsdienste so planen, dass sie mindestens in einer Region, wenn nicht sogar in mehreren Regionen, eingesetzt werden. Das ist bei Google Cloud oft einfacher als bei anderen Plattformen, weil es eine große Anzahl von multiregionalen und globalen Diensten gibt und diese Rechenzentren alle mit den Google-eigenen Glasfasern verbunden sind.

Projekte

Einer der wichtigsten Unterschiede zwischen Google Cloud und einigen anderen Cloud-Plattformen ist das Konstrukt eines Projekts. Jede Ressource, die du erstellst oder mit der du interagierst, existiert in einem Projekt, und die Sicherheitsrollen und -regeln werden in der Regel auf Projektebene angewendet, obwohl sie natürlich auch detaillierter sein können. Die Ressourcen innerhalb eines Projekts arbeiten in der Regel zusammen, um eine Anwendung zu bilden. In einem Projekt werden die Ressourcen auf der Grundlage von realen Anwendungsfällen sicher organisiert.

Oft hat eine Anwendung für jeden Lebenszyklus ein eigenes Projekt, zum Beispiel "myapp-dev", "myapp-staging" und "myapp-prod". Jedes aufeinanderfolgende Projekt kann unterschiedliche Sicherheitsregeln und eine andere Kopie deiner Anwendung haben, ohne dass du etwas tun musst, um sie aufzuteilen. Manchmal werden Projekte auch auf Teamebene verwendet. Ein Data-Science-Team, das hauptsächlich Datenpipelines erstellt oder Daten erforscht, nutzt beispielsweise ein gemeinsames Projekt für diese Arbeit, während die Pipelines, die in die Produktion überführt werden, in einem separaten, besser abgesicherten Projekt laufen.

In den meisten Fällen interagieren die meisten Ressourcen und Dienste nur mit Ressourcen innerhalb des Projekts, und die Standardsicherheitsregeln lassen dies zu. Du kannst jedoch Ressourcen zwischen Projekten austauschen, und das wird immer häufiger, je größer deine Anwendung oder Organisation wird. Du kannst z. B. Netzwerke zwischen Projekten austauschen oder Sicherheitsregeln erstellen, um den Zugriff auf Objekte, die auf Google Cloud Storage (GCS) gespeichert sind, projektübergreifend zu ermöglichen. Das Überschreiten einer Projektgrenze erfordert in der Regel einen bewussten Einrichtungsschritt, was die Sicherheit erhöht.

Wie du dein erstes Google Cloud Projekt erstellst

Hier,, richten wir ein leeres Google Cloud-Projekt ein und erhalten 300 $ an Credits.

  1. Gehe auf die Seite Erste Schritte und melde dich mit einem gültigen Gmail-Konto an.

  2. Akzeptiere die Nutzungsbedingungen, wie in Abbildung 1-2 dargestellt.

    Google Cloud Terms of Service dialog box
    Abbildung 1-2. Dialogfeld der Google Cloud-Nutzungsbedingungen
  3. Aktiviere dein kostenloses Probeabo mit dem Button oben rechts und erhalte 300 $ an Credits.

  4. Füge eine Kreditkarte hinzu, um loszulegen, wie in Abbildung 1-3 gezeigt. Keine Sorge, es gibt keine automatische Aufladung oder zusätzliche Gebühren, wenn du deine 300 Dollar aufgebraucht hast, solange du deine VMs ausschaltest und deine Daten löschst. Angesichts deines Standard-Ressourcenkontingents ist es im Allgemeinen schwer, eine hohe Rechnung aufzustellen.

Google Cloud credit card dialog box
Abbildung 1-3. Dialogfeld für die Google Cloud-Kreditkarte

Du wirst feststellen, dass ein neues Projekt für dich erstellt wurde, wie in Abbildung 1-4. Du kannst den Anzeigenamen ändern (aber nicht die Projekt-ID oder Projektnummer) oder ein neues Projekt mit dem von dir gewünschten Namen erstellen.

New project view
Abbildung 1-4. Neue Projektansicht

Herzlichen Glückwunsch! Du hast jetzt ein Projekt auf Google Cloud zum Laufen gebracht.

Unternehmensprojekte

Mit Google Cloud kannst du ganz einfach ein (oder mehrere) kleine Projekte für den persönlichen Gebrauch mit einem Gmail-Konto erstellen. Wenn du jedoch in einem Unternehmen arbeitest, gehören die Projekte zu einer Organisation (z. B. deinem Unternehmen) und sind in Ordnern organisiert (z. B. Abteilungen). Fast alle Ressourcen gehören nach wie vor zu einzelnen Projekten, mit Ausnahme einiger Sicherheitsregeln und Netzwerkressourcen.

Deine Erfahrungen als privater Entwickler und als Unternehmensentwickler werden sich sehr ähnlich anfühlen, auch wenn es mehr Sicherheitsregeln und Einschränkungen geben kann. Du kannst zum Beispiel keine Projekte nach Belieben erstellen, wie du es mit deinem Gmail-Konto getan hast, und du hast nicht die volle Macht über diese Projekte und Ressourcen. Du wirst wahrscheinlich auch mehr Fehler sehen, die mit organisatorischen Richtlinien und Einschränkungen zusammenhängen - zum Beispiel solltest du nicht den Port 22 für SSH auf all deinen VMs freigeben und du wirst einen Fehler sehen, wenn du es versuchst. Wir empfehlen diesen Leitfaden für die Entwicklung in einer eingeschränkten Google Cloud-Umgebung.

Abbildung 1-5 ist ein Beispiel für eine Google Cloud-Organisationshierarchie, in der Projekte und Ressourcen organisiert sind.

Google Cloud organization hierarchy
Abbildung 1-5. Google Cloud-Organisationshierarchie(https://oreil.ly/eXevQ)

Cloud-Konsole

Ein Großteil deiner täglichen Interaktion mit Google Cloud wird über die Konsole in deinem Browser erfolgen. Du hast die Konsole bereits gesehen, aber du kannst sie noch einmal über die Google Cloud Platform Landing Page aufrufen. Abbildung 1-6 zeigt die Konsole mit vielen der wichtigsten Elemente.

The Google Cloud Console
Abbildung 1-6. Die Google Cloud-Konsole

Tabelle 1-2 zeigt einige der am häufigsten verwendeten Teile der Google Cloud Console.

Tabelle 1-2. Teile der Google Cloud Console
Name Beschreibung
Navigation Menü Klicke hier, um auf die vielen GCP-Dienste zuzugreifen.
Aktuelles Projekt Wenn du in mehreren Projekten arbeitest, ist es hilfreich zu sehen, in welchem du dich gerade befindest.
Schnellsuchleiste Früher war ich stolz darauf, zu wissen, wo alle Dienste im Servicemenü aufgelistet sind, und sie für einen schnelleren Zugriff anzuheften, aber jetzt benutze ich immer öfter die Suchleiste, um schnell zu verschiedenen Seiten zu gelangen. Google ist schließlich ein Suchunternehmen.
Cloud Shell Öffne schnell eine Shell in deinem Browser, in der gcloud und andere Tools installiert sind. Mehr dazu in Kürze.
Girokonto Hier kannst du ganz einfach sehen, mit welchem Konto du eingeloggt bist - besonders hilfreich, wenn du zwischen deinem Firmenkonto und deinem Gmail-Konto wechselst.
Aktuelle Projektrechnung Hier werden deine aktuellen Kosten für das Projekt für den laufenden Monat angezeigt.

Klicke auf das Navigationsmenü, um die verfügbaren Dienste zu sehen. Du kannst direkt auf Compute Engine klicken, wenn du direkt auf die Standardseite (eine Liste deiner VMs in diesem Projekt) gehen willst, oder du kannst den Mauszeiger über Compute Engine bewegen und die zusätzlichen Unterseiten sehen, auf die du direkt zugreifen kannst, wie in Abbildung 1-7 gezeigt.

The navigation menu, where you access a service’s main page and subpages
Abbildung 1-7. Das Navigationsmenü, über das du auf die Hauptseite und die Unterseiten eines Dienstes zugreifen kannst

Beachte, dass du einzelne Dienste anheften kannst, wenn du sie häufig benutzt, damit sie oben im Navigationsmenü angezeigt werden, wie in Abbildung 1-8 gezeigt.

Pinning services in the menu
Abbildung 1-8. Anheften von Diensten im Navigationsmenü

Oder du kannst die Suchleiste verwenden, was oft schneller geht, wenn du viele Dienste nutzt.

Jetzt zeigen wir dir ein paar Dinge, die du in der Cloud-Konsole tun kannst. Zuerst laden wir eine Datei hoch und dann führen wir eine Abfrage durch.

Dieses Beispiel zeigt, wie wir die Konsole nutzen, um einfache, alltägliche Aktionen durchzuführen, die wir zuvor mit den Tools der Befehlszeilenschnittstelle (CLI) erledigt haben. In diesem Fall erstellen wir einen GCS-Bucket und laden eine Datei in ihn hoch:

  1. Öffne in der Cloud-Konsole den Bereich Cloud-Speicherung, wie in Abbildung 1-9 dargestellt.

    Cloud Storage browser from the navigation menu
    Abbildung 1-9. Browser für die Speicherung in der Cloud aus dem Navigationsmenü
  2. Erstelle einen neuen Bucket, wie in Abbildung 1-10 gezeigt. Nenne ihn, wie du willst.

    Create a new bucket
    Abbildung 1-10. Einen neuen Eimer erstellen
  3. Du solltest deinen neuen Eimer sehen, wie in Abbildung 1-11.

    An empty bucket in the console
    Abbildung 1-11. Ein leerer Eimer in der Konsole
  4. Es gibt viele Möglichkeiten, Dateien in die Cloud Speicherung hochzuladen. Erstelle zunächst eine leere Textdatei oder ein Dokument auf deinem Desktop und lade es dann über deinen Browser hoch. Das Ergebnis sieht dann wie in Abbildung 1-12 aus.

    A new file in the new bucket
    Abbildung 1-12. Eine neue Datei im neuen Bucket
  5. Herzlichen Glückwunsch! Du hast eine Datei hochgeladen. Du kannst sie anklicken, um mehr Daten über die Datei, die Größe und sogar einen authentifizierten Download-Link zu sehen.

  6. Vergiss nicht, das Objekt und den Eimer zu löschen, um langfristige Gebühren zu vermeiden.

gCloud Befehlszeilen-Tool

Ein Großteil deiner Arbeit mit der Google Cloud, sei es das Erstellen von VMs, das Bereitstellen von Apps oder das Ausführen von BigQuery-Abfragen, kann ganz einfach von deiner Workstation aus mit den gcloud-Dienstprogrammen erledigt werden. Zwar hat jeder Google Cloud-Dienst eine API und oft auch eine Client-Bibliothek in deiner bevorzugten Sprache, aber gcloud ist eine äußerst nützliche, weit verbreitete und erstklassige Möglichkeit, mit Google Cloud zu interagieren.

Installieren von gcloud

Das Client Software Development Kit (SDK) (gcloud) ist ein einfacher Weg, um schnell mit diesen Diensten über die CLI und durch Skripte zu arbeiten. Auf deinem System muss Python installiert sein. Wenn du Probleme mit der Installation hast, kannst du mit dem Abschnitt "Cloud Shell" weitermachen, um gcloud ganz einfach im Browser zu nutzen.

  1. Gehe zur Dokumentation des SDK-Installationsprogramms, um den gcloud-Client für dein Betriebssystem herunterzuladen. Deine Installationsreihenfolge sieht etwa so aus (für macOS):

    curl https://sdk.cloud.google.com | bash
  2. Wähle ein Verzeichnis aus (normalerweise das Heimatverzeichnis). Drücke einfach Enter für die Voreinstellung.

  3. Erlaube dem Installationsprogramm, deine Umgebungsvariable $PATH zu ändern, damit du gcloud sofort benutzen kannst, indem du es einfach eingibst. Drücke y, um fortzufahren.

  4. Aktualisiere deine .bashrc- oder .bash_profile-Datei so, dass das gcloud-Verzeichnis immer zur Umgebungsvariablen $PATH hinzugefügt wird. Lass sie leer und drücke die Eingabetaste, um die Standardeinstellung beizubehalten.

  5. Starte deine Shell neu:

    exec -l $SHELL
  6. Starte deine gcloud-Installation:

    gcloud init
  7. Du musst ein Konto auswählen (dazu musst du eventuell den Browser verlassen, um dich zu authentifizieren und einen Code zu kopieren und einzufügen).

  8. Wähle ein Standardprojekt aus:

    You are logged in as: [dhodun@google.com].
    Pick cloud project to use:
     [1] dhodun1
     [2] dhodun2
    Please enter numeric choice or text value (must exactly match list
    item):

Du hast auch die Möglichkeit, eine Standardregion oder -zone auszuwählen. Diese sind üblich und hilfreich, insbesondere für VMs (in der Google Compute Engine), vor allem wenn du hauptsächlich in einer einzigen Region oder Zone arbeitest und diese nicht bei jedem gcloud Befehl als Flags angeben möchtest.

gCloud-Befehle

Jetzt du gcloud installiert hast, findest du hier eine Reihe von nützlichen Befehlen, die du verwenden wirst. Ich empfehle dir, sie alle auszuprobieren, um ein Gefühl für das Tool zu bekommen.

Die meisten gcloud-Befehle folgen dem gleichen Format:

`gcloud` + `service` + `resource in that service` + `command`

Gängige Befehle sind list, create, delete, und so weiter.

gcloud config list

Unter findest du deine aktuelle gcloud-Konfiguration, einschließlich des aktuell eingestellten Projekts, Kontos, der Region und der Zone:

dhodun@cloudshell:~ (dhodun2)$ gcloud config list
[compute]
region = us-central1
zone = us-central1-c
[core]
account = dhodun@google.com
disable_usage_reporting = True
project = dhodun2
gcloud auth login
Diese fügt ein weiteres Konto mit Berechtigungsnachweis zu gcloud hinzu, das den browserbasierten Autorisierungsworkflow in Gang setzt.
gcloud auth list

Diese Seite listet alle Konten auf, die derzeit bei gcloud angemeldet sind. Das kommt häufig vor, wenn du ein Firmenkonto und ein persönliches Konto hast (und irgendwie in beiden auf demselben System eingeloggt sein kannst) oder wenn du mehrere persönliche Konten für verschiedene Projekte hast.

dhodun@cloudshell:~ (dhodun2)$ gcloud auth list
 Credentialed Accounts
ACTIVE ACCOUNT
*       dhodun@google.com
        dhodun@mycorp.com
gcloud config set project <project_ID>
Dieser Befehl legt dein aktuell konfiguriertes Standardprojekt für gcloud fest. Viele andere gcloud-Befehle und sogar Client-Bibliotheken ermitteln das Projekt, auf das sie zeigen sollen, anhand der Konfiguration von gcloud. Oft ist es bequemer, dein Standardprojekt mit diesem Befehl zu setzen, als "-p <project_ID>" an jeden anderen gcloud-Befehl anzuhängen.
gcloud auth set account <your_name@gmail.com>
Mit kannst du Konten ändern, wenn einige von ihnen in gcloud authentifiziert sind.
gcloud components update
Diese aktualisiert gcloud. Erinnere dich daran, dies regelmäßig zu tun, denn es werden ständig neue Befehle, Dienste und Funktionen für Google Cloud eingeführt.
gcloud compute instances create my-new-vm --image-family ubuntu-1604-lts --image-project ubuntu-os-cloud

Diese erstellt eine neue Ubuntu-VM mit allen anderen Standardeinstellungen in deinem Projekt. Ausgabe:

Created [https://www.googleapis.com/compute/v1/projects/dhodun2/zones/us-central1-c/instances/my-new-vm].
NAME       ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP   STATUS
my-new-vm  us-central1-c  n1-standard-1               10.128.0.29  35.223.11.69  RUNNING
gcloud compute instances list
Unter sind alle VMs in deinem aktuell eingestellten Projekt aufgelistet.
gcloud container clusters list
Unter werden alle aktuellen Google Kubernetes Engine (GKE)-Cluster aufgelistet, die in deinem Projekt laufen. Du wirst nichts sehen, wenn du noch keinen Cluster erstellt hast.
gcloud compute instances delete my-new-vm
Dieser Befehl löscht die gleiche VM, die du im vorherigen Beispiel erstellt hast. Bestätige mit y.
gcloud projects list --format="json"

Du kannst jeder gcloud Formatierungs- und Filtermuster hinzufügen, um sie besser lesbar zu machen. Dieser Befehl zeigt, was passiert, wenn du die Details all deiner Projekte im hübschen JSON-Format sehen willst.

[
  {
    "createTime": "2021-08-06T11:02:22.009Z",
    "lifecycleState": "ACTIVE",
    "name": "dhodun2",
    "projectId": "dhodun2",
    "projectNumber": "181626564526"
  }
]

Wenn du tiefer in gcloud eintauchen willst, schau dir den offiziellen Spickzettel an.

Andere gcloud Tools

Jetzt du gcloud installiert hast, hast du auch noch ein paar andere Tools:

  • gsutil für den Betrieb von GCS (Google Cloud Storage)

  • bq für CLI-Zugriff auf BigQuery, das serverlose Data Warehouse von Google Cloud

  • kubectl, das Open-Source-Tool für den Zugriff auf und die Interaktion mit Kubernetes-Clustern

Diese Werkzeuge werden in späteren Kapiteln behandelt, aber hier sind ein paar Beispielbefehle, um dir einen Eindruck zu vermitteln:

gsutil ls
Unter sind alle GCS-Eimer aufgelistet, auf die du Zugriff hast.
gsutil ls gs://gcp-public-data-landsat/

Dies ist der normale Listenbefehl für einen Ordner in einem Bucket.

dhodun@cloudshell:~ (dhodun2)$ gsutil ls gs://gcp-public-data-landsat/
gs://gcp-public-data-landsat/index.csv.gz
gs://gcp-public-data-landsat/LC08/
gs://gcp-public-data-landsat/LE07/
gs://gcp-public-data-landsat/LM01/
gs://gcp-public-data-landsat/LM02/
gs://gcp-public-data-landsat/LM03/
gs://gcp-public-data-landsat/LM04/
gs://gcp-public-data-landsat/LM05/
gs://gcp-public-data-landsat/LO08/
gs://gcp-public-data-landsat/LT04/
gs://gcp-public-data-landsat/LT05/
gs://gcp-public-data-landsat/LT08/
bq ls -project_id bigquery-public-data

Unter findest du eine Liste aller Datensätze, auf die du im jeweiligen Projekt Zugriff hast. Du kannst auch das Projekt-Flag leer lassen, um alles zu sehen, worauf du im aktuellen Projekt Zugriff hast. (Wenn du ein neues Projekt hast, wirst du nichts sehen.)

dhodun@cloudshell:~ (dhodun2)$ bq ls -project_id bigquery-public-data
               datasetId
 -------------------------------------
  austin_311
  austin_bikeshare
  austin_crime
  austin_incidents
  Austin_waste
...
bq query --nouse_legacy_sql \
'SELECT
   COUNT(*)
 FROM
   `bigquery-public-data`.samples.shakespeare'

Diese führt eine Abfrage auf einem BigQuery-Datensatz aus, in diesem Fall einfach das Zählen der Anzahl der Zeilen in einer öffentlich zugänglichen Tabelle. Du wirst diese Ausgabe sehen:

dhodun@cloudshell:~ (dhodun2)$ bq query --nouse_legacy_sql \
> 'SELECT
>    COUNT(*)
>  FROM
>    `bigquery-public-data`.samples.shakespeare'

Waiting on bqjob_r5dc0d7cca7a2a56_0000017b2be329b3_1 ... (0s) Current status: DONE
+--------+
|  f0_   |
+--------+
| 164656 |
+--------+
gcloud container clusters get-credentials CLUSTER_NAME --zone ZONE

Authentifiziere und speichere die Anmeldeinformationen für einen Google Kubernetes Engine-Cluster, damit du anschließend die Kubernetes-CLI kubectl verwenden kannst. In der Ausgabe siehst du, dass die Anmeldeinformationen zwischengespeichert und ein kubeconfig-Eintrag erstellt wird, damit du kubectl natürlich verwenden kannst.

dhodun@cloudshell:~ (dhodun2)$ gcloud container clusters get-credentials my-first-cluster-1 --zone us-central1-c
Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-first-cluster-1.
kubectl get pods

Jetzt kannst du kubectl verwenden, um mit deinem Cluster zu interagieren, wie du es mit jedem Kubernetes-Cluster tun würdest. Du wirst dies in Kapitel 6 verwenden.

dhodun@cloudshell:~ (dhodun2)$ kubectl get pods
NAME                                            READY   STATUS        RESTARTS   AGE
Redis                                           3/3     Running       0          2m1s
web-server                                      3/3     Running       0          79s

Cloud Shell

Eine der großartigen Funktionen für den Einstieg in die Google Cloud ist Cloud Shell, eine browserbasierte Entwicklungs- und Betriebsumgebung. Dabei handelt es sich im Wesentlichen um eine kleine VM, die mit gcloud, kubectl, Client-Bibliotheken und anderen Tools gebootet wird und mit deinem Konto bei Google Cloud authentifiziert ist. Sie verfügt sogar über eine webbasierte integrierte Entwicklungsumgebung (IDE). Damit kannst du mit deiner Cloud-Umgebung arbeiten, ohne dass du Software auf deinem Desktop installieren musst. Außerdem kannst du dich damit über deinen Browser bei VMs anmelden, ohne dass du SSH-Schlüssel herunterladen und verwalten musst.

Hier erfährst du, wie mit Hilfe von Cloud Shell eine Verbindung zu einer VM herstellt:

  1. Klicke in der Cloud-Konsole auf das Cloud-Shell-Symbol oben rechts, wie in Abbildung 1-13 dargestellt.

    Cloud Shell icon
    Abbildung 1-13. Cloud Shell-Symbol
  2. Sobald es bereitgestellt ist, führst du gcloud config list wie in Abbildung 1-14 aus, um zu sehen, dass du authentifiziert bist, auf dein aktuelles Projekt verweist und bereit bist, andere Befehle auszuführen.

    Basic Cloud Shell output
    Abbildung 1-14. Grundlegende Ausgabe der Cloud Shell
  3. Du kannst auch die Cloud Shell auf der GCE-Seite verwenden, um SSH direkt auf einer VM zu nutzen. Wenn du die Test-VM noch nicht gelöscht hast, kannst du auf die Google Compute Engine-Seite gehen und auf die SSH-Schaltfläche rechts neben der VM klicken, um dies zu testen, wie in Abbildung 1-15.

    The Cloud Shell button in the GCE VM list
    Abbildung 1-15. Die Schaltfläche Cloud Shell in der GCE VM-Liste
  4. Es öffnet sich ein neues Fenster, in dem neue SSH-Schlüssel auf die VM übertragen werden, damit du dich sicher verbinden kannst. Hinweis: Du musst dich nicht selbst um die Übertragung dieser Schlüssel kümmern!

  5. Jetzt, wo du dich auf der VM befindest (siehe Abbildung 1-16), kannst du überprüfen, ob du Zugriff auf gcloud hast. Allerdings wirst du mit dem Standarddienstkonto authentifiziert und nicht mit deinem Benutzerkonto. Es ist nicht empfehlenswert, deine Benutzerdaten auf VMs zu hinterlegen, denn jeder, der Zugang zu diesem Rechner erhält, könnte sich für dich ausgeben, wenn er andere Google Cloud APIs aufruft.

    Cloud shell SSH session into a GCE VM
    Abbildung 1-16. Cloud Shell SSH-Sitzung in einer GCE-VM

Kundenbibliotheken

Da du zunehmend Cloud-native Anwendungen schreibst, wirst du in deinem Code mit immer mehr Cloud-Diensten interagieren. Du kannst zum Beispiel Dateien auf Google Cloud Storage speichern oder Nachrichten an den Pub/Sub-Nachrichtenbus schreiben. Anstatt direkt in die API zu schreiben, bietet Google Cloud Client-Bibliotheken in vielen Sprachen an, die das viel einfacher machen, darunter Go, Java, Node.js, Python, Ruby, PHP, C# und C++. Oft werden sie für einzelne Dienste oder Gruppen von Diensten ausgeliefert. Du kannst sie alle in den Cloud-Client-Bibliotheken sehen.

Hier ist ein sehr einfaches Beispiel für die Verwendung einer Client-Bibliothek im Vergleich zu gcloud und ähnlichen CLI-Befehlen, die wir bisher verwendet haben. Wir werden einen Bucket mit der Storage Client Library und der Cloud Shell erstellen. Wir verwenden ein Python-Skript und die Client-Bibliothek, um einen Google Cloud Storage Bucket zu erstellen und eine Datei hochzuladen.

Dieses Codebeispiel sowie alle anderen Codebeispiele für dieses Kapitel findest du im GitHub-Repository dieses Buches. Du kannst mitmachen und den Code für dieses Beispiel kopieren.

  1. Öffne eine Cloud Shell-Umgebung, wie wir es gerade getan haben.

  2. Klicke oben rechts in der Cloud Shell auf Editor öffnen, um die Cloud Shell IDE zu öffnen, wie in Abbildung 1-17 dargestellt.

    Open Editor button
    Abbildung 1-17. Schaltfläche "Editor öffnen
  3. Klicke im Datei-Explorer auf Datei und dann auf Neue Datei und nenne sie storage_script.py. Gib den folgenden Code in diese Datei ein. Ändere den Bucket-Namen in etwas Einzigartiges und Zufälliges. Dein Projektname ist eine gute Wahl. Speichere die Datei. Du findest das Skript auch im GitHub Repo, das du in deine Cloud Shell Umgebung klonen kannst.

    from google.cloud import storage
    
    BUCKET_NAME = "INSERT-NEW-BUCKET-NAME"
    FILE = "file.txt"
    
    client = storage.Client()
    
    # create a new bucket
    bucket = client.bucket(BUCKET_NAME)
    bucket.storage_class = "STANDARD"
    new_bucket = client.create_bucket(bucket, location="us")
    
    # get the bucket (useful if it already exists)
    bucket = client.get_bucket(BUCKET_NAME)
    
    # create and upload a new blob from text
    blob = bucket.blob('remote/path/new_file.txt')
    blob.upload_from_string('New file!')
    print(blob.download_as_string())
    
    # create and upload a new blob from file
    blob2 = bucket.blob('remote/path/file.txt')
    blob2.upload_from_filename(filename='file.txt')
    print(blob2.download_as_string())
  4. Erstelle eine weitere Datei und nenne sie Datei.txt. Füge einen Text wie "Hello World!" hinzu und speichere die Datei.

  5. Wenn du mit der Bearbeitung fertig bist, klicke auf Terminal öffnen auf der rechten Seite der Cloud Shell, wie in Abbildung 1-18, um wieder in den Terminalmodus zu gelangen.

    Open Terminal button in Cloud Shell
    Abbildung 1-18. Schaltfläche "Terminal öffnen" in Cloud Shell
  6. Bevor du dein Skript ausführst, musst du mit dem Pip-Tool die Cloud Storage Client-Bibliothek für Python aus PyPi, dem Paket-Repository von Python, installieren.

    pip3 install google-cloud-storage
  7. Jetzt kannst du dein Skript ausführen.

    python3 storage_script.py

    Wenn das Skript die Inhalte beider Dateien liest, solltest du folgende Ausgabe sehen:

    b'New file!'
    b'Hello World!'
  8. Lösche deine Dateien und den Eimer, indem du den Browser benutzt, um zusätzliche Gebühren zu vermeiden.

Du hast gerade eine der Client-Bibliotheken verwendet, um dich programmatisch mit einem Google Cloud-Dienst zu verbinden. Es gibt viele Client-Bibliotheken, abhängig von den Diensten, mit denen du arbeitest.

Wenn du eher auf der Infrastrukturseite arbeitest, wirst du hauptsächlich die CLI-Tools oder Infrastruktur-Workflow-Tools wie Terraform verwenden, aber wenn du auf der Anwendungsseite arbeitest, wirst du häufig diese Client-Bibliotheken nutzen.

Beachte auch, dass wir bei der Erstellung des Clients client = storage.Client() keine Anmeldedaten oder eine Projekt-ID angegeben haben. Das liegt daran, dass die Client-Bibliotheken die Anmeldedaten aus einer Reihe von Einstellungen auf dem lokalen Rechner ableiten können, angefangen bei den Standardanmeldedaten der Anwendung. In der Cloud Shell sind diese bereits für dein Benutzerkonto festgelegt worden.

Das würde den Rahmen dieser Einführung sprengen ( ), aber du solltest wissen, dass jeder Code, der auf deinem Computer läuft und auf eine Google Cloud API zugreift, versucht, deine potenziell mächtigen Nutzerdaten zu verwenden, wenn du deine eigenen Anmeldedaten als Standard-Anmeldedaten verwendest. Mehr dazu findest du in diesem Leitfaden.

Abrechnung

Auch wenn fortgeschrittene Einrichtung von Abrechnungskonten für Unternehmen den Rahmen dieses Buches sprengen würde, solltest du die Grundlagen der Abrechnung verstehen. Wenn du Google Cloud-Ressourcen in einem Projekt verbrauchst, werden die Gebühren aufgelistet und in der Regel nachts in der Konsole aktualisiert. Wenn du den Bereich Abrechnung in der Konsole öffnest, siehst du eine Zusammenfassung deiner aktuellen Kosten, wie in Abbildung 1-19.

Billing breakdown for a single project
Abbildung 1-19. Aufschlüsselung der Rechnungen für ein einzelnes Projekt

Ein Projekt ist immer einem Abrechnungskonto zugeordnet, über das das Projekt bezahlt wird. Wenn du ein Projekt auf deiner Kreditkarte erstellt hast, hast du auch ein Rechnungskonto erstellt. In einem Unternehmen wird dir wahrscheinlich ein Projekt mit einem bereits zugewiesenen Rechnungskonto zugeteilt. Das Finanz- oder Beschaffungsteam kann dieses Konto verwalten, sodass sie die Kontrolle über den Zahlungsprozess haben und du die Kontrolle über deine Projektressourcen. Du kannst die aktuellen Kosten deines Projekts aber immer noch sehen, .

Preisgestaltung

Die Dienste von Google Cloud werden nach Verbrauch abgerechnet. Das heißt, es fallen keine Vorabkosten an, und die Dienste werden oft sekundenweise oder sogar noch weniger abgerechnet. Wenn du eine VM für 95 Sekunden eingeschaltet hast, zahlst du nur für 95 Sekunden Computernutzung.

Jeder Dienst hat ein anderes Preismodell. Bei BigQuery zum Beispiel zahlst du für die zugrunde liegende Speicherung, je nachdem, wie viele Daten du hast und wie lange sie gespeichert werden, und dann zahlst du auch für jede Abfrage, je nachdem, wie viele Daten gescannt werden. Bei Google Compute Engine hingegen zahlst du pro Sekunde für die Ressourcen, die für die eingeschalteten VMs verbraucht werden, z. B. Kerne, Arbeitsspeicher und Festplattenspeicher.

Wenn du gerade erst ein Konto erstellt hast, kannst du für ein paar Monate 300 $ kostenloses Guthaben nutzen. Viele Dienste haben auch eine kostenlose Stufe für eine geringe Nutzung, um dir den Einstieg zu erleichtern. Weitere Informationen findest du in der Dokumentation des jeweiligen Dienstes. Ein gutes Tool, um deine Kosten zu verstehen und vorherzusagen, ist der Google Cloud Preisrechner. Du kannst Dienste hinzufügen, um deine Rechnung zu schätzen, wie in Abbildung 1-20.

Google Cloud Pricing Calculator
Abbildung 1-20. Google Cloud Preiskalkulator

Cloud Code (IDE-Erweiterungen)

Ein weiteres Tool, das du unbedingt installieren solltest, ist Cloud Code, ein Plug-in für beliebte IDEs, VSCode und IntelliJ sowie Cloud Shell. Cloud Code bietet Autovervollständigung und In-IDE-Tools für Kubernetes- und Cloud Run-basierte Anwendungen. Er überbrückt die Lücke zwischen lokaler Entwicklung und der Bereitstellung in Cloud-Umgebungen, bietet Live-Debugging für deine Container-Workloads und ermöglicht es dir, diese Umgebungen mit einem einzigen Klick zu verwalten. Abbildung 1-21 zeigt die einfache Ausführung einer Anwendung aus der IDE, die auf einen lokalen Kubernetes-Minikube-Cluster ausgerichtet ist. Du kannst genauso einfach einen Cluster in der Cloud ansteuern.

Cloud Code run options
Abbildung 1-21. Cloud Code ausführen Optionen

Umzug von einer anderen Cloud

Wenn du von einer anderen Cloud zu Google wechselst, findest du eine Reihe sehr hilfreicher Leitfäden, um dein vorhandenes Wissen über Tools, Produkte, Dienste und Architekturen auf die Google Cloud-Welt zu übertragen. Wir empfehlen dir, dich schon früh mit diesen Informationen vertraut zu machen:

Dieses Kochbuch

Der Rest des Buches ist nach Technologie- oder Produktbereichen unterteilt. Spezielle Kapitel behandeln zum Beispiel Themen wie Kubernetes und BigQuery. Die restlichen Kapitel sind ebenfalls in das typische Kochbuchformat unterteilt, mit einem zu lösenden Problem und einer Lösung unter Verwendung von Cloud-Tools, begleitet von Beispielcode oder Skripten. Kommen wir nun zu Kapitel 2, in dem es um Google Cloud Functions geht.

Get Google Cloud Kochbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.