
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
Create Docker container with Cloud Build
/ 20
Deploy container to GKE
/ 10
Expose GKE Deployment
/ 20
Scale GKE deployment
/ 10
Make changes to the website
/ 10
Update website with zero downtime
/ 10
Obsługa stron internetowych i aplikacji to niełatwa sprawa. W najbardziej niepożądanych momentach dochodzi do usterek, serwery ulegają awarii, wzrost zainteresowania sprawia, że coraz większe jest wykorzystanie zasobów, a wprowadzanie zmian bez przestojów jest skomplikowane i stresujące. Wyobraź sobie, że istnieje narzędzie, które mogłoby pomóc Ci poradzić sobie z tym wszystkim, dodatkowo działając w sposób automatyczny. Dzięki Kubernetes jest to nie tylko możliwe, ale wręcz banalnie proste.
W tym module wcielisz się w rolę programisty w fikcyjnym sklepie o nazwie Fancy Store, zajmującego się prowadzeniem strony internetowej typu e-commerce. Ze względu na problemy ze skalowaniem i częste przerwy w działaniu strony masz za zadanie wdrożyć swoją aplikację do środowiska Google Kubernetes Engine (GKE).
Ćwiczenia w tym module są uporządkowane w taki sposób, aby odzwierciedlać typowe czynności podejmowane przez programistów poruszających się w środowisku chmurowym:
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ę okno, 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.
Kliknij Aktywuj Cloud Shell na górze konsoli Google Cloud.
Kliknij te okna:
Po połączeniu użytkownik od razu jest uwierzytelniony. Uruchomi się Twój projekt o identyfikatorze Project_ID
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.
Dane wyjściowe:
Dane wyjściowe:
gcloud
w Google Cloud znajdziesz w opisie gcloud CLI.
Więcej informacji znajdziesz w dokumentacji regionów i stref (w języku angielskim).
Do wdrożenia strony internetowej potrzebny Ci będzie klaster Kubernetes. Najpierw upewnij się, że włączono odpowiednie interfejsy API.
Teraz możesz utworzyć klaster.
fancy-cluster
z 3 węzłami:Tworzenie klastra może potrwać kilka minut.
Dane wyjściowe:
Odszukaj swój klaster Kubernetes oraz powiązane z nim informacje w konsoli Google Cloud.
Kliknij menu nawigacyjne () > Kubernetes Engine > 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ż mamy do czynienia z istniejącą stroną, wystarczy sklonować źródło, dzięki czemu będzie można skoncentrować się na tworzeniu obrazów Dockera i ich wdrażaniu w GKE.
Przejdź do odpowiedniego katalogu.
Zainstaluj zależności NodeJS, tak aby można było przetestować aplikację przed wdrożeniem:
Poczekaj kilka minut, aż uruchomiony skrypt zostanie wykonany.
npm
:Dane wyjściowe:
Otworzy się nowe okno, w którym zobaczysz, jak będzie wyglądać strona internetowa sklepu Fancy Store.
Pozostaw tę kartę otwartą – wrócimy do niej w późniejszej części modułu.
Po przygotowaniu plików źródłowych nadszedł czas na umieszczenie aplikacji w kontenerze Dockera.
Ten proces składa się zwykle z 2 kroków obejmujących utworzenie kontenera Dockera i przeniesienie go do rejestru w celu zapisania obrazu pobieranego potem przez GKE. Uprość sobie zadanie i skorzystaj z Cloud Build. W ten sposób, za pomocą jednego polecenia, utworzysz kontener Dockera oraz umieścisz obraz w Container Registry. Wystarczy jedno polecenie, aby 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.
Google Cloud Build skompresuje pliki znajdujące się w katalogu i przeniesie je do zasobnika Google Cloud Storage. Następnie w procesie kompilacji wszystkie pliki z zasobnika razem z plikiem Dockerfile zostaną użyte do uruchomienia procesu kompilacji Dockera. Ponieważ dla obrazu Dockera określiliśmy flagę --tag
z hostem gcr.io, wynikowy obraz Dockera zostanie przeniesiony do Google Cloud Container Registry.
W terminalu pojawią się dane wyjściowe podobne do tych poniżej:
Aby wyświetlić historię kompilacji lub obserwować ten proces w czasie rzeczywistym, wybierz Menu nawigacyjne, przewiń w dół do sekcji Narzędzia i kliknij Cloud Build > Historia. Tutaj znajdziesz listę wszystkich utworzonych do tej pory kompilacji.
Kliknij nazwę kompilacji, aby wyświetlić wszystkie dotyczące jej szczegóły, w tym dane wyjściowe dzienników.
Opcjonalnie: na stronie Szczegóły kompilacji, w sekcji zawierającej informacje o kompilacji, kliknij Podsumowanie kompilacji > Szczegóły wykonania > Nazwa obrazu, aby zobaczyć obraz kontenera:
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
Po umieszczeniu strony w kontenerze i przeniesieniu kontenera do Google Container Registry nadszedł czas na wdrożenie w Kubernetes.
Aby móc wdrażać aplikacje w klastrze GKE i nimi zarządzać, należy skomunikować się z systemem zarządzania klastrami Kubernetes. Zwykle służy do tego narzędzie wiersza poleceń kubectl
.
Kubernetes traktuje 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 module każdy z podów zawiera wyłącznie Twój kontener aplikacji monolitycznej.
Aby wdrożyć aplikację, utwórz zasób Deployment (wdrożenie). Deployment zarządza wieloma kopiami aplikacji nazywanymi replikami i planuje ich uruchamianie w poszczególnych węzłach w klastrze. W tym module zasób 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
, które będziemy uruchamiać w następnej kolejności, sprawi, że w klastrze Kubernetes utworzony zostanie zasób Deployment o nazwie monolith
z 1 repliką.
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
Ponawiaj polecenie do momentu, gdy stan poda zmieni się na W toku.
Dane wyjściowe:
Widoczne wyżej dane wyjściowe pokazują kilka elementów:
Wygląda na to, że udało się utworzyć wszystkie elementy.
kubectl describe pod monolith
kubectl describe pod/monolith-7d8bc7bf68-2bxts
kubectl describe deployment monolith
kubectl describe deployment.apps/monolith
Na samym końcu danych wyjściowych wyświetlona będzie lista zdarzeń z błędami oraz szczegółowe informacje na temat Twoich zasobów.Opcjonalnie: polecenia dla wdrożeń możesz również uruchamiać oddzielnie:
Aby zobaczyć pełnię możliwości Kubernetes, warto przeprowadzić symulację awarii serwera poprzez usunięcie poda i sprawdzić, jaki uzyskamy wtedy efekt.
Proces usuwania można obserwować na stronie Zadania.
Wystarczy kliknąć nazwę zbioru zadań (proces ten będzie bardzo krótki).
Jeśli zdążysz, możesz uruchomić polecenie get all
ponownie – zobaczysz wtedy 2 pody: jeden w fazie końcowej oraz drugi w fazie powstawania lub uruchomienia:
Dane wyjściowe:
Dlaczego tak się stało? Kontroler ReplicaSet odnotował, że jeden pod kończy swoje działanie i wywołał uruchomienie drugiego, tak aby utrzymana została pożądana liczba replik. W dalszej części modułu dowiesz się, jak przeprowadzić skalowanie do kilku uruchomionych instancji jednocześnie, tak aby w razie awarii jednej z nich użytkownicy nie doświadczali żadnych przestojów.
Twoja aplikacja została wdrożona w GKE, jednak nie ma 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 dla aplikacji zewnętrzny adres IP oraz system równoważenia obciążenia.
GKE przypisuje zewnętrzny adres IP do zasobu Service, a nie do zasobu Deployment.
kubectl get service
:Dane wyjściowe:
Ponawiaj polecenie do momentu, aż usługa uzyska zewnętrzny adres IP.
Powinna wyświetlić się taka sama strona jak we wcześniejszym teście. Twoja strona internetowa działa teraz całkowicie w klastrze Kubernetes.
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
Wyobraź sobie, że po tym, jak Twoja aplikacja zostanie uruchomiona w GKE i udostępniona w internecie, zyska ogromną popularność. Potrzebujesz sposobu na przeskalowanie aplikacji na kilka instancji, tak by mogła poradzić sobie ze zwiększonym ruchem. Następnie nauczysz się, jak przeskalować aplikację, tworząc 3 repliki.
Dane wyjściowe:
Powinny być widoczne 3 uruchomione instancje Twojego poda. Zwróć uwagę, że Twoje wdrożenie oraz zestaw replik występują teraz w pożądanej liczbie: 3.
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
Scenariusz: dział marketingu poprosił o zmianę strony głównej witryny. Powinna ona zawierać więcej informacji o firmie i produktach, które sprzedaje.
Zadanie: dodasz więcej tekstu do strony głównej, aby zadowolić dział marketingu. Wygląda na to, że ktoś z zespołu programistów przygotował już odpowiednie zmiany i umieścił je w pliku o nazwie index.js.new
. Wystarczy skopiować ten plik do index.js
i zmiany zostaną automatycznie zastosowane. Wykonaj podane niżej instrukcje, by wprowadzić odpowiednie zmiany.
Wynikowy kod powinien wyglądać podobnie do tego:
Zaktualizowane zostały komponenty React, ale należy jeszcze utworzyć aplikację React, by wygenerować pliki statyczne.
Po zaktualizowaniu kodu musisz ponownie utworzyć kontener Dockera i opublikować go w Google Cloud Container Registry. Użyj tego samego polecenia co wcześniej, ale tym razem zaktualizuj etykietę wersji.
W następnej sekcji za pomocą tego obrazu zaktualizujesz swoją aplikację z zerowym czasem przestoju.
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
Zmiany zostały wprowadzone i dział marketingu jest zadowolony z aktualizacji. Nadszedł czas, aby zaktualizować stronę bez przerw dla użytkowników.
Dzięki mechanizmowi aktualizacji kroczących GKE Twoja aplikacja pozostanie zawsze dostępna, nawet podczas dokonywanej przez system wymiany instancji starego obrazu kontenera na nowy we wszystkich uruchomionych replikach.
Dane wyjściowe:
Jak widać, tworzone są 3 nowe pody, podczas gdy stare pody są wyłączane. Sprawdzając wartość w kolumnie AGE, można stwierdzić, które pody są nowe, a które stare. Ostatecznie widoczne będą ponownie jedynie 3 pody – te zaktualizowane.
W Twojej witrynie powinien być teraz widoczny tekst dodany ostatnio do komponentu strony głównej.
CTRL+C
w Cloud Shell.Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
Choć po ukończeniu tego modułu wszystkie zasoby zostaną usunięte, również we własnym środowisku dobrze jest usunąć zasoby, których już nie potrzebujesz.
Y
, aby potwierdzić działanie. Wykonanie polecenia może zająć kilka chwil.Udało Ci się wdrożyć, przeskalować i zaktualizować stronę w GKE. Teraz już wiesz, jak korzystać z usług Docker i Kubernetes.
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. Zobacz 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 (moduł-wyzwanie), aby otrzymać odznakę cyfrową Google Cloud.
Możesz uczyć się dalej w ramach modułu Migracja monolitycznej strony internetowej do mikroserwisów w Google Kubernetes Engine lub sprawdzić inne propozycje:
Ostatnia aktualizacja instrukcji: 13 września 2023 r.
Ostatni test modułu: 13 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