1. Zanim zaczniesz
Google udostępnia zaawansowane narzędzie do tworzenia obrazów, za pomocą którego możesz łatwo i szybko tworzyć i publikować zoptymalizowane obrazy kontenerów Dockera dla aplikacji Java bez użycia Dockera ani pliku Dockerfile. Google Cloud udostępnia też bezserwerowe kontenery w ramach Cloud Run, czyli zarządzanej platformy obliczeniowej, która automatycznie skaluje bezstanowe kontenery. Z tego laboratorium dowiesz się, jak łatwo można umieścić aplikację Spring Boot Kotlin w kontenerze, opublikować ją w Container Registry i bezproblemowo uruchomić obraz w Google Cloud.
W tym module dowiesz się, jak skonfigurować prostą aplikację w Kotlinie, która demonstruje korzystanie z usług i narzędzi Google Cloud, w tym Jib, Container Registry i Cloud Run.
Wymagania wstępne
- Znajomość języka programowania Java i narzędzi
- Znajomość standardowych edytorów tekstu systemu Linux, takich jak Vim, Emacs i nano.
Jakie zadania wykonasz
- Skonfiguruj aplikację Spring Boot w Kotlinie.
- Utwórz zoptymalizowany obraz Dockera.
- Opublikuj obraz w Container Registry.
- Uruchom skonteneryzowaną aplikację w Cloud Run.
Czego potrzebujesz
- projekt Google Cloud,
- przeglądarka, np. Google Chrome;
2. Przygotowania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.



Zapamiętaj identyfikator projektu, czyli unikalną nazwę we wszystkich projektach Google Cloud (podana powyżej nazwa jest już zajęta i nie będzie działać w Twoim przypadku). W dalszej części tego laboratorium będzie on nazywany PROJECT_ID.
- Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów Google Cloud.
Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Wykonaj instrukcje z sekcji „Czyszczenie”, w której znajdziesz informacje o tym, jak wyłączyć zasoby, aby uniknąć naliczenia opłat po zakończeniu tego samouczka. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Cloud Shell
Z Google Cloud możesz korzystać zdalnie na laptopie, ale w tym module użyjesz Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud.
Aktywowanie Cloud Shell
- W konsoli Cloud kliknij Aktywuj Cloud Shell
.

Jeśli uruchamiasz Cloud Shell po raz pierwszy, zobaczysz ekran pośredni (część strony widoczna po przewinięciu) z opisem tego środowiska. W takim przypadku kliknij Dalej, a ten ekran nie będzie się już wyświetlać. Ten wyświetlany jednorazowo ekran wygląda tak:

Uzyskanie dostępu do środowiska Cloud Shell i połączenie się z nim powinno zająć tylko kilka chwil.

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Większość zadań w tym module, a być może wszystkie, możesz wykonać w przeglądarce lub na Chromebooku.
Po połączeniu z Cloud Shell zobaczysz, że uwierzytelnianie zostało już przeprowadzone, a projekt jest już ustawiony na Twój identyfikator projektu.
- Aby potwierdzić, że uwierzytelnianie zostało przeprowadzone, uruchom w Cloud Shell to polecenie:
gcloud auth list
Wynik polecenia
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Aby potwierdzić, że polecenie gcloud zna Twój projekt, uruchom w Cloud Shell to polecenie:
gcloud config list project
Wynik polecenia
[core] project = <PROJECT_ID>
Jeśli nie, możesz go ustawić za pomocą tego polecenia:
gcloud config set project <PROJECT_ID>
Wynik polecenia
Updated property [core/project].
3. Inicjowanie aplikacji Spring Boot
- Wygeneruj nową aplikację Spring Boot za pomocą Spring Initializr.
$ curl https://start.spring.io/starter.tgz \
-d language=kotlin \
-d dependencies=web \
-d baseDir=kotlin-jib-cloud-run | tar -xzvf -
Pamiętaj, że Initializr automatycznie doda spring-boot-starter-web do zależności w pom.xml aplikacji szablonu.
- Przejdź do katalogu aplikacji szablonu.
$ cd kotlin-jib-cloud-run
- Skompiluj i uruchom aplikację za pomocą Maven.
$ ./mvnw -DskipTests spring-boot:run
- Po uruchomieniu aplikacja zacznie nasłuchiwać na porcie 8080. Aby uzyskać dostęp do aplikacji, na pasku narzędzi Cloud Shell kliknij Podgląd w przeglądarce
i wybierz Podejrzyj na porcie 8080.

- Powinna zostać zwrócona odpowiedź 404, ponieważ aplikacja nie wykonuje jeszcze żadnych przydatnych działań. Zatrzymaj aplikację za pomocą
Control+C.
4. Dodawanie kontrolera internetowego
- W pakiecie demonstracyjnym utwórz tę klasę
Controller:
$ 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!"
}
}
- Ponownie skompiluj i uruchom aplikację.
$ ./mvnw spring-boot:run
- Sprawdź ponownie aplikację, korzystając z funkcji Podgląd w przeglądarce
. Tym razem powinien wyświetlić się komunikat „Kotlin app on Cloud Run, containerized by Jib!”. Zatrzymaj aplikację za pomocąControl+C.
5. Konteneryzowanie aplikacji i publikowanie jej w Container Registry
Za pomocą Jib możesz w zoptymalizowany sposób skonteneryzować aplikację bez użycia Dockera i opublikować ją w dowolnym rejestrze kontenerów.
- Zanim przejdziesz dalej, musisz aktywować interfejs Container Registry API. Aby interfejs API był dostępny, wystarczy to zrobić raz w każdym projekcie.
$ gcloud services enable containerregistry.googleapis.com
- Uruchom Jib, aby utworzyć obraz Dockera i opublikować go w Container Registry.
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:3.1.1:build \
-Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run
W końcu zobaczysz komunikat informujący o tym, że aplikacja została skonteneryzowana i przesłana do Container Registry.
[INFO] Built and pushed image as gcr.io/PROJECT_ID/kotlin-jib-cloud-run ... [INFO] BUILD SUCCESS
Jeśli pojawi się błąd, sprawdź, czy zmienna $GOOGLE_CLOUD_PROJECT jest prawidłowo ustawiona na identyfikator projektu Google Cloud (PROJECT_ID).
- Zanim przejdziesz dalej, sprawdź, czy obraz został opublikowany. Wróć do Cloud Console, kliknij Menu nawigacyjne
i wybierz Container Registry.


Zobaczysz, że obraz został opublikowany.

6. Uruchamianie skonteneryzowanej aplikacji w Cloud Run
Cloud Run udostępnia bezserwerowe kontenery, które automatycznie skalują się bezstanowo.
- Ponownie kliknij Menu nawigacyjne
i wybierz Cloud Run.

Jeśli po raz pierwszy uzyskujesz dostęp do Cloud Run, zobaczysz to okno dialogowe z jednorazową konfiguracją. Jeśli pojawi się opcja Zacznij korzystać z Cloud Run, kliknij ją.

- Na stronie Cloud Run kliknij Utwórz usługę.

- Na następnym ekranie w sekcji Źródło kliknij Wybierz. Źródłem jest obraz, który chcesz uruchomić w Cloud Run.

- W oknie pojawi się utworzony wcześniej obraz. Wybierz obraz i kliknij Dalej.

- Teraz wystarczy kilka kliknięć, aby wdrożyć aplikację. W sekcji Platforma wdrożenia wybierz Cloud Run (usługa w pełni zarządzana), aby usługa była w pełni zarządzana w Google Cloud. Wybierz region odpowiedni dla Twojej lokalizacji, zaznacz Zezwalaj na nieuwierzytelnione wywołania i kliknij Utwórz. To wszystko.

Gdy obraz zostanie w pełni wdrożony, na stronie Cloud Run pojawi się adres URL umożliwiający dostęp do aplikacji. Sprawdź go.

Na koniec zobaczysz komunikat, którego oczekujesz od aplikacji.
Kotlin app on Cloud Run, containerized by Jib!
To wszystko. Jeśli w przyszłości będziesz potrzebować wdrożyć nowe wersje aplikacji, możesz to zrobić, klikając na stronie Wdróż nową wersję.
7. Czyszczenie danych
- Aby wyczyścić środowisko, musisz usunąć wdrożoną aplikację w Cloud Run i opublikowany obraz w Container Registry. Otwórz Cloud Run, wybierz aplikację i kliknij Usuń.

- Podobnie otwórz stronę Container Registry i usuń obraz.

8. Gratulacje
Gratulacje! Udało Ci się skonteneryzować aplikację Spring Boot Kotlin i wdrożyć ją w Cloud Run.
Za pomocą Jib udało Ci się utworzyć zoptymalizowany obraz kontenera bez instalowania Dockera i pisania pliku Dockerfile, a następnie opublikować go w Container Registry. Jib optymalizuje tworzenie obrazów, dzięki czemu każdy, kto nie ma dogłębnej wiedzy o Dockerze, może szybko i wydajnie kontenerować aplikacje Java. Następnie kilkoma kliknięciami wdrożyliśmy aplikację w Cloud Run, aby w mgnieniu oka zacząć ją udostępniać.
Więcej informacji
- Wdrażanie aplikacji w Javie w Kubernetes w Google Kubernetes Engine
- Dokumentacja Cloud Run
- Omówienie Cloud Run
- Przedstawiamy Jib – lepsze tworzenie obrazów Dockera w Javie
- Szybsze tworzenie kontenerów za pomocą Jib, narzędzia Google do tworzenia obrazów aplikacji w języku Java
- Jib – konteneryzacja aplikacji w Javie
- Kanał Jib Gitter
- Lista adresowa użytkowników Jib