Google Cloud Run oder wie Sie Ihre statische Website in 5 Minuten und vielem mehr ausführen

TLDR; In diesem Artikel wird die Funktionsweise von Google Cloud Run nicht sehr ausführlich beschrieben. Google Cloud Run kann außerdem viel mehr als nur eine einfache Website. Der Artikel beschreibt nur einen sehr einfachen Anwendungsfall und meine ersten Erfahrungen damit und hilft hoffentlich anderen, die neugierig sind, aber nicht wissen, wo sie anfangen sollen (obwohl die bereits vorhandenen Quickstarts wahrscheinlich alles sind, was Sie brauchen).

Ich hatte einen Monat lang ein Problem. Meine dedizierten Server-Festplatten sind vollständig ausgefallen (fsck hat noch nicht einmal daran gearbeitet) und wir haben uns nach 10 Jahren entschlossen, sie loszuwerden. Leider lief dort die Geschäftswebsite meiner Mutter. Stimmt! Es ist nur eine statische Website mit sehr wenig Verkehr, aber es ist immer noch sehr schön für sie.

Ich habe bis gestern einen Monat lang nichts getan. Normalerweise nutze ich die Gelegenheit, um neue Dinge auszuprobieren, wenn etwas Ähnliches passiert. Ich wollte keinen Dienst verwenden, bei dem Sie die HTML-Dateien hochladen, und das war's. Die erste Option, die mir zur Verfügung stand, war die Verwendung von Firebase-Hosting, aber das habe ich bereits für eine andere Single-Page-Site getan, und ich verwende Firebase bereits bei der Arbeit.

Glücklicherweise ist Google Next19 vor einigen Wochen passiert. Gestern habe ich mir den Podcast zu Google Cloud Platform angehört und in der Folge ging es um ein neues Produkt, das im Rahmen von Next'19: Google Cloud Run angekündigt wurde. Als der Podcast fertig war, wurde mir klar: Ich verwende nur Google Cloud Run!

Was ist Google Cloud Run? Es wird ohne Server richtig gemacht. Entschuldigung: Mit Google Cloud-Funktionen können Sie einen HTTP-Request-Handler für Node.js (oder Go…) in eine Datei schreiben und diesen hochladen. Nachdem Sie diese Funktion implementiert haben, erhalten Sie eine URL, und Sie können darauf verweisen. Google Cloud Run geht zum nächsten Level. Anstatt die Dateien Ihrer Funktionen hochzuladen, stellen Sie jetzt Container bereit. Warum ist das besser? Denn jetzt können Sie alles in Ihren Container geben, was Sie wollen. Anstatt darauf zu warten, dass Ihre bevorzugte Sprache mit Cloud-Funktionen unterstützt wird (was niemals passieren könnte), erstellen Sie jetzt einfach einen Container und führen Sie das aus, was Sie wollen. Sie müssen lediglich den Port 8080 im Container öffnen (dazu später mehr). Wie bei den Cloud-Funktionen ist alles sofort einsatzbereit und Sie können Ihre Container mit anderen Google Cloud-Produkten verbinden. Stellen Sie sich die Möglichkeiten vor.

Bis heute bin ich mir ziemlich sicher, dass es eine Reihe von Artikeln gibt, die bereits darüber sprechen, was ich erklären werde, aber die Erfahrung war so schmerzlos, schön, einfach und schnell, dass ich dachte, es lohnt sich, sie zu teilen. Also los geht's!

Erstellen Sie ein neues Google Cloud Platform-Projekt

Wenn Sie zum ersten Mal ein neues GCP-Projekt (Google Cloud Platform) erstellen, gehen Sie wie folgt vor. Wenn Sie bereits wissen, wie es geht, erstellen Sie einfach ein neues Projekt in der Konsole und nennen Sie es "MyWebsite". Fahren Sie dann mit dem nächsten Abschnitt fort.

Rufen Sie zunächst die Google Cloud Console auf und klicken Sie oben auf Projekt auswählen. Dies öffnet ein modales Fenster und klickt auf Neues Projekt.

Als nächstes geben Sie einfach den Namen des Projekts ein, wir sagten, es sei MyWebsite und klicken auf Erstellen. In diesem Schritt ist Folgendes zu beachten: Die Projekt-ID lautet mywebsite-239106. Notieren Sie sie, da sie später verwendet wird.

Sobald das Projekt erstellt ist, wählen Sie es aus demselben Dropdown-Menü aus. Wählen Sie ein Projekt aus, auf das wir zu Beginn geklickt haben.

Abrechnung aktivieren (und über Preise)

Leider habe ich gerade gemerkt, dass Sie diesen Schritt durchlaufen müssen. Ich hatte meine Abrechnung bereits aktiviert, als ich Google Cloud Run zum ersten Mal ausprobierte. Daher war mir bisher nicht klar, dass dies erforderlich war. Ich gehe nur davon aus, dass Sie keine Probleme damit haben. Am Ende wird es "fast" kostenlos sein, eine Website mit wenig Verkehr zu betreiben. Weitere Informationen finden Sie unter Google Cloud Run Pricing.

Aktivieren Sie Google Cloud Run

Angenommen, Sie haben Ihr GCP-Projekt ausgewählt. Gehen Sie einfach zu Google Cloud Run und klicken Sie auf Start Using Cloud Run.

Sie sollten in der Google Cloud Run-Konsole landen.

Installieren und autorisieren Sie das Google Cloud SDK

Wenn Sie Google Cloud SDK bereits installiert haben und wissen, was Sie tun, können Sie diesen Schritt wahrscheinlich überspringen (denken Sie daran, Google Cloud SDK zu aktualisieren, die Beta-Komponenten zu installieren und Ihr neu erstelltes Projekt auszuwählen).

Wenn Sie OS X verwenden, ist es sehr wahrscheinlich, dass Sie Homebrew installiert haben. Wenn Sie dies tun, geben Sie einfach Folgendes ein:

$ brew cask installiere google-cloud-sdk

Wenn Sie Homebrew nicht haben, würde ich Ihnen empfehlen, es zu installieren. Wenn Sie es nicht installieren möchten, befolgen Sie die Installationsanweisungen von Google Cloud SDK. Dies gilt auch für GNU / Linux.

Sobald das Google Cloud SDK installiert ist, müssen Sie es mit dem Google-Konto autorisieren, mit dem Sie Ihr Projekt erstellt haben. Geben Sie Folgendes ein:

$ gcloud auth login

Installieren Sie als Nächstes die Komponenten von Google Cloud SDK Beta:

$ gcloud-Komponenten installieren die Beta

Wählen Sie schließlich Ihr Projekt aus (erinnern Sie sich an die zuvor notierte Projekt-ID?):

$ gcloud config set project mywebsite-239016

Installieren Sie Docker

Wiederum in OS X, wenn Sie Homebrew haben, geben Sie einfach Folgendes ein:

$ brew cask install docker

Wenn nicht, laden Sie Docker herunter und folgen Sie den Anweisungen. Es ist ziemlich einfach.

Erstellen Sie den Container

Zum Schluss der interessante Teil. Als Nächstes wird eine einfache HTML-Seite bereitgestellt und über Google Cloud Run bereitgestellt. Lassen Sie uns zuerst ein neues Verzeichnis erstellen und die Dinge ein wenig organisieren:

$ mkdir-Website
$ cd website
$ mkdir html nginx

Erstellen Sie im HTML-Verzeichnis eine index.html-Datei mit folgendem Inhalt:


 Hallo von Google Cloud Run! 

Um diese Datei bereitzustellen, benötigen wir lediglich einen Webserver. Wir werden Nginx verwenden. Ich sagte, dass Google Cloud Run Container verwendet, was bedeutet, dass wir einfach einen vorhandenen Nginx-Container verwenden können. Das einzige Problem mit dem Standard-Nginx-Container ist, dass er Dateien auf Port 80 bereitstellt. Google Cloud Run erwartet jedoch, dass Container Dinge auf Port 8080 bereitstellen. Daher stellen wir Nginx später nur eine neue Konfigurationsdatei zur Verfügung.

Erstellen Sie eine neue Docker-Datei im Website-Verzeichnis:

$ cat Dockerfile
VON Nginx
COPY html / usr / share / nginx / html
COPY nginx / default.conf /etc/nginx/conf.d/default.conf

In dieser Docker-Datei weisen wir Docker lediglich an, einen neuen Container auf der Basis des Nginx-Containers zu erstellen, und fügen unser HTML-Verzeichnis (das unsere index.html enthält) sowie eine Nginx-Konfigurationsdatei hinzu, die wir als Nächstes erstellen werden.

Erstellen Sie im Verzeichnis nginx eine Datei default.conf (beachten Sie, wie wir Port 8080 überwachen):

$ cat nginx / default.conf
Server {
    höre 8080;
    Servername localhost;
    Standort / {
        root / usr / share / nginx / html;
        index index.html index.htm;
    }
    # Serverfehlerseiten auf die statische Seite /50x.html umleiten
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root / usr / share / nginx / html;
    }
}

Nach all dem sollten Sie diese Verzeichnisstruktur haben:

$ tree
.
├── Dockerfile
├── html
│ └── index.html
└── Nginx
    └── default.conf

Beachten Sie, dass Sie im HTML-Verzeichnis oder anderswo möglicherweise weitere Dateien hinzugefügt haben: mehr HTML-Dateien, CSS-Dateien, Bilder usw. Wenn es sich um eine große Website handelt, ist es wahrscheinlich besser, Inhalte in Google Cloud Storage hochzuladen und den Container klein zu halten.

Erstellen Sie den Container und stellen Sie ihn bereit

Jetzt können wir den Container bauen und schieben. Dies geschieht mit einem Google Cloud SDK-Befehl:

$ gcloud builds submit --tag gcr.io/mywebsite-239106/hello

Wir haben unser Projekt mywebsite-239106 und einen Namen für unseren neuen Google Cloud Run-Dienst "Hallo" angegeben.

Schließlich können wir den neuen Container für Google Cloud Run bereitstellen:

$ gcloud beta run deploy --image gcr.io/mywebsite-239106/hello

Wenn alles gut gegangen ist, sollten Sie eine Nachricht wie diese sehen:

Service [Hallo] Revision [Hallo-00001] wurde bereitgestellt und dient dem Datenverkehr unter https://hello-7ss2wutasq-uc.a.run.app

Und es scheint, dass die generierte URL läuft!

Weitere Informationen finden Sie auch in der Google Cloud Run-Konsole:

Danach können Sie Änderungen an Ihrer Website vornehmen und den neuen Container weiterhin erstellen und bereitstellen. In Google Cloud Run werden alle von Ihnen bereitgestellten Revisionen aufgelistet.

Weisen Sie eine Domain zu

Als Nächstes können Sie dem neuen Google Cloud Run-Dienst eine Domain zuweisen. Ich werde hier nicht darauf eingehen, da Sie Ihre Domain-DNS-Einträge aktualisieren müssen und dies wirklich von dem von Ihnen verwendeten Dienst abhängt, aber ich muss sagen, dass der Prozess sehr einfach ist. Sobald die Bereitstellung abgeschlossen ist, müssen Sie nur noch auf Benutzerdefinierte Domänen verwalten klicken (siehe Abbildung oben).

Oh! Und das Beste daran ist, dass Zertifikate bereits für Sie verwaltet werden. Ich war glücklich überrascht, dass für meine Domain bereits ein Let's Encrypt-Zertifikat eingerichtet war und HTTP und HTTPS wie ein Zauber funktionierten.

Und das war es!

Übrigens erwähnte ich etwas über Firebase und Arbeit. Wir verwenden Firebase und andere Tools von Google Cloud Platform bei der Arbeit. Ich wollte nur ein neues Projekt vorstellen, an dem wir bereits seit einigen Monaten arbeiten. Es ist ein ziemlich cooles neues Konzept für die Bildschirmfreigabe und hat auch einen merkwürdigen Namen. Probieren Sie es aus: https://www.rumpus.co/