1. Hinweis
Google bietet ein leistungsfähiges Tool zum Erstellen von Images, mit dem Sie im Handumdrehen und ohne Docker oder Dockerfile im Handumdrehen ein optimiertes Docker-Container-Image für Java-Anwendungen erstellen und veröffentlichen können. Mit Cloud Run, einer verwalteten Computing-Plattform, die Ihre zustandslosen Container automatisch skaliert, nutzt Google Cloud auch serverlose Lösungen für Container. In diesem Codelab erfahren Sie, wie einfach es ist, Ihre Spring Boot Kotlin-App in Container zu verlagern, in Container Registry zu veröffentlichen und das Image nahtlos in Google Cloud auszuführen.
In diesem Codelab erfahren Sie, wie Sie eine einfache Anwendung in Kotlin einrichten und so Google Cloud-Dienste und -Tools wie Jib, Container Registry und Cloud Run verwenden.
Vorbereitung
- Vertrautheit mit der Programmiersprache und -tools von Java
- Kenntnisse in standardmäßigen Linux-Texteditoren wie vim, emacs und nano
Aufgaben
- Eine Spring Boot Kotlin-App einrichten
- Optimiertes Docker-Image erstellen
- Veröffentlichen Sie das Image in Container Registry.
- Führen Sie die Containeranwendung in Cloud Run aus.
Voraussetzungen
- Ein Google Cloud-Projekt
- Ein Browser wie Google Chrome
2. Einrichtung
Umgebung für das selbstbestimmte Lernen einrichten
- Melden Sie sich in der Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.
Notieren Sie sich die Projekt-ID, also den projektübergreifend nur einmal vorkommenden Namen eines Google Cloud-Projekts. Der oben angegebene Name ist bereits vergeben und kann leider nicht mehr verwendet werden. Sie wird in diesem Codelab später als PROJECT_ID
bezeichnet.
- Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Google Cloud-Ressourcen nutzen zu können.
Dieses Codelab sollte möglichst wenig kosten. Folgen Sie der Anleitung im Abschnitt „Bereinigen“, . Hier erfahren Sie, wie Sie Ressourcen herunterfahren, damit Ihnen über dieses Tutorial hinaus keine Kosten entstehen. Neue Google Cloud-Nutzer haben Anspruch auf eine kostenlose Testversion mit 300$Guthaben.
Cloud Shell
Sie können Google Cloud zwar von Ihrem Laptop aus der Ferne bedienen, in diesem Codelab verwenden Sie jedoch Cloud Shell, eine Befehlszeilenumgebung, die in Google Cloud ausgeführt wird.
Cloud Shell aktivieren
- Klicken Sie in der Cloud Console auf Cloud Shell aktivieren .
Wenn Sie Cloud Shell noch nie gestartet haben, wird ein Zwischenbildschirm (below the fold) angezeigt, in dem beschrieben wird, worum es sich dabei handelt. Klicken Sie in diesem Fall auf Weiter. Der Chat wird nie wieder angezeigt. So sieht dieser einmalige Bildschirm aus:
Die Bereitstellung und Verbindung mit Cloud Shell dauert nur einen Moment.
Diese virtuelle Maschine verfügt über alle Entwicklungstools, die Sie benötigen. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und wird in Google Cloud ausgeführt. Dadurch werden die Netzwerkleistung und die Authentifizierung erheblich verbessert. Viele, wenn nicht sogar alle Arbeiten in diesem Codelab können Sie ganz einfach mit einem Browser oder Ihrem Chromebook erledigen.
Sobald Sie mit Cloud Shell verbunden sind, sollten Sie sehen, dass Sie bereits authentifiziert sind und dass das Projekt bereits auf Ihre Projekt-ID eingestellt ist.
- Führen Sie in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob Sie authentifiziert sind:
gcloud auth list
Befehlsausgabe
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Führen Sie in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob der gcloud-Befehl Ihr Projekt kennt:
gcloud config list project
Befehlsausgabe
[core] project = <PROJECT_ID>
Ist dies nicht der Fall, können Sie die Einstellung mit diesem Befehl vornehmen:
gcloud config set project <PROJECT_ID>
Befehlsausgabe
Updated property [core/project].
3. Spring Boot-Anwendung initialisieren
- Generieren Sie eine neue Spring Boot-Anwendung mit Spring Initializr.
$ curl https://start.spring.io/starter.tgz \ -d language=kotlin \ -d dependencies=web \ -d baseDir=kotlin-jib-cloud-run | tar -xzvf -
Der Initializr fügt den spring-boot-starter-web
automatisch zu den Abhängigkeiten im pom.xml
der Vorlagen-App hinzu.
- Wechseln Sie in das Verzeichnis der Vorlagen-App.
$ cd kotlin-jib-cloud-run
- Erstellen Sie die Anwendung mit Maven und führen Sie sie aus.
$ ./mvnw -DskipTests spring-boot:run
- Nach dem Start überwacht die App Port 8080. Klicken Sie in der Cloud Shell-Symbolleiste auf Webvorschau und wählen Sie Vorschau auf Port 8080 aus, um auf die App zuzugreifen.
- Sie sollten eine 404-Antwort erhalten, da die App noch nichts Nützliches bietet. Beenden Sie die App mit
Control+C
.
4. Web-Controller hinzufügen
- Erstellen Sie im Demopaket die folgende
Controller
-Klasse:
$ vi src/main/kotlin/com/example/demo/Controller.kt or $ nano src/main/kotlin/com/example/demo/Controller.kt
src/main/kotlin/com/example/demo/Controller.kt
package com.example.demo
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController
@RestController
class Controller {
@GetMapping("/")
fun saySomething(): String {
return "Kotlin app on Cloud Run, containerized by Jib!"
}
}
- Erstellen Sie die App neu und führen Sie sie aus.
$ ./mvnw spring-boot:run
- Prüfen Sie die App noch einmal mithilfe der Webvorschau . Dieses Mal sollten Sie die Meldung „
Kotlin app on Cloud Run, containerized by Jib!
“ sehen. Beenden Sie die App mitControl+C
.
5. Anwendung containerisieren und in Container Registry veröffentlichen
Mit Jib können Sie Ihre App ohne Docker optimiert in Container verlagern und in einer beliebigen Container Registry veröffentlichen.
- Bevor Sie fortfahren, müssen Sie die Container Registry API aktivieren. Dies muss nur einmal pro Projekt erfolgen, um die API zugänglich zu machen.
$ gcloud services enable containerregistry.googleapis.com
- Führen Sie Jib aus, um ein Docker-Image zu erstellen und in Container Registry zu veröffentlichen.
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:3.1.1:build \ -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run
Schließlich wird die folgende Meldung angezeigt, dass die Anwendung containerisiert und in Container Registry übertragen wurde.
[INFO] Built and pushed image as gcr.io/PROJECT_ID/kotlin-jib-cloud-run ... [INFO] BUILD SUCCESS
Wenn ein Fehler auftritt, prüfen Sie, ob $GOOGLE_CLOUD_PROJECT
richtig auf Ihre Google Cloud-Projekt-ID (PROJECT_ID
) festgelegt ist.
- Bevor Sie fortfahren, prüfen Sie, ob das Bild veröffentlicht wurde. Kehren Sie zur Cloud Console zurück, klicken Sie auf das Navigationsmenü und wählen Sie Container Registry aus.
Sie sehen, dass Ihr Bild erfolgreich veröffentlicht wurde.
6. Containeranwendung in Cloud Run ausführen
Cloud Run bietet serverloses Computing für Container und skaliert Ihre zustandslosen Container automatisch.
- Klicken Sie noch einmal auf das Navigationsmenü und wählen Sie Cloud Run aus.
Wenn Sie zum ersten Mal auf Cloud Run zugreifen, wird das folgende Dialogfeld für die einmalige Einrichtung angezeigt. Klicken Sie auf Start Using Cloud Run (Cloud Run verwenden), wenn die Option angezeigt wird.
- Klicken Sie auf der Cloud Run-Seite auf Dienst erstellen.
- Klicken Sie im nächsten Bildschirm unter Quelle auf Auswählen. Die Quelle ist das Image, das Sie in Cloud Run ausführen möchten.
- Im Dialogfeld wird das zuvor erstellte Image angezeigt. Wählen Sie das Bild aus und klicken Sie auf Weiter.
- Mit nur wenigen Klicks können Sie die App jetzt bereitstellen. Wählen Sie unter Bereitstellungsplattform die Option Cloud Run (vollständig verwaltet) aus, damit der Dienst vollständig in Google Cloud verwaltet wird. Wählen Sie eine für Ihren Standort geeignete Region aus, wählen Sie Nicht authentifizierte Aufrufe zulassen aus und klicken Sie auf Erstellen. Fertig!
Wenn das Image vollständig bereitgestellt ist, wird auf der Cloud Run-Seite eine URL für den Zugriff auf die Anwendung angezeigt. Jetzt ansehen!
Am Ende wird die Nachricht angezeigt, die Sie von der App erwarten.
Kotlin app on Cloud Run, containerized by Jib!
Fertig! Falls Sie in Zukunft neue App-Versionen bereitstellen möchten, klicken Sie auf der Seite auf Neue Version bereitstellen.
7. Bereinigen
- Zum Bereinigen Ihrer Umgebung müssen Sie die bereitgestellte Anwendung in Cloud Run und das veröffentlichte Image in Container Registry löschen. Rufen Sie Cloud Run auf, wählen Sie die Anwendung aus und klicken Sie auf Löschen.
- Rufen Sie entsprechend die Seite Container Registry auf und löschen Sie das Image.
8. Glückwunsch
Glückwunsch! Sie haben Ihre Spring Boot Kotlin-App erfolgreich containerisiert und in Cloud Run bereitgestellt.
Mit Jib haben Sie ein optimiertes Container-Image erstellt, ohne dass Docker installiert ist, oder ein Dockerfile geschrieben und in Container Registry veröffentlicht haben. Jib optimiert die Image-Erstellung, sodass alle Nutzer ohne fundierte Docker-Kenntnisse Java-Anwendungen schnell und effizient containerisieren können. Danach haben Sie die Anwendung mit wenigen Klicks in Cloud Run bereitgestellt, um sie im Handumdrehen bereitzustellen.
Weitere Informationen
- Java-Anwendung in Kubernetes in Google Kubernetes Engine bereitstellen
- Cloud Run-Dokumentation
- Cloud Run – Übersicht
- Einführung in Jib — Java Docker-Images besser erstellen
- Mit Jib, einem Google-Tool zum Erstellen von Images für Java-Anwendungen, können Sie Container schneller erstellen
- Jib – Java-Anwendung containerisieren
- Jib Gitter-Kanal
- Mailingliste der Jib-Nutzer