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 w celu zaspokojenia określonych potrzeb technicznych lub operacyjnych. 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) lub połączenie środowisk lokalnych i środowisk w chmurze publicznej (wdrożenia hybrydowe lub publiczno-prywatne).
W przypadku 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ć wystarczającej pamięci masowej oraz zasobów obliczeniowych i sieciowych do zaspokojenia 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 generowany przez tych użytkowników może krążyć po całym świecie, zanim trafi do centralnej lokalizacji.
-
Ograniczona dostępność: w przypadku wzorców ruchu o skali całej sieci utrzymanie odporności aplikacji na awarie może być trudne.
-
Uzależnienie od dostawców: abstrakcje stosowane przez dostawców w platformach i infrastrukturze mogą uniemożliwiać przeprowadzanie 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 muszą zostać utworzone 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ą powodować 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 i dobrze opracowane metody wykorzystujące Kubernetes oraz inne zasoby 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).
Uwaga: uruchom ten moduł w oknie incognito (zalecane) lub przeglądania prywatnego. Dzięki temu unikniesz konfliktu między swoim kontem osobistym a kontem do nauki, co mogłoby spowodować naliczanie dodatkowych opłat na koncie osobistym.
- Odpowiednia ilość czasu na ukończenie modułu – pamiętaj, że gdy rozpoczniesz, nie możesz go wstrzymać.
Uwaga: w tym module używaj tylko konta do nauki. Jeśli użyjesz innego konta Google Cloud, mogą na nim zostać naliczone opłaty.
Rozpoczynanie modułu i logowanie się w konsoli Google Cloud
-
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:
- 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.
Uwaga: aby uzyskać dostęp do produktów i usług Google Cloud, kliknij Menu nawigacyjne lub wpisz nazwę usługi albo produktu w polu Szukaj.
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.
-
Kliknij te okna:
- Przejdź przez okno z informacjami o Cloud Shell.
- Zezwól Cloud Shell na używanie Twoich danych logowania w celu wywoływania interfejsu Google Cloud API.
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:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "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.
- (Opcjonalnie) Aby wyświetlić listę aktywnych kont, użyj tego polecenia:
gcloud auth list
- Kliknij Autoryzuj.
Dane wyjściowe:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Opcjonalnie) Aby wyświetlić identyfikator projektu, użyj tego polecenia:
gcloud config list project
Dane wyjściowe:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Uwaga: pełną dokumentację gcloud
w Google Cloud znajdziesz w opisie gcloud CLI.
Ustawianie strefy
Aby ustawić roboczą strefę Google Cloud, uruchom to polecenie, podstawiając za zmienną strefę lokalną:
gcloud config set compute/zone {{{ project_0.default_zone | ZONE }}}
Pobieranie przykładowego kodu na potrzeby tego modułu
- Pobierz przykładowy kod do utworzenia i uruchomienia kontenerów oraz wdrożeń z zasobnika modułu:
gcloud storage cp -r gs://spls/gsp053/kubernetes .
cd kubernetes
- Utwórz klaster z 3 węzłami (wykonanie tego kroku może potrwać kilka minut):
gcloud container clusters create bootcamp \
--machine-type e2-small \
--num-nodes 3 \
--scopes "https://www.googleapis.com/auth/projecthosting,storage-rw"
Zadanie 1. Zapoznanie z obiektem wdrożenia
Na początek przyjrzyj się obiektowi wdrożenia.
- Uruchomienie polecenia
explain
w kubectl
spowoduje wyświetlenie informacji o obiekcie wdrożenia:
kubectl explain deployment
- Możesz również wyświetlić wszystkie pola przy użyciu opcji
--recursive
:
kubectl explain deployment --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:
kubectl explain deployment.metadata.name
Zadanie 2. Tworzenie wdrożenia
- Utwórz wdrożenie
fortune-app
. Sprawdź plik konfiguracji wdrożenia:
cat deployments/fortune-app-blue.yaml
Dane wyjściowe:
# orchestrate-with-kubernetes/kubernetes/deployments/fortune-app-blue.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: fortune-app-blue
spec:
replicas: 3
selector:
matchLabels:
app: fortune-app
template:
metadata:
labels:
app: fortune-app
track: stable
version: "1.0.0"
spec:
containers:
- name: fortune-app
# The new, centralized image path
image: "us-central1-docker.pkg.dev/qwiklabs-resources/spl-lab-apps/fortune-service:1.0.0"
ports:
- name: http
containerPort: 8080
...
Zwróć uwagę, że wdrożenie tworzy 3 repliki i korzysta z wersji 1.0.0 kontenera fortune-service.
- Utwórz teraz wdrożenie przy użyciu polecenia
kubectl create
:
kubectl create -f deployments/fortune-app-blue.yaml
- Kiedy już utworzysz wdrożenie, możesz sprawdzić, czy na pewno zostało utworzone:
kubectl get deployments
- Po utworzeniu wdrożenia Kubernetes utworzy dla niego obiekt
ReplicaSet
. Możesz sprawdzić, czy obiekt ReplicaSet
został na pewno utworzony dla wdrożenia:
kubectl get replicasets
Powinien się wyświetlić obiekt ReplicaSet
z nazwą w formacie fortune-app-blue-xxxxxxx
- Wyświetl pody utworzone w ramach wdrożenia:
kubectl get pods
- Teraz utwórz usługę, aby udostępnić wdrożenie
fortune-app
na zewnątrz.
kubectl create -f services/fortune-app.yaml
- Przeprowadź interakcję z wdrożeniem
fortune-app
, pobierając jego zewnętrzny adres IP i wykonując odwołanie do punktu końcowego /version
przy użyciu polecenia curl:
kubectl get services fortune-app
Uwaga: zanim pole External-IP zostanie wypełnione na potrzeby Twojej usługi, może minąć kilka sekund. To zupełnie normalne. Wystarczy uruchamiać opisane powyżej polecenie co kilka sekund, dopóki pole nie zostanie wypełnione.
curl http://<EXTERNAL-IP>/version
Powinna zostać zwrócona odpowiedź JSON wskazująca {"version":"1.0.0"}
.
- Możesz także użyć funkcji tworzenia szablonu danych wyjściowych
kubectl
, żeby użyć polecenia curl jako 1 wiersza:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
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żenie i usługę fortune-app, wyświetli się odpowiedni wynik.
Utworzenie klastra Kubernetes i wdrożenia (fortune-app)
Skalowanie wdrożenia
Po utworzeniu wdrożenia możesz je przeskalować. Żeby to zrobić, zaktualizuj pole spec.replicas
.
- Najprostszym sposobem na zaktualizowanie pola replik jest użycie polecenia
kubectl scale
:
kubectl scale deployment fortune-app-blue --replicas=5
Uwaga: zanim wszystkie nowe pody się uruchomią, może minąć około minuty.
- Sprawdź, czy jest teraz uruchomionych 5 podów
fortune-app-blue
:
kubectl get pods | grep fortune-app-blue | wc -l
- Teraz przywróć poprzednią skalę aplikacji:
kubectl scale deployment fortune-app-blue --replicas=3
- Jeszcze raz sprawdź, czy liczba podów jest prawidłowa:
kubectl get pods | grep fortune-app-blue | wc -l
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.
Aktywowanie aktualizacji kroczącej
- Aby uruchomić aktualizację kroczącą, wystarczy zastosować konfigurację wdrożenia „zielonego”. Kubernetes jest wystarczająco inteligentny, aby wykryć istniejące wdrożenie (
fortune-app-blue
) i przenieść na nie zmiany z nowego pliku.
kubectl edit deployment fortune-app-blue
- W edytorze znajdź wiersz
image
i zmień tag wersji z 1.0.0
na 2.0.0
. Aby edytować plik, naciśnij i
na klawiaturze, by przejść do „trybu wstawiania”.
-
Zapisz i zamknij edytor. Aby to zrobić, naciśnij Esc
, wpisz :wq
i naciśnij Enter
. Spowoduje to aktywowanie aktualizacji kroczącej we właściwym wdrożeniu i poprawne zarejestrowanie jej historii. Spowoduje to aktywowanie aktualizacji kroczącej we właściwym wdrożeniu i poprawne zarejestrowanie jej historii.
-
Wyświetl nowy obiekt ReplicaSet
utworzony przez Kubernetes:
kubectl get replicaset
- Możesz również wyświetlić nowy wpis w historii wdrożenia:
kubectl rollout history deployment/fortune-app-blue
Wstrzymywanie aktualizacji kroczącej
- Aby wstrzymać wdrażanie, uruchom to polecenie:
kubectl rollout pause deployment/fortune-app-blue
- Sprawdź obecny stan wdrażania:
kubectl rollout status deployment/fortune-app-blue
Uwaga: polecenie status może od razu zwrócić komunikat „deployment "fortune-app-blue" successfully rolled out” (wdrożenie „fortune-app-blue” zakończone sukcesem). To normalne i oznacza, że polecenie wstrzymania zostało wykonane. Nie oznacza to, że aktualizacja wersji została zakończona.
- Sprawdź wersję każdego poda. Zobaczysz kombinację podów 1.0.0 i 2.0.0, co potwierdzi, że wdrażanie zostało wstrzymane w połowie.
for p in $(kubectl get pods -l app=fortune-app -o=jsonpath='{.items[*].metadata.name}'); do echo $p && curl -s http://$(kubectl get pod $p -o=jsonpath='{.status.podIP}')/version; echo; done
- Naciśnij
Ctrl+C
, aby wyjść z pętli.
Wznawianie aktualizacji kroczącej
- Wznów wdrażanie przy pomocy polecenia
resume
:
kubectl rollout resume deployment/fortune-app-blue
- Po zakończeniu wdrażania, kiedy uruchomisz polecenie
status
, powinien się wyświetlić tekst poniżej:
kubectl rollout status deployment/fortune-app-blue
Cofanie aktualizacji
Załóżmy, że w nowej wersji wykryto błąd.
- Żeby przywrócić poprzednią wersję, użyj polecenia
rollout
:
kubectl rollout undo deployment/fortune-app-blue
Uwaga: wycofanie zmian może potrwać kilka minut.
- Sprawdź, czy wszystkie pody zostały przywrócone do wersji 1.0.0:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Świetnie! Wiesz już, jak przeprowadzić aktualizację kroczącą wdrożeń Kubernetes.
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.
Tworzenie wdrożenia do wczesnych testów
- Najpierw utwórz nowe wdrożenie do wczesnych testów dla nowej wersji przy użyciu pliku
fortune-app-canary.yaml
:
cat deployments/fortune-app-canary.yaml
- Teraz utwórz wdrożenie do wczesnych testów:
kubectl create -f deployments/fortune-app-canary.yaml
- Po utworzeniu wdrożenia do wczesnych testów powinny być dostępne 2 wdrożenia. Sprawdź to za pomocą tego polecenia:
kubectl get deployments
Usługa fortune-app
ma selektor app: fortune-app
, który dopasuje pody zarówno we wdrożeniu fortune-app-blue
(środowisko produkcyjne), jak i fortune-app-canary
(wdrożenie do wczesnych testów).
Sprawdzanie wdrożenia do wczesnych testów
- Możesz sprawdzić obsługiwaną wersję, wysyłając żądania do usługi.
for i in {1..10}; do curl -s http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version; echo;
done
- Uruchom je kilka razy. Zobaczysz wtedy, że większość żądań jest obsługiwana przez wersję 1.0.0, a ich mała część 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.
Utworzenie wdrożenia do wczesnych testów
Zadanie 5. Wdrożenia metodą blue-green
W przypadku wdrożeń metodą blue-green utworzysz 2 oddzielne wdrożenia i przełączysz ruch między nimi, aktualizując selektor usługi.
Usługa
- Najpierw zaktualizuj usługę tak, aby wskazywała tylko wersję „niebieską” (1.0.0).
kubectl apply -f services/fortune-app-blue-service.yaml
Przeprowadzanie aktualizacji przy użyciu wdrożenia metodą blue-green
- Teraz utwórz nowe wdrożenie „zielone” dla wersji 2.0.0.
kubectl create -f deployments/fortune-app-green.yaml
- Po uruchomieniu wdrożenia „zielonego” sprawdź, czy nadal używana jest wersja 1.0.0.
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
- Teraz zaktualizuj usługę tak, aby wskazywała nową wersję „zieloną”:
kubectl apply -f services/fortune-app-green-service.yaml
- Kiedy usługa zostanie zaktualizowana, wdrożenie „zielone” zostanie od razu zastosowane. Możesz teraz sprawdzić, czy zawsze jest używana wersja 2.0.0:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Przywracanie poprzedniej wersji
- Aby wycofać zmiany, po prostu ponownie zastosuj plik manifestu usługi dla wdrożenia „niebieskiego”:
kubectl apply -f services/fortune-app-blue-service.yaml
- Po zaktualizowaniu usługi zostanie przywrócona stara wersja. Sprawdź, czy używana jest teraz wersja 1.0.0:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
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.
Wdrożenie metodą blue-green
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.
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: 18 sierpnia 2025 r.
Ostatni test modułu: 18 sierpnia 2025 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.