Punkty kontrolne
Create a Kubernetes cluster and deployments (Auth, Hello, and Frontend)
/ 50
Canary Deployment
/ 50
Zarządzanie wdrożeniami przy użyciu Kubernetes Engine
- GSP053
- Opis
- Cele
- Wprowadzenie do wdrożeń
- Konfiguracja i wymagania
- Ustawianie strefy
- Pobieranie przykładowego kodu na potrzeby tego modułu
- Zadanie 1. Zapoznanie z obiektem wdrożenia
- Zadanie 2. Tworzenie wdrożenia
- Zadanie 3. Aktualizacja krocząca
- Zadanie 4. Wdrożenia do wczesnych testów
- Zadanie 5. Wdrożenia metodą blue-green
- Gratulacje!
GSP053
Opis
Sprawdzone metody DevOps przewidują regularne używanie różnych wdrożeń do zarządzania scenariuszami wdrażania aplikacji, takimi jak ciągłe wdrażanie, wdrożenia metodą blue-green czy wdrożenia do wczesnych testów. W trakcie tego modułu nauczysz się skalować kontenery oraz zarządzać nimi, aby zrealizować typowe scenariusze, w których stosowane jest więcej niż 1 wdrożenie heterogeniczne.
Cele
W tym module dowiesz się, jak:
- używać narzędzia
kubectl
; - tworzyć pliki
yaml
wdrożeń; - uruchamiać, aktualizować i przeskalowywać wdrożenia;
- aktualizować wdrożenia i używać różnych stylów wdrożeń.
Wymagania wstępne
Aby zmaksymalizować efekty nauki, przed rozpoczęciem tego modułu wykonaj następujące czynności:
- Ukończ te moduły Google Cloud Skills Boost:
- Opanuj umiejętności administrowania systemem Linux.
- Poznaj teorię DevOps – koncepcje ciągłego wdrażania.
Wprowadzenie do wdrożeń
Wdrożenia heterogeniczne zazwyczaj polegają na połączeniu 2 lub więcej odrębnych regionów lub środowisk infrastruktury, aby zaspokoić określone potrzeby techniczne lub operacyjne. W zależności od specyfiki danego wdrożenia określa się je nazwą „hybrydowe”, „wielochmurowe” lub „publiczno-prywatne”.
W tym module do wdrożeń heterogenicznych zaliczają się wdrożenia, które obejmują więcej niż 1 region w 1 środowisku chmury, 2 lub więcej środowisk w chmurze publicznej (wdrożenia wielochmurowe) oraz połączenie środowisk lokalnych i środowisk w chmurze publicznej (wdrożenia hybrydowe lub publiczno-prywatne).
W trakcie wdrożeń ograniczonych do 1 środowiska lub regionu mogą wystąpić różne problemy biznesowe i techniczne:
- Wykorzystanie wszystkich zasobów: pojedyncze środowiska, zwłaszcza lokalne, mogą nie mieć pamięci masowej oraz zasobów obliczeniowych i sieciowych wymaganych do spełnienia Twoich potrzeb produkcyjnych.
- Ograniczony zasięg geograficzny: w przypadku wdrożeń w 1 środowisku osoby znajdujące się w różnych oddalonych od siebie miejscach muszą uzyskiwać dostęp do 1 wdrożenia. Ruch tych użytkowników może krążyć po całym świecie, nim trafi do centralnej lokalizacji.
- Ograniczona dostępność: w przypadku wzorców ruchu o skali całej sieci utrzymanie odporności na awarie aplikacji może być trudne.
- Uzależnienie od dostawców: abstrakcje stosowane przez dostawców w platformach i infrastrukturze mogą uniemożliwić przeprowadzenie portowania aplikacji.
- Nieelastyczne zasoby: Twoje zasoby mogą być ograniczone do określonego zbioru rozwiązań obliczeniowych i sieciowych oraz rozwiązań używanych do przechowywania danych.
Wdrożenia heterogeniczne mogą pomóc rozwiązać te problemy, ale ich struktura musi zostać utworzona przy użyciu automatycznych i deterministycznych procesów oraz procedur. Zastosowanie jednorazowych lub doraźnych procedur może spowodować, że wdrożenia lub procesy będą niestabilne i podatne na awarie. Doraźne procesy mogą spowodować utratę danych lub odrzucenie ruchu. Dobre procesy wdrażania muszą być powtarzalne i wykorzystywać sprawdzone sposoby zarządzania udostępnianiem, konfiguracjami i konserwacją.
3 typowe scenariusze wdrożeń heterogenicznych to:
- wdrożenia wielochmurowe,
- przenoszenie danych lokalnych do frontendu,
- procesy realizowane w trybie ciągłej integracji / ciągłego dostarczania (CI/CD).
Ćwiczenia poniżej obejmują typowe zastosowania wdrożeń heterogenicznych wraz z dobrze zaprojektowanymi metodami wykorzystującymi Kubernetes oraz innymi zasobami infrastruktury do ich realizacji.
Konfiguracja i wymagania
Zanim klikniesz przycisk Rozpocznij moduł
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ą:
- dostęp do standardowej przeglądarki internetowej (zalecamy korzystanie z przeglądarki Chrome).
- Odpowiednia ilość czasu na ukończenie modułu – pamiętaj, że gdy rozpoczniesz, nie możesz go wstrzymać.
Rozpoczynanie modułu i logowanie się w konsoli Google Cloud
-
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:
- przyciskiem Otwórz konsolę Google Cloud;
- czasem, który Ci pozostał;
- tymczasowymi danymi logowania, których musisz użyć w tym module;
- innymi informacjami potrzebnymi do ukończenia modułu.
-
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.
Uwaga: jeśli pojawi się okno Wybierz konto, kliknij Użyj innego konta. -
W razie potrzeby skopiuj nazwę użytkownika znajdującą się poniżej i wklej ją w oknie logowania.
{{{user_0.username | "Username"}}} 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.
{{{user_0.password | "Password"}}} Hasło znajdziesz też w panelu Szczegóły modułu.
-
Kliknij Dalej.
Ważne: musisz użyć danych logowania podanych w module. Nie używaj danych logowania na swoje konto Google Cloud. Uwaga: korzystanie z własnego konta Google Cloud w tym module może wiązać się z dodatkowymi opłatami. -
Na kolejnych stronach wykonaj następujące czynności:
- Zaakceptuj Warunki korzystania z usługi.
- Nie dodawaj opcji odzyskiwania ani uwierzytelniania dwuskładnikowego (ponieważ konto ma charakter tymczasowy).
- Nie rejestruj się w bezpłatnych wersjach próbnych.
Poczekaj, aż na karcie otworzy się konsola Google Cloud.
Aktywowanie Cloud Shell
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.
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.
- (Opcjonalnie) Aby wyświetlić listę aktywnych kont, użyj tego polecenia:
-
Kliknij Autoryzuj.
-
Dane wyjściowe powinny wyglądać tak:
Dane wyjściowe:
- (Opcjonalnie) Aby wyświetlić identyfikator projektu, użyj tego polecenia:
Dane wyjściowe:
Przykładowe dane wyjściowe:
gcloud
w Google Cloud znajdziesz w opisie narzędzia wiersza poleceń gcloud.
Ustawianie strefy
Aby ustawić roboczą strefę Google Cloud, uruchom to polecenie, podstawiając za zmienną
Pobieranie przykładowego kodu na potrzeby tego modułu
- Pobierz przykładowy kod do utworzenia i uruchomienia kontenerów oraz wdrożeń:
- Utwórz klaster z 3 węzłami (wykonanie tego kroku może potrwać kilka minut):
Zadanie 1. Zapoznanie z obiektem wdrożenia
Na początek przyjrzyj się obiektowi wdrożenia.
- Uruchomienie polecenia
explain
wkubectl
spowoduje wyświetlenie informacji o obiekcie wdrożenia:
- Możesz również wyświetlić wszystkie pola przy użyciu opcji
--recursive
:
- Polecenia explain możesz używać w trakcie całego modułu, aby lepiej zrozumieć strukturę obiektu wdrożenia oraz role poszczególnych pól:
Zadanie 2. Tworzenie wdrożenia
- Zaktualizuj plik konfiguracji
deployments/auth.yaml
:
- Uruchom edytor:
- Zmień
image
w sekcji kontenerów wdrożenia na:
- Zapisz plik
auth.yaml
: naciśnij<Esc>
i wpisz:
- Naciśnij
<Enter>
. Następnie utwórz proste wdrożenie. Sprawdź plik konfiguracji wdrożenia:
Dane wyjściowe:
Zwróć uwagę, że wdrożenie tworzy 1 replikę i korzysta z wersji 1.0.0 kontenera auth.
Kiedy uruchomisz polecenie kubectl create
, żeby utworzyć wdrożenie auth, zostanie utworzony 1 pod, który będzie zgodny z danymi w pliku manifestu wdrożenia. Oznacza to, że możesz dostosować liczbę podów, zmieniając liczbę podaną w polu replicas
.
- Utwórz teraz wdrożenie przy użyciu polecenia
kubectl create
:
- Kiedy już utworzysz wdrożenie, możesz sprawdzić, czy na pewno zostało utworzone:
- Po utworzeniu wdrożenia Kubernetes utworzy dla niego kontroler
ReplicaSet
. Możesz sprawdzić, czy kontrolerReplicaSet
został na pewno utworzony dla wdrożenia:
Powinien się wyświetlić kontroler ReplicaSet
z nazwą w formacie auth-xxxxxxx
- Wyświetl pody utworzone w ramach wdrożenia. Podczas tworzenia kontrolera
ReplicaSet
Kubernetes utworzy pojedynczy pod:
Czas utworzyć usługę do wdrożenia auth. Pliki manifestów już wyświetliliśmy, więc nie będziemy tutaj przedstawiać szczegółowych informacji.
- Utwórz usługę auth przy pomocy polecenia
kubectl create
:
- Powtórz ten krok, żeby utworzyć i udostępnić wdrożenie
hello
:
- Zrób to jeszcze raz, żeby utworzyć i udostępnić wdrożenie
frontend
:
ConfigMap
na potrzeby frontendu.- Przeprowadź interakcję z frontendem, pobierając jego zewnętrzny adres IP i wykonując odwołanie do niego przy użyciu polecenia curl:
Otrzymasz też wtedy odpowiedź na Hello.
- Możesz także użyć funkcji tworzenia szablonu danych wyjściowych
kubectl
, żeby użyć polecenia curl jako 1 wiersza:
Testowanie ukończonego zadania
Kliknij Sprawdź postępy poniżej, aby sprawdzić postęp pracy z modułem. Jeśli udało Ci się utworzyć klaster Kubernetes oraz wdrożenia auth, hello i frontend, wyświetli się odpowiedni wynik.
Skalowanie wdrożenia
Po utworzeniu wdrożenia możesz je przeskalować. Żeby to zrobić, zaktualizuj pole spec.replicas
.
- Aby zobaczyć wyjaśnienia dotyczące tego pola, użyj ponownie polecenia
kubectl explain
:
- Najprostszym sposobem na zaktualizowanie pola replik jest użycie polecenia
kubectl scale
:
Po zaktualizowaniu wdrożenia Kubernetes automatycznie zaktualizuje powiązany kontroler ReplicaSet
i uruchomi nowe pody, tak żeby łączna liczba podów wynosiła 5.
- Sprawdź, czy jest teraz uruchomionych 5 podów
hello
:
- Teraz przywróć poprzednią skalę aplikacji:
- Jeszcze raz sprawdź, czy liczba podów jest prawidłowa:
Znasz już wdrożenia Kubernetes i sposoby zarządzania grupą podów oraz ich skalowania.
Zadanie 3. Aktualizacja krocząca
Wdrożenia obsługują aktualizacje obrazów do nowej wersji przy użyciu mechanizmu aktualizacji kroczącej. Gdy wdrożenie zostanie zaktualizowane do nowej wersji, utworzy nowy kontroler ReplicaSet
i powoli zwiększy liczbę replik w nowym kontrolerze ReplicaSet
, równocześnie zmniejszając liczbę replik w starym kontrolerze ReplicaSet
.
Aktywowanie aktualizacji kroczącej
- Żeby zaktualizować wdrożenie, użyj tego polecenia:
- Zmień
image
w sekcji kontenerów wdrożenia na:
- Zapisz i zamknij.
Zaktualizowane wdrożenie zostanie zapisane w klastrze, a Kubernetes rozpocznie aktualizację kroczącą.
- Wyświetl nowy kontroler
ReplicaSet
utworzony przez Kubernetes:
- Możesz również wyświetlić nowy wpis w historii wdrożenia:
Wstrzymywanie aktualizacji kroczącej
Jeśli wykryjesz problemy z wdrażaniem kroczącym, wstrzymaj je, żeby zatrzymać aktualizację.
- Aby wstrzymać wdrażanie, uruchom to polecenie:
- Sprawdź obecny stan wdrażania:
- Możesz również to sprawdzić bezpośrednio w podach:
Wznawianie aktualizacji kroczącej
Wdrażanie jest wstrzymane, co oznacza, że niektóre pody mają nową wersję, a inne starą.
- Wznów wdrażanie przy pomocy polecenia
resume
:
- Po zakończeniu wdrażania, kiedy uruchomisz polecenie
status
, powinien się wyświetlić tekst poniżej:
Dane wyjściowe:
Cofanie aktualizacji
Załóżmy, że w nowej wersji wykryto błąd. Możemy uznać, że problemy są związane z nową wersją, więc doświadczą ich wszyscy użytkownicy podłączeni do nowych podów.
Trzeba będzie przywrócić poprzednią wersję, żeby zbadać sprawę, i następnie opublikować naprawioną wersję.
- Żeby przywrócić poprzednią wersję, użyj polecenia
rollout
:
- Sprawdź w historii, czy poprzednia wersja została przywrócona:
- Sprawdź też, czy poprzednie wersje zostały przywrócone we wszystkich podach:
Świetnie! Wiesz już, jak przeprowadzić aktualizację kroczącą wdrożeń Kubernetes oraz jak aktualizować aplikacje bez przestojów.
Zadanie 4. Wdrożenia do wczesnych testów
Przy pomocy wdrożenia do wczesnych testów możesz przetestować nowe wdrożenie w środowisku produkcyjnym z częścią użytkowników. Wdrożenia do wczesnych testów umożliwiają opublikowanie zmiany tylko dla niewielkiej części użytkowników, co pozwala ograniczyć ryzyko związane z nowymi wersjami.
Tworzenie wdrożenia do wczesnych testów
Wdrożenie do wczesnych testów składa się z odrębnego wdrożenia z nową wersją oraz usługi, która jest używana na potrzeby zarówno normalnego, stabilnego wdrożenia, jak i wdrożenia do wczesnych testów.
- Najpierw utwórz nowe wdrożenie do wczesnych testów dla nowej wersji:
Dane wyjściowe:
- Teraz utwórz wdrożenie do wczesnych testów:
- Po utworzeniu wdrożenia do wczesnych testów powinny być dostępne 2 wdrożenia:
hello
orazhello-canary
. Sprawdź, czy tak na pewno jest, przy pomocy poleceniakubectl
:
W usłudze hello
selektor app:hello
dopasuje pody zarówno we wdrożeniu w środowisku produkcyjnym, jak i we wdrożeniu do wczesnych testów. Wdrożenie do wczesnych testów będzie jednak widoczne dla mniejszej liczby użytkowników, bo ma mniej podów.
Sprawdzanie wdrożenia do wczesnych testów
- Możesz sprawdzić wersję
hello
obsługiwaną przez żądanie:
- Uruchom je kilka razy. Zobaczysz wtedy, że niektóre żądania są wyświetlane przez hello 1.0.0, a ich mała część (1/4 = 25%) przez wersję 2.0.0.
Testowanie ukończonego zadania
Kliknij Sprawdź postępy poniżej, aby sprawdzić postęp pracy z modułem. Jeśli udało Ci się utworzyć wdrożenie do wczesnych testów, wyświetli się odpowiedni wynik.
Wdrożenia do wczesnych testów w środowisku produkcyjnym – koligacja sesji
W tym module żądanie wysłane do usługi Nginx mogło zostać wyświetlone przez wdrożenie do wczesnych testów. Co należy jednak zrobić, jeśli nie chcesz, aby konkretny użytkownik był obsługiwany przez wdrożenie do wczesnych testów? Może się to przydać na przykład, kiedy interfejs aplikacji uległ zmianie i nie chcesz zdezorientować tego użytkownika. W takiej sytuacji najlepiej będzie, żeby korzystał tylko z 1 z wdrożeń.
W tym celu należy utworzyć usługę z koligacją sesji. Dzięki temu dany użytkownik będzie zawsze obsługiwany przez tę samą wersję. W przykładzie poniżej usługa jest taka sama jak wcześniej, ale dodano nowe pole sessionAffinity
, w którym ustawiona jest wartość ClientIP
. Żądania ze wszystkich klientów o tym samym adresie IP będą wysyłane do tej samej wersji aplikacji hello
.
Skonfigurowanie środowiska, w którym można to przetestować, nie jest łatwe, więc nie musisz tego teraz robić, ale zalecamy stosować sessionAffinity
we wdrożeniach do wczesnych testów w środowisku produkcyjnym.
Zadanie 5. Wdrożenia metodą blue-green
Aktualizacje kroczące są idealnym rozwiązaniem, ponieważ umożliwiają powolne wdrożenie aplikacji z minimalnym wpływem na wydajność, narzutem i czasem przestoju. W niektórych przypadkach korzystne jest zmodyfikowanie systemów równoważenia obciążenia tak, aby kierowały do nowej wersji dopiero po jej pełnym wdrożeniu. W takich sytuacjach najlepszym rozwiązaniem są wdrożenia metodą blue-green.
W tym celu Kubernetes tworzy 2 oddzielne wdrożenia; jedno dla starej wersji „niebieskiej” i jedno dla nowej wersji „zielonej”. Użyj już utworzonego wdrożenia hello
na potrzeby wersji „niebieskiej”. Dostęp do wdrożeń będzie można uzyskać przy pomocy usługi, która będzie pełnić funkcję routera. Kiedy nowa wersja „zielona” zostanie uruchomiona, zaczniesz z niej korzystać po zaktualizowaniu usługi.
Usługa
Zastosuj istniejącą usługę hello, ale zaktualizuj ją tak, żeby zawierała selektor app:hello
, version: 1.0.0
. Ten selektor dopasuje istniejące wdrożenie „niebieskie”, ale nie „zielone”, ponieważ będzie ono używać innej wersji.
- Najpierw zaktualizuj usługę:
resource service/hello is missing
(brak zasobu usługi/hello) – zostanie to automatycznie poprawione.Przeprowadzanie aktualizacji przy użyciu wdrożenia metodą blue-green
Żeby zapewnić obsługę stylu wdrożenia metodą blue-green, należy utworzyć nowe wdrożenie „zielone” dla nowej wersji. Zaktualizuje ono etykietę wersji oraz ścieżkę obrazu.
- Utwórz wdrożenie „zielone”:
- Po utworzeniu i prawidłowym uruchomieniu wdrożenia „zielonego” sprawdź, czy nadal używana jest bieżąca wersja 1.0.0:
- Teraz zaktualizuj usługę tak, żeby wskazywała nową wersję:
- Kiedy usługa zostanie zaktualizowana, wdrożenie „zielone” zostanie od razu zastosowane. Możesz teraz sprawdzić, czy nowa wersja jest zawsze używana:
Przywracanie poprzedniej wersji
W razie potrzeby w ten sam sposób możesz przywrócić starą wersję.
- Wystarczy zaktualizować usługę z powrotem do poprzedniej wersji, kiedy wdrożenie „niebieskie” jest jeszcze uruchomione:
- Po zaktualizowaniu usługi stara wersja zostanie przywrócona. Sprawdź jeszcze raz, czy używana jest prawidłowa wersja:
Udało się! Znasz już wdrożenia metodą blue-green oraz wiesz, jak wdrażać aktualizacje w aplikacjach, które muszą zmieniać wersje jednocześnie.
Gratulacje!
Ten moduł dał Ci możliwość przećwiczenia uruchamiania, aktualizowania i skalowania wdrożeń przy użyciu narzędzia wiersza poleceń kubectl
oraz różnych stylów konfiguracji wdrożeń skonfigurowanych w plikach YAML. Dzięki zdobytemu w ten sposób praktycznemu doświadczeniu możesz czuć się pewnie, kiedy będziesz stosować te umiejętności w trakcie własnej pracy z DevOps.
Kolejne kroki / Więcej informacji
-
Rozwiązania i poradniki dotyczące DevOps w dokumentacji Google Cloud.
-
Dołącz do społeczności na stronie Kubernetes.
Szkolenia i certyfikaty Google Cloud
…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: 2 kwietnia 2024 r.
Ostatni test modułu: 14 sierpnia 2023 r.
Copyright 2024 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.