arrow_back

Zarządzanie wdrożeniami przy użyciu Kubernetes Engine

Sprawdź swoją wiedzę i podziel się nią ze społecznością.
done
Zyskaj dostęp do ponad 700 praktycznych modułów oraz odznak umiejętności i szkoleń

Zarządzanie wdrożeniami przy użyciu Kubernetes Engine

Moduł 1 godz. universal_currency_alt Punkty: 5 show_chart Średnio zaawansowane
info Ten moduł może zawierać narzędzia AI, które ułatwią Ci naukę.
Sprawdź swoją wiedzę i podziel się nią ze społecznością.
done
Zyskaj dostęp do ponad 700 praktycznych modułów oraz odznak umiejętności i szkoleń

GSP053

Moduły Google Cloud do samodzielnego ukończenia

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:

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).
Uwaga: uruchom ten moduł w oknie incognito lub przeglądania prywatnego. Dzięki temu unikniesz konfliktu między swoim kontem osobistym a kontem do nauki, co mogłoby spowodować naliczanie oddatkowych opłat na koncie osobistym.
  • Odpowiednia ilość czasu na ukończenie modułu – pamiętaj, że gdy rozpoczniesz, nie możesz go wstrzymać.
Uwaga: jeśli masz już osobiste konto lub projekt w Google Cloud, nie używaj go w tym module, aby uniknąć naliczania opłat na koncie.

Rozpoczynanie modułu i logowanie się w konsoli Google Cloud

  1. 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.
  2. 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.
  3. 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.

  4. Kliknij Dalej.

  5. 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.

  6. 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.
  7. 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 wyświetlić menu z listą produktów i usług Google Cloud, w lewym górnym rogu kliknij Menu nawigacyjne. Ikona menu nawigacyjnego

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.

  1. Kliknij Aktywuj Cloud Shell Ikona aktywowania 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:

Your Cloud Platform project in this session is set to YOUR_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.

  1. (Opcjonalnie) Aby wyświetlić listę aktywnych kont, użyj tego polecenia:
gcloud auth list
  1. Kliknij Autoryzuj.

  2. Dane wyjściowe powinny wyglądać tak:

Dane wyjściowe:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Opcjonalnie) Aby wyświetlić identyfikator projektu, użyj tego polecenia:
gcloud config list project

Dane wyjściowe:

[core] project = <project_ID>

Przykładowe dane wyjściowe:

[core] project = qwiklabs-gcp-44776a13dea667a6 Uwaga: pełną dokumentację 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ą strefę lokalną:

gcloud config set compute/zone {{{ project_0.default_zone | ZONE }}}

Pobieranie przykładowego kodu na potrzeby tego modułu

  1. Pobierz przykładowy kod do utworzenia i uruchomienia kontenerów oraz wdrożeń:
gsutil -m cp -r gs://spls/gsp053/orchestrate-with-kubernetes . cd orchestrate-with-kubernetes/kubernetes
  1. 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.

  1. Uruchomienie polecenia explainkubectl spowoduje wyświetlenie informacji o obiekcie wdrożenia:
kubectl explain deployment
  1. Możesz również wyświetlić wszystkie pola przy użyciu opcji --recursive:
kubectl explain deployment --recursive
  1. 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

  1. Zaktualizuj plik konfiguracji deployments/auth.yaml:
vi deployments/auth.yaml
  1. Uruchom edytor:
i
  1. Zmień image w sekcji kontenerów wdrożenia na:
... containers: - name: auth image: "kelseyhightower/auth:1.0.0" ...
  1. Zapisz plik auth.yaml: naciśnij <Esc> i wpisz:
:wq
  1. Naciśnij <Enter>. Następnie utwórz proste wdrożenie. Sprawdź plik konfiguracji wdrożenia:
cat deployments/auth.yaml

Dane wyjściowe:

apiVersion: apps/v1 kind: Deployment metadata: name: auth spec: replicas: 1 selector: matchLabels: app: auth template: metadata: labels: app: auth track: stable spec: containers: - name: auth image: "kelseyhightower/auth:1.0.0" ports: - name: http containerPort: 80 - name: health containerPort: 81 ...

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.

  1. Utwórz teraz wdrożenie przy użyciu polecenia kubectl create:
kubectl create -f deployments/auth.yaml
  1. Kiedy już utworzysz wdrożenie, możesz sprawdzić, czy na pewno zostało utworzone:
kubectl get deployments
  1. Po utworzeniu wdrożenia Kubernetes utworzy dla niego kontroler ReplicaSet. Możesz sprawdzić, czy kontroler ReplicaSet został na pewno utworzony dla wdrożenia:
kubectl get replicasets

Powinien się wyświetlić kontroler ReplicaSet z nazwą w formacie auth-xxxxxxx

  1. Wyświetl pody utworzone w ramach wdrożenia. Podczas tworzenia kontrolera ReplicaSet Kubernetes utworzy pojedynczy pod:
kubectl get pods

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.

  1. Utwórz usługę auth przy pomocy polecenia kubectl create:
kubectl create -f services/auth.yaml
  1. Powtórz ten krok, żeby utworzyć i udostępnić wdrożenie hello:
kubectl create -f deployments/hello.yaml kubectl create -f services/hello.yaml
  1. Zrób to jeszcze raz, żeby utworzyć i udostępnić wdrożenie frontend:
kubectl create secret generic tls-certs --from-file tls/ kubectl create configmap nginx-frontend-conf --from-file=nginx/frontend.conf kubectl create -f deployments/frontend.yaml kubectl create -f services/frontend.yaml Uwaga: utworzono obiekt ConfigMap na potrzeby frontendu.
  1. Przeprowadź interakcję z frontendem, pobierając jego zewnętrzny adres IP i wykonując odwołanie do niego przy użyciu polecenia curl:
kubectl get services frontend 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 -ks https://<EXTERNAL-IP>

Otrzymasz też wtedy odpowiedź na Hello.

  1. Możesz także użyć funkcji tworzenia szablonu danych wyjściowych kubectl, żeby użyć polecenia curl jako 1 wiersza:
curl -ks https://`kubectl get svc frontend -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`

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.

Utworzenie klastra Kubernetes i wdrożenia (auth, hello i frontend)

Skalowanie wdrożenia

Po utworzeniu wdrożenia możesz je przeskalować. Żeby to zrobić, zaktualizuj pole spec.replicas.

  1. Aby zobaczyć wyjaśnienia dotyczące tego pola, użyj ponownie polecenia kubectl explain:
kubectl explain deployment.spec.replicas
  1. Najprostszym sposobem na zaktualizowanie pola replik jest użycie polecenia kubectl scale:
kubectl scale deployment hello --replicas=5 Uwaga: zanim wszystkie nowe pody się uruchomią, może minąć około minuty.

Po zaktualizowaniu wdrożenia Kubernetes automatycznie zaktualizuje powiązany kontroler ReplicaSet i uruchomi nowe pody, tak żeby łączna liczba podów wynosiła 5.

  1. Sprawdź, czy jest teraz uruchomionych 5 podów hello:
kubectl get pods | grep hello- | wc -l
  1. Teraz przywróć poprzednią skalę aplikacji:
kubectl scale deployment hello --replicas=3
  1. Jeszcze raz sprawdź, czy liczba podów jest prawidłowa:
kubectl get pods | grep hello- | 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. 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.

Schemat z wdrożeniem pomiędzy kontrolerami ReplicaSet

Aktywowanie aktualizacji kroczącej

  1. Żeby zaktualizować wdrożenie, użyj tego polecenia:
kubectl edit deployment hello
  1. Zmień image w sekcji kontenerów wdrożenia na:
... containers: image: kelseyhightower/hello:2.0.0 ...
  1. Zapiszzamknij.

Zaktualizowane wdrożenie zostanie zapisane w klastrze, a Kubernetes rozpocznie aktualizację kroczącą.

  1. Wyświetl nowy kontroler ReplicaSet utworzony przez Kubernetes:
kubectl get replicaset
  1. Możesz również wyświetlić nowy wpis w historii wdrożenia:
kubectl rollout history deployment/hello

Wstrzymywanie aktualizacji kroczącej

Jeśli wykryjesz problemy z wdrażaniem kroczącym, wstrzymaj je, żeby zatrzymać aktualizację.

  1. Aby wstrzymać wdrażanie, uruchom to polecenie:
kubectl rollout pause deployment/hello
  1. Sprawdź obecny stan wdrażania:
kubectl rollout status deployment/hello
  1. Możesz również to sprawdzić bezpośrednio w podach:
kubectl get pods -o jsonpath --template='{range .items[*]}{.metadata.name}{"\t"}{"\t"}{.spec.containers[0].image}{"\n"}{end}'

Wznawianie aktualizacji kroczącej

Wdrażanie jest wstrzymane, co oznacza, że niektóre pody mają nową wersję, a inne starą.

  1. Wznów wdrażanie przy pomocy polecenia resume:
kubectl rollout resume deployment/hello
  1. Po zakończeniu wdrażania, kiedy uruchomisz polecenie status, powinien się wyświetlić tekst poniżej:
kubectl rollout status deployment/hello

Dane wyjściowe:

deployment "hello" successfully rolled out

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ę.

  1. Żeby przywrócić poprzednią wersję, użyj polecenia rollout:
kubectl rollout undo deployment/hello
  1. Sprawdź w historii, czy poprzednia wersja została przywrócona:
kubectl rollout history deployment/hello
  1. Sprawdź też, czy poprzednie wersje zostały przywrócone we wszystkich podach:
kubectl get pods -o jsonpath --template='{range .items[*]}{.metadata.name}{"\t"}{"\t"}{.spec.containers[0].image}{"\n"}{end}'

Ś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.

Schemat wdrożenia do wczesnych testów

  1. Najpierw utwórz nowe wdrożenie do wczesnych testów dla nowej wersji:
cat deployments/hello-canary.yaml

Dane wyjściowe:

apiVersion: apps/v1 kind: Deployment metadata: name: hello-canary spec: replicas: 1 selector: matchLabels: app: hello template: metadata: labels: app: hello track: canary # Use ver 2.0.0 so it matches version on service selector version: 2.0.0 spec: containers: - name: hello image: kelseyhightower/hello:2.0.0 ports: - name: http containerPort: 80 - name: health containerPort: 81 ...
  1. Teraz utwórz wdrożenie do wczesnych testów:
kubectl create -f deployments/hello-canary.yaml
  1. Po utworzeniu wdrożenia do wczesnych testów powinny być dostępne 2 wdrożenia: hello oraz hello-canary. Sprawdź, czy tak na pewno jest, przy pomocy polecenia kubectl:
kubectl get deployments

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

  1. Możesz sprawdzić wersję hello obsługiwaną przez żądanie:
curl -ks https://`kubectl get svc frontend -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
  1. 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.

Utworzenie wdrożenia do wczesnych testów

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.

kind: Service apiVersion: v1 metadata: name: "hello" spec: sessionAffinity: ClientIP selector: app: "hello" ports: - protocol: "TCP" port: 80 targetPort: 80

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.

Schemat wdrożenia metodą blue-green

Uwaga: poważną wadą wdrożeń metodą blue-green jest konieczność zastosowania co najmniej 2 razy większej liczby zasobów w klastrze do hostowania aplikacji. Przed wdrożeniem obu wersji aplikacji jednocześnie sprawdź, czy masz wystarczającą liczbę zasobów w klastrze.

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ę:
kubectl apply -f services/hello-blue.yaml Uwaga: zignoruj ostrzeżenie 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.

apiVersion: apps/v1 kind: Deployment metadata: name: hello-green spec: replicas: 3 selector: matchLabels: app: hello template: metadata: labels: app: hello track: stable version: 2.0.0 spec: containers: - name: hello image: kelseyhightower/hello:2.0.0 ports: - name: http containerPort: 80 - name: health containerPort: 81 resources: limits: cpu: 0.2 memory: 10Mi livenessProbe: httpGet: path: /healthz port: 81 scheme: HTTP initialDelaySeconds: 5 periodSeconds: 15 timeoutSeconds: 5 readinessProbe: httpGet: path: /readiness port: 81 scheme: HTTP initialDelaySeconds: 5 timeoutSeconds: 1
  1. Utwórz wdrożenie „zielone”:
kubectl create -f deployments/hello-green.yaml
  1. Po utworzeniu i prawidłowym uruchomieniu wdrożenia „zielonego” sprawdź, czy nadal używana jest bieżąca wersja 1.0.0:
curl -ks https://`kubectl get svc frontend -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
  1. Teraz zaktualizuj usługę tak, żeby wskazywała nową wersję:
kubectl apply -f services/hello-green.yaml
  1. Kiedy usługa zostanie zaktualizowana, wdrożenie „zielone” zostanie od razu zastosowane. Możesz teraz sprawdzić, czy nowa wersja jest zawsze używana:
curl -ks https://`kubectl get svc frontend -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version

Przywracanie poprzedniej wersji

W razie potrzeby w ten sam sposób możesz przywrócić starą wersję.

  1. Wystarczy zaktualizować usługę z powrotem do poprzedniej wersji, kiedy wdrożenie „niebieskie” jest jeszcze uruchomione:
kubectl apply -f services/hello-blue.yaml
  1. Po zaktualizowaniu usługi stara wersja zostanie przywrócona. Sprawdź jeszcze raz, czy używana jest prawidłowa wersja:
curl -ks https://`kubectl get svc frontend -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.

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

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.

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