Google udostępnia zaawansowane narzędzie do tworzenia obrazów, za pomocą którego możesz łatwo i szybko tworzyć oraz 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 modułu dowiesz się, jak łatwo skonteneryzować aplikację Spring Boot Kotlin, opublikować ją w Container Registry i bezproblemowo uruchomić obraz w Google Cloud.
Ten przewodnik przeprowadzi Cię przez proces konfigurowania prostej aplikacji w Kotlinie, która pokazuje, jak korzystać 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;
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 lub G Suite, 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ć płatności w Cloud Console, aby móc korzystać z zasobów Google Cloud.
Wykonanie tego samouczka nie powinno kosztować więcej niż kilka dolarów, ale może okazać się droższe, jeśli zdecydujesz się wykorzystać więcej zasobów lub pozostawisz je uruchomione.
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
Google Cloud można obsługiwać zdalnie z laptopa, ale w tym ćwiczeniu będziesz używać Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud.
Aktywowanie Cloud Shell
- W konsoli Cloud kliknij Aktywuj Cloud Shell
.
Jeśli nigdy wcześniej nie uruchamiałeś(-aś) Cloud Shell, zobaczysz ekran pośredni (poniżej linii podziału) z opisem tego środowiska. W takim przypadku kliknij Dalej (i nie zobaczysz już tego ekranu). Ekran jednorazowy wygląda tak:
Udostępnienie 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 stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i uwierzytelnianie. Większość, jeśli nie wszystkie, zadań w tym laboratorium możesz wykonać za pomocą przeglądarki lub Chromebooka.
Po połączeniu z Cloud Shell zobaczysz, że jesteś już uwierzytelniony, a projekt jest już ustawiony na Twój identyfikator projektu.
- Aby potwierdzić, że masz autoryzację, 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`
gcloud config list project
Wynik polecenia
[core] project = <PROJECT_ID>
Jeśli nie, możesz ustawić go za pomocą tego polecenia:
gcloud config set project <PROJECT_ID>
Wynik polecenia
Updated property [core/project].
- 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
.
- 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 podglądu w przeglądarce
. Tym razem powinien wyświetlić się komunikat „
Kotlin app on Cloud Run, containerized by Jib!
”. Zatrzymaj aplikację za pomocą klawiszaControl+C
.
Za pomocą Jib możesz w zoptymalizowany sposób konteneryzować aplikację bez użycia Dockera i publikować 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 przypadku każdego projektu.
$ 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:1.8.0: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.
Cloud Run udostępnia bezserwerowe kontenery, automatycznie skalując bezstanowe kontenery.
- Ponownie kliknij Menu nawigacyjne
i wybierz Cloud Run.
Jeśli korzystasz z Cloud Run po raz pierwszy, 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.
- 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. Znakomicie.
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!
Znakomicie. 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ę.
- 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.
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 konteneryzować aplikacje Java. Następnie kilkoma kliknięciami wdrożysz 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 Jiba