
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create a GKE Cluster
/ 20
Deploy Existing Monolith
/ 20
Migrate Orders to a microservice
/ 20
Migrate Products to microservice
/ 20
Migrate Frontend to microservice
/ 20
Jakie korzyści płyną z przejścia z aplikacji monolitycznej na architekturę mikroserwisów? Podzielenie aplikacji na mikroserwisy daje opisane poniżej korzyści, z których większość wywodzi się z faktu, że mikroserwisy są ze sobą luźno powiązane:
W porównaniu z monolitami mikroserwisy mają też swoje wady. Oto kilka z nich:
W tym module wdrożysz istniejącą aplikację monolityczną w klastrze Google Kubernetes Engine, a następnie podzielisz ją na mikroserwisy. Kubernetes to platforma umożliwiająca hostowanie, skalowanie i wdrażanie kontenerów oraz zarządzanie nimi. Kontenery to przenośny sposób pakowania i uruchamiania kodu. Są one szczególnie przydatne w modelu mikroserwisów, w którym poszczególne mikroserwisy działają we własnych kontenerach.
Zacznij od podzielenia monolitu kolejno na 3 mikroserwisy. Będą one nosiły nazwy Orders (Zamówienia), Products (Produkty) i Frontend. Za pomocą Cloud Build dla każdego z mikroserwisów utwórz obraz Dockera. Następnie wdróż i udostępnij te mikroserwisy w Google Kubernetes Engine (GKE) z usługą Kubernetes typu LoadBalancer. Wykonasz to zadanie dla każdej usługi z jednoczesną ich refaktoryzacją z monolitu. Podczas trwania tego procesu będą działały zarówno mikroserwisy, jak i monolit, aż do samego końca, kiedy monolit zostanie ostatecznie usunięty.
Zapoznaj się z tymi instrukcjami. Moduły mają limit czasowy i nie można ich zatrzymać. Gdy klikniesz Rozpocznij moduł, na liczniku wyświetli się informacja o tym, na jak długo udostępniamy Ci zasoby Google Cloud.
W tym praktycznym module możesz spróbować swoich sił w wykonywaniu opisywanych działań w prawdziwym środowisku chmury, a nie w jego symulacji lub wersji demonstracyjnej. Otrzymasz nowe, tymczasowe dane logowania, dzięki którym zalogujesz się i uzyskasz dostęp do Google Cloud na czas trwania modułu.
Do ukończenia modułu potrzebne będą:
Kliknij przycisk Rozpocznij moduł. Jeśli moduł jest odpłatny, otworzy się wyskakujące okienko, w którym możesz wybrać formę płatności. Po lewej stronie znajduje się panel Szczegóły modułu z następującymi elementami:
Kliknij Otwórz konsolę Google Cloud (lub kliknij prawym przyciskiem myszy i wybierz Otwórz link w oknie incognito, jeśli korzystasz z przeglądarki Chrome).
Moduł uruchomi zasoby, po czym otworzy nową kartę ze stroną logowania.
Wskazówka: otwórz karty obok siebie w osobnych oknach.
W razie potrzeby skopiuj nazwę użytkownika znajdującą się poniżej i wklej ją w oknie logowania.
Nazwę użytkownika znajdziesz też w panelu Szczegóły modułu.
Kliknij Dalej.
Skopiuj podane niżej hasło i wklej je w oknie powitania.
Hasło znajdziesz też w panelu Szczegóły modułu.
Kliknij Dalej.
Na kolejnych stronach wykonaj następujące czynności:
Poczekaj, aż na karcie otworzy się konsola Google Cloud.
Cloud Shell to maszyna wirtualna oferująca wiele narzędzi dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud. Dzięki wierszowi poleceń Cloud Shell zyskujesz dostęp do swoich zasobów Google Cloud.
Po połączeniu użytkownik od razu jest uwierzytelniony. Uruchomi się Twój projekt o identyfikatorze PROJECT_ID. Dane wyjściowe zawierają wiersz z zadeklarowanym identyfikatorem PROJECT_ID dla tej sesji:
gcloud
to narzędzie wiersza poleceń Google Cloud. Jest ono już zainstalowane w Cloud Shell i obsługuje funkcję autouzupełniania po naciśnięciu tabulatora.
Kliknij Autoryzuj.
Dane wyjściowe powinny wyglądać tak:
Dane wyjściowe:
Dane wyjściowe:
Przykładowe dane wyjściowe:
gcloud
w Google Cloud znajdziesz w opisie narzędzia wiersza poleceń gcloud.
Ustaw domyślną strefę i konfigurację projektu:
Skorzystasz z istniejącej aplikacji monolitycznej pochodzącej z fikcyjnej witryny e-commerce, w skład której wchodzi prosta strona powitalna, strona z produktami oraz strona z historią zamówień. Po sklonowaniu kodu źródłowego z repozytorium Git będzie można skoncentrować się na podzieleniu aplikacji na mikroserwisy i wdrożeniu ich w Google Kubernetes Engine (GKE).
Działanie tego skryptu może potrwać kilka minut.
Skoro masz już działające środowisko programistyczne, potrzebujesz teraz klastra Kubernetes, w którym wdrożysz swój monolit, a na koniec także mikroserwisy. Przed utworzeniem klastra upewnij się, że są włączone odpowiednie interfejsy API.
Tworzenie klastra może potrwać kilka minut.
Dane wyjściowe:
Klaster Kubernetes oraz związane z nim informacje możesz również wyświetlić w konsoli Cloud. W menu nawigacyjnym przewiń w dół do Kubernetes Engine i kliknij Klastry.
Zobaczysz klaster o nazwie fancy-cluster.
Gratulacje! Właśnie udało Ci się utworzyć pierwszy klaster Kubernetes.
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
Ponieważ najważniejszym zadaniem do wykonania w tym module jest podzielenie monolitu na mikroserwisy, najpierw musisz uruchomić aplikację monolityczną.
Zostaną wyświetlone dane wyjściowe podobne do tych:
Jeśli w danych wyjściowych zewnętrzny adres IP jest określony jako <pending>
, odczekaj chwilę i ponownie uruchom to polecenie.
Skopiuj wyświetlony zewnętrzny adres IP monolitu. Wpisz ten adres URL (na przykład http://203.0.113.0) w przeglądarce, aby sprawdzić, czy do monolitu można uzyskać dostęp.
Powinna wyświetlić się strona powitalna witryny monolitycznej. Strona powitalna jest stroną statyczną, która później będzie udostępniana przez mikroserwis Frontend. Twój monolit działa teraz całkowicie w klastrze Kubernetes.
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
Teraz gdy Twoja witryna monolitowa działa w GKE, nadszedł czas na podzielenie poszczególnych usług na mikroserwisy. Dobrym rozwiązaniem jest wcześniejsze zaplanowanie, które usługi mają zostać podzielone na mniejsze fragmenty. Zwykle najlepiej nadają się do tego poszczególne części aplikacji obsługujące konkretne obszary biznesowe.
W tym module utworzysz przykładową aplikację i wydzielisz z niej poszczególne usługi według obsługiwanych obszarów biznesowych: Orders (Zamówienia), Products (Produkty) i Frontend. Kod został już przeniesiony, więc możesz skupić się na tworzeniu i wdrażaniu usług w Google Kubernetes Engine (GKE).
Najpierw wydzielisz usługę Orders (Zamówienia). Korzystając z udostępnionej oddzielnej bazy kodu, utwórz osobny kontener Dockera dla tej usługi.
Ponieważ baza kodu jest już dostępna, pierwszym krokiem będzie utworzenie kontenera Dockera z usługą Order za pomocą Cloud Build.
Zwykle na ten proces składają się 2 kroki: utworzenie kontenera Dockera i przeniesienie go do rejestru w celu zapisania obrazu pobieranego potem przez GKE. Jeśli skorzystasz z Cloud Build, możesz za pomocą jednego polecenia utworzyć kontener Dockera oraz umieścić obraz w Container Registry. Dzięki temu, wykonując jedno polecenie, możesz utworzyć obraz i przenieść go do rejestru kontenerów. Aby prześledzić proces ręcznego tworzenia pliku Dockera i jego przenoszenia, zapoznaj się z krótkim wprowadzeniem do Container Registry (w języku angielskim), które znajduje się w dokumentacji Google Cloud Container Registry.
Google Cloud Build skompresuje pliki znajdujące się w katalogu i przeniesie je do zasobnika Cloud Storage. Następnie w procesie kompilacji wszystkie pliki z zasobnika razem z plikiem Dockerfile zostaną użyte do uruchomienia procesu kompilacji Dockera. Dla obrazu Dockera jest określana flaga --tag
z hostem gcr.io, a wynikowy obraz Dockera jest przenoszony do Google Cloud Container Registry.
Ten proces może chwilę potrwać, a po jego zakończeniu w terminalu pojawią się dane wyjściowe podobne do tych poniżej:
Po kliknięciu identyfikatora kompilacji zostaną wyświetlone wszystkie jej szczegóły, w tym dane wyjściowe dzienników.
Aby wyświetlić utworzony obraz kontenera, na stronie ze szczegółami kompilacji, w sekcji po prawej, kliknij kartę Szczegóły wykonania, a następnie „Zobacz obraz”.
Po umieszczeniu witryny w kontenerze i przeniesieniu kontenera do Google Container Registry nadszedł czas na wdrożenie w Kubernetes.
Kubernetes prezentuje aplikacje jako pody, czyli jednostki reprezentujące kontener (lub grupę ściśle połączonych kontenerów). Pod to najmniejsza możliwa do wdrożenia jednostka w Kubernetes. W tym samouczku poszczególne pody zawierają tylko kontenery mikroserwisów.
Aby móc wdrażać aplikacje w klastrze GKE i nimi zarządzać, należy skomunikować się z systemem zarządzania klastrami Kubernetes. Zwykle robi się to za pomocą narzędzia wiersza poleceń kubectl w Cloud Shell.
Najpierw utwórz zasób Deployment. Deployment zarządza wieloma kopiami aplikacji nazywanymi replikami i planuje ich uruchamianie w poszczególnych węzłach w klastrze. W tym przypadku Deployment uruchomi tylko jeden pod Twojej aplikacji. Aby wszystko działało bezproblemowo, zasoby Deployment tworzą kontroler ReplicaSet. ReplicaSet odpowiada za to, aby zawsze działała określona liczba replik.
Widoczne poniżej polecenie kubectl create deployment
powoduje utworzenie w klastrze Kubernetes zasobu Deployment o nazwie Orders z 1 repliką.
Zmiana stanu poda na Uruchomiono może chwilę potrwać.
Dane wyjściowe:
Widać zasób Deployment, który jest aktualny, kontroler replicaset
z pożądaną liczbą podów równą 1 oraz działający pod. Wygląda na to, że udało się utworzyć wszystkie elementy.
Wdrożenia Kubernetes można również wyświetlić w konsoli Cloud. W tym celu w menu nawigacyjnym wybierz Kubernetes Engine > Zadania.
Wdrożyliśmy naszą aplikację w GKE, ale nie mamy możliwości uzyskania do niej dostępu spoza klastra. Domyślnie kontenery działające w GKE nie są dostępne z internetu, ponieważ nie mają zewnętrznych adresów IP. Należy bezpośrednio udostępnić aplikację dla ruchu z internetu za pomocą zasobu Service. Zasób Service udostępnia dla podów aplikacji obsługę sieci i adresu IP. GKE tworzy na potrzeby Twojej aplikacji zewnętrzny adres IP i system równoważenia obciążenia (podlega opłacie – zapoznaj się z cennikiem Compute Engine na stronie internetowej Google Cloud).
Na potrzeby tego modułu uprościliśmy proces udostępniania usługi. Zwykle do zabezpieczania publicznych punktów końcowych jest używana brama API. Zapoznaj się ze sprawdzonymi metodami obsługi mikroserwisów w Centrum architektury Google Cloud.
Po wdrożeniu usługi Orders została ona wewnętrznie udostępniona na porcie 8081 za pomocą wdrożenia Kubernetes. Aby udostępnić tę usługę zewnętrznie, musisz utworzyć usługę Kubernetes typu LoadBalancer
, która skieruje ruch zewnętrzny z portu 80 na wewnętrzny port 8081.
GKE przypisuje zewnętrzny adres IP do zasobu Service, a nie do zasobu Deployment.
kubectl get service
:Dane wyjściowe:
Skopiuj wyświetlony zewnętrzny adres IP aplikacji. Zapisz go, ponieważ będzie on potrzebny w następnym kroku, w którym zmodyfikujesz monolit, aby wskazywał na nową usługę Orders.
Ponieważ z monolitu usunięto usługę Orders, należy go zmodyfikować w taki sposób, aby wskazywał na nowy zewnętrzny mikroserwis Orders.
Rozdzielanie monolitu polega na usunięciu fragmentów kodu z pojedynczej bazy kodu i umieszczeniu ich w wielu mikroserwisach, które są następnie oddzielnie wdrażane. Mikroserwisy działają na innym serwerze, dlatego nie możesz już przywoływać adresów URL usług w postaci ścieżek bezwzględnych – musisz zastosować przekierowanie na adres serwera mikroserwisu zamówień. Konieczne będzie wyłączenie usługi monolitu na pewien czas, aby zaktualizować adresy URL poszczególnych usług, które zostały usunięte z monolitu. Weź to pod uwagę, gdy planujesz przenoszenie mikroserwisów i monolitu do środowiska produkcyjnego w czasie migracji do mikroserwisów.
Musisz też zaktualizować plik konfiguracyjny monolitu tak, aby wskazywał na nowy adres IP mikroserwisu Orders.
nano
zastąp lokalny adres URL adresem IP mikroserwisu Orders:Po otwarciu w edytorze Twój plik powinien wyglądać tak:
REACT_APP_ORDERS_URL
w nowym formacie, zastępując go adresem IP mikroserwisu Orders. Całość powinna wyglądać tak jak poniżej:Naciśnij kolejno CTRL + O
, ENTER
i CTRL + X
, aby zapisać plik w edytorze nano.
Przetestuj nowy mikroserwis, przechodząc do adresu URL ustawionego w pliku. Strona internetowa powinna zwrócić odpowiedź JSON z mikroserwisu Orders.
Teraz utwórz ponownie frontend monolitu, powtórz proces kompilacji, aby utworzyć kontener dla monolitu, a na koniec przeprowadź ponowne wdrożenie w klastrze GKE:
Kontynuuj proces odłączania usług, migrując tym razem usługę Products. Zastosuj taką samą procedurę jak poprzednio. Uruchom następujące polecenia, aby utworzyć kontener Dockera, wdrożyć go i udostępnić za pomocą usługi Kubernetes.
Dane wyjściowe:
Będziesz potrzebować tego adresu IP w następnym kroku podczas ponownego konfigurowania monolitu, aby wskazywał na nowy mikroserwis Products.
nano
zastąp lokalny adres URL adresem IP nowego mikroserwisu produktów:Po otwarciu w edytorze Twój plik powinien wyglądać tak:
REACT_APP_PRODUCTS_URL
w nowym formacie, zastępując go adresem IP mikroserwisu produktów. Całość powinna wyglądać tak jak poniżej:Naciśnij kolejno CTRL + O
, ENTER
i CTRL + X
, aby zapisać plik.
Przetestuj nowy mikroserwis, przechodząc do adresu URL ustawionego w pliku. Strona internetowa powinna zwrócić odpowiedź JSON z mikroserwisu Products.
Teraz utwórz ponownie frontend monolitu, powtórz proces kompilacji w celu utworzenia kontenera dla monolitu, a na koniec przeprowadź ponowne wdrożenie w klastrze GKE. Uruchom następujące polecenia, aby zakończyć te kroki:
Ponownie utwórz pliki konfiguracyjne monolitu:
Ostatnim krokiem w procesie migracji jest przeniesienie kodu frontendu do mikroserwisu i wyłączenie monolitu. Zakończenie tego kroku będzie oznaczać pomyślne przejście z monolitu na architekturę mikroserwisów.
Aby utworzyć nowy mikroserwis frontendu, zastosuj taką samą procedurę jak w ostatnich 2 krokach.
Poprzednio podczas rekompilacji monolitu aktualizowała się też konfiguracja, aby wskazywać na monolit. Teraz zastosuj taką samą konfigurację dla mikroserwisu frontendu.
Po zakończeniu działania tych poleceń wykonaj takie same czynności jak w poprzednich krokach. Uruchom następujące polecenia, aby utworzyć kontener Dockera, wdrożyć go i udostępnić za pomocą usługi Kubernetes.
Utwórz kontener Dockera za pomocą Google Cloud Build:
Teraz gdy wszystkie usługi działają jako mikroserwisy, możesz usunąć aplikację monolityczną. Pamiętaj, że w przypadku rzeczywistej migracji konieczne byłoby również dokonanie zmian DNS itd., aby istniejące nazwy domen wskazywały nowy mikroserwis frontendu naszej aplikacji.
Jeśli wszystko zostało wykonane prawidłowo, stary adres IP usługi monolitu nie powinien teraz działać, a pod nowym adresem IP usługi frontendu powinna być hostowana nowa aplikacja.
Dane wyjściowe powinny wyglądać podobnie do tych:
Skopiuj wyświetlony zewnętrzny adres IP mikroserwisu frontendu. Wpisz ten adres URL (na przykład http://203.0.113.0) w przeglądarce, aby sprawdzić, czy można uzyskać dostęp do frontendu. Twoja witryna powinna wyglądać tak samo jak przed podzieleniem monolitu na mikroserwisy.
Udało Ci się podzielić aplikację monolityczną na mikroserwisy i wdrożyć je w Google Kubernetes Engine.
Ten moduł do samodzielnego ukończenia wchodzi w skład kursu Website on Google Cloud. Każdy kurs składa się z zestawu powiązanych ze sobą modułów, które razem tworzą ścieżkę szkoleniową. Jeśli zapiszesz się na ten kurs, ukończony dziś moduł zostanie w nim automatycznie zaliczony. Zapoznaj się z katalogiem Google Cloud Skills Boost, aby zobaczyć inne dostępne kursy.
Poszukujesz modułu praktycznego typu Challenge Lab (moduł-wyzwanie), aby wykazać się nowymi umiejętnościami i sprawdzić swoją wiedzę? Po ukończeniu kursu przejdź ten moduł Challenge Lab.
Kontynuuj naukę, oglądając to filmowe studium przypadku na temat hostowania skalowalnych aplikacji internetowych w Google Cloud, lub zapoznaj się z tymi propozycjami:
…pomogą Ci wykorzystać wszystkie możliwości technologii Google Cloud. Nasze zajęcia obejmują umiejętności techniczne oraz sprawdzone metody, które ułatwią Ci szybką naukę i umożliwią jej kontynuację. Oferujemy szkolenia na poziomach od podstawowego po zaawansowany prowadzone w trybach wirtualnym, na żądanie i na żywo, dzięki czemu możesz dopasować program szkoleń do swojego napiętego harmonogramu. Certyfikaty umożliwią udokumentowanie i potwierdzenie Twoich umiejętności oraz doświadczenia w zakresie technologii Google Cloud.
Ostatnia aktualizacja instrukcji: 20 września 2023 r.
Ostatni test modułu: 20 września 2023 r.
Copyright 2025 Google LLC. Wszelkie prawa zastrzeżone. Google i logo Google są znakami towarowymi Google LLC. Wszelkie inne nazwy firm i produktów mogą być znakami towarowymi odpowiednich podmiotów, z którymi są powiązane.
Ta treść jest obecnie niedostępna
Kiedy dostępność się zmieni, wyślemy Ci e-maila z powiadomieniem
Świetnie
Kiedy dostępność się zmieni, skontaktujemy się z Tobą e-mailem
One lab at a time
Confirm to end all existing labs and start this one