Instrukcje i wymagania dotyczące konfiguracji modułu
Chroń swoje konto i postępy. Zawsze używaj okna przeglądania prywatnego i danych logowania do modułu, kiedy go uruchamiasz.

Wdrażanie, skalowanie i aktualizowanie strony w Google Kubernetes Engine

Laboratorium 25 godz. universal_currency_alt 1 punkt show_chart Wprowadzające
info Ten moduł może zawierać narzędzia AI, które ułatwią Ci naukę.
Te treści nie są jeszcze zoptymalizowane pod kątem urządzeń mobilnych.
Dla maksymalnej wygody odwiedź nas na komputerze, korzystając z linku przesłanego e-mailem.

GSP663

Logo modułów do samodzielnego ukończenia poświęconych Google Cloud

Opis

Obsługa witryn internetowych i aplikacji to niełatwa sprawa. W najbardziej niepożądanych momentach dochodzi do usterek, serwery ulegają awarii, wzrost zainteresowania zwiększa wykorzystanie zasobów, a wprowadzanie zmian bez przestojów jest skomplikowane i stresujące. Kubernetes pomaga to wszystko zrobić, a nawet zautomatyzować.

W tym module wcielisz się w rolę programisty w fikcyjnym sklepie o nazwie Fancy Store, zajmującego się prowadzeniem witryny 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ę w środowisku Google Kubernetes Engine (GKE).

Ćwiczenia w tym module są uporządkowane w taki sposób, aby odzwierciedlały typowe czynności podejmowane przez programistów poruszających się w środowisku chmurowym:

  1. Tworzenie klastra GKE
  2. Tworzenie kontenera Dockera
  3. Wdrażanie kontenera w GKE
  4. Udostępnianie kontenera za pomocą usługi
  5. Skalowanie kontenera przez utworzenie wielu replik
  6. Modyfikowanie witryny
  7. Publikowanie nowej wersji z zerowym czasem przestoju

Schemat architektury

Schemat architektury

Wymagania wstępne

  • Aby jak najwięcej wynieść ze szkolenia, najlepiej jest znać podstawy Dockera i platformy Kubernetes.

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

  1. 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.
  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 uzyskać dostęp do produktów i usług Google Cloud, kliknij Menu nawigacyjne lub wpisz nazwę usługi albo produktu w polu Szukaj. Ikona menu nawigacyjnego i pole wyszukiwania

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.

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

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

Dane wyjściowe:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} 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_0.project_id | "PROJECT_ID"}}} Uwaga: pełną dokumentację gcloud w Google Cloud znajdziesz w opisie gcloud CLI.

Ustawianie strefy

  • Ustaw domyślną strefę i konfigurację projektu:
gcloud config set compute/zone {{{project_0.default_zone|lab zone}}}

Więcej informacji znajdziesz w dokumentacji regionów i stref (w języku angielskim).

Zadanie 1. Tworzenie klastra GKE

Do wdrożenia witryny internetowej potrzebny Ci będzie klaster Kubernetes. Najpierw upewnij się, że masz włączone odpowiednie interfejsy API.

  1. Uruchom następujące polecenie, aby utworzyć klaster GKE o nazwie fancy-cluster3 węzłami:
gcloud container clusters create fancy-cluster --num-nodes 3 Uwaga: jeśli pojawi się komunikat o błędzie z informacją, że nie określono regionu lub strefy, przejdź do sekcji konfiguracji środowiska i upewnij się, że masz ustawioną domyślną strefę obliczeniową.

Tworzenie klastra może potrwać kilka minut.

  1. Gdy klaster zostanie utworzony, uruchom następujące polecenie, aby wyświetlić 3 instancje robocze klastra:
gcloud compute instances list

Dane wyjściowe:

NAME: gke-fancy-cluster-default-pool-fb932da6-4sk6 ZONE: us-central1-f MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.128.0.3 EXTERNAL_IP: 34.172.106.173 STATUS: RUNNING NAME: gke-fancy-cluster-default-pool-fb932da6-d6qc ZONE: us-central1-f MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.128.0.4 EXTERNAL_IP: 34.133.99.176 STATUS: RUNNING NAME: gke-fancy-cluster-default-pool-fb932da6-ztnh ZONE: us-central1-f MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.128.0.5 EXTERNAL_IP: 34.136.180.45 STATUS: RUNNING
  1. Odszukaj swój klaster Kubernetes oraz powiązane z nim informacje w konsoli.

  2. Kliknij Menu nawigacyjne (Ikona menu nawigacyjnego) > Kubernetes Engine > Klastry.

Zobaczysz klaster o nazwie fancy-cluster.

Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło. Utworzenie klastra GKE

Zadanie 2. Klonowanie repozytorium źródłowego

Ponieważ mamy do czynienia z istniejącą witryną, 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.

  1. Uruchom następujące polecenie, aby sklonować repozytorium Git i umieścić kopię w instancji Cloud Shell:
cd ~ git clone https://github.com/googlecodelabs/monolith-to-microservices.git
  1. Przejdź do odpowiedniego katalogu.

  2. Zainstaluj zależności NodeJS, tak aby można było przetestować aplikację przed wdrożeniem:

cd ~/monolith-to-microservices ./setup.sh

Poczekaj kilka minut, aż uruchomiony skrypt zostanie wykonany.

  1. Zadbaj, aby w Cloud Shell działała najnowsza wersja npm:
nvm install --lts
  1. Przejdź do odpowiedniego katalogu i przetestuj aplikację, wykonując następujące polecenie w celu uruchomienia serwera WWW.
cd ~/monolith-to-microservices/monolith npm start

Dane wyjściowe:

Monolith listening on port 8080!
  1. Aby wyświetlić podgląd aplikacji, kliknij ikonę podglądu w przeglądarce i wybierz Podejrzyj na porcie 8080:

Wyróżniona opcja Podejrzyj na porcie 8080

Otworzy się nowe okno, w którym zobaczysz, jak będzie wyglądać strona internetowa sklepu Fancy Store.

Strona powitalna Fancy Store

Pozostaw tę kartę otwartą – wrócimy do niej w późniejszej części modułu.

  1. Aby zatrzymać proces serwera WWW, naciśnij CTRL+C w Cloud Shell.

Zadanie 3. Tworzenie kontenera Dockera za pomocą Cloud Build

Po przygotowaniu plików źródłowych nadszedł czas na zdokeryzowanie aplikacji.

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. Cloud Build umożliwia utworzenie kontenera Dockera oraz umieszczenie obrazu w Artifact Registry za pomocą jednego polecenia.

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 Artifact Registry.

  1. Najpierw sprawdź, czy włączony jest interfejs Cloud Build API. Aby to zrobić, uruchom następujące polecenie:
gcloud services enable cloudbuild.googleapis.com
  1. Aby uruchomić proces kompilacji, wykonaj to polecenie:
cd ~/monolith-to-microservices/monolith gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 .
  1. Proces ten zajmie kilka minut.

W terminalu pojawią się dane wyjściowe podobne do tych poniżej:

ID CREATE_TIME DURATION SOURCE IMAGES STATUS 1ae295d9-63cb-482c-959b-bc52e9644d53 2019-08-29T01:56:35+00:00 33S gs://_cloudbuild/source/1567043793.94-abfd382011724422bf49af1558b894aa.tgz gcr.io//monolith:1.0.0 SUCCESS
  1. Aby wyświetlić historię kompilacji lub obserwować ten proces w czasie rzeczywistym, wybierz Menu nawigacyjne, przewiń w dół do sekcji CI/CD i kliknij Cloud Build > Historia. Tutaj znajdziesz listę wszystkich utworzonych do tej pory kompilacji.

  2. 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:

Strona Szczegóły wykonania z kartami i wyróżnioną nazwą obrazu

Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło. Utworzenie kontenera Dockera za pomocą Cloud Build

Zadanie 4. Wdrażanie kontenera w GKE

Po skonteneryzowaniu witryny i przeniesieniu kontenera do Artifact 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 Kubernetes utworzy w klastrze zasób Deployment o nazwie monolith1 repliką.

  • Uruchom to polecenie, aby wdrożyć swoją aplikację:
kubectl create deployment monolith --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 Uwaga: w celu zachowania tych zmian zalecaną praktyką jest użycie pliku YAML oraz systemu kontroli źródła, takiego jak GitHub. Dowiedz się więcej o tych zasobach z dokumentacji obiektów Deployment.

Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło. Wdrożenie kontenera w GKE

Sprawdzanie wdrożenia

  1. Sprawdź, czy zasób Deployment został prawidłowo utworzony:
kubectl get all

Ponawiaj polecenie do momentu, gdy stan poda zmieni się na Uruchomiono.

Dane wyjściowe:

NAME READY STATUS RESTARTS AGE pod/monolith-7d8bc7bf68-htm7z 1/1 Running 0 6m21s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.27.240.1 443/TCP 24h NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deployment.apps/monolith 1 1 1 1 20m NAME DESIRED CURRENT READY AGE replicaset.apps/monolith-7d8bc7bf68 1 1 1 20m

Widoczne wyżej dane wyjściowe pokazują kilka elementów:

  • aktualny zasób Deployment,
  • kontroler ReplicaSet z pożądaną liczbą podów wynoszącą 1,
  • uruchomiony pod.

Wygląda na to, że udało się utworzyć wszystkie elementy.

Uwaga: aplikacje wdrożone w Kubernetes można również wyświetlać w konsoli. Aby to zrobić, należy otworzyć Menu nawigacyjne > Kubernetes Engine > Zbiory zadań. Uwaga: jeśli zobaczysz błędy lub nieoczekiwane stany, za pomocą podanych niżej poleceń możesz wykonać debugowanie swoich zasobów w celu wyświetlenia szczegółowych informacji na ich temat:

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:

# Show pods kubectl get pods # Show deployments kubectl get deployments # Show replica sets kubectl get rs #You can also combine them kubectl get pods,deployments

Aby zobaczyć pełnię możliwości Kubernetes, warto przeprowadzić symulację awarii serwera przez usunięcie poda i sprawdzić, co się stanie.

  1. Skopiuj nazwę poda z poprzedniego polecenia i użyj jej do uruchomienia następującego polecenia, które spowoduje jego usunięcie:
kubectl delete pod/<NAZWA_PODA>

Proces usuwania można obserwować na stronie Zbiory zadań.

  1. Wystarczy kliknąć nazwę zbioru zadań (proces ten przebiega bardzo szybko).

  2. 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:

kubectl get all

Dane wyjściowe:

NAME READY STATUS RESTARTS AGE pod/monolith-7d8bc7bf68-2bxts 1/1 Running 0 4s pod/monolith-7d8bc7bf68-htm7z 1/1 Terminating 0 9m35s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.27.240.1 443/TCP 24h NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deployment.apps/monolith 1 1 1 1 24m NAME DESIRED CURRENT READY AGE replicaset.apps/monolith-7d8bc7bf68 1 1 1 24m

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 w poziomie do kilku uruchomionych instancji jednocześnie, tak aby w razie awarii jednej z nich użytkownicy nie doświadczali żadnych przestojów.

Zadanie 5. Udostępnianie wdrożenia GKE

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. Musisz bezpośrednio udostępnić aplikację dla ruchu z internetu za pomocą zasobu Service. Zasób Service zapewnia podom aplikacji obsługę sieci i adresu IP. GKE tworzy dla aplikacji zewnętrzny adres IP oraz system równoważenia obciążenia.

  • Aby udostępnić witrynę w internecie, uruchom następujące polecenie:
kubectl expose deployment monolith --type=LoadBalancer --port 80 --target-port 8080

Uzyskiwanie dostępu do usługi

GKE przypisuje zewnętrzny adres IP do zasobu Service, a nie do zasobu Deployment.

  1. Aby dowiedzieć się, jaki jest zewnętrzny adres IP udostępniony przez GKE dla aplikacji, możesz sprawdzić zasób Service za pomocą polecenia kubectl get service:
kubectl get service

Dane wyjściowe:

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE monolith 10.3.251.122 203.0.113.0 80:30877/TCP 3d

Ponawiaj polecenie do momentu, aż usługa uzyska zewnętrzny adres IP.

  1. Po określeniu zewnętrznego adresu IP aplikacji skopiuj adres IP i wpisz w przeglądarce adres URL (np. „http://203.0.113.0”), aby sprawdzić, czy aplikacja jest dostępna.

Powinna wyświetlić się taka sama witryna jak we wcześniejszym teście. Twoja witryna internetowa działa teraz całkowicie w klastrze Kubernetes.

Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło. Udostępnienie wdrożenia GKE

Zadanie 6. Skalowanie wdrożenia GKE

Wyobraź sobie, że po tym, jak Twoja aplikacja została uruchomiona w GKE i udostępniona w internecie, zyskała ogromną popularność. Potrzebujesz sposobu na przeskalowanie aplikacji na kilka instancji, tak by mogła poradzić sobie ze zwiększonym ruchem. Teraz nauczysz się, jak przeskalować aplikację na 3 repliki.

  1. W Cloud Shell uruchom podane niżej polecenie, aby przeskalować swoje wdrożenie do 3 replik:
kubectl scale deployment monolith --replicas=3
  1. Sprawdź, czy skalowanie zasobu Deployment przebiegło pomyślnie:
kubectl get all

Dane wyjściowe:

NAME READY STATUS RESTARTS AGE pod/monolith-7d8bc7bf68-2bxts 1/1 Running 0 36m pod/monolith-7d8bc7bf68-7ds7q 1/1 Running 0 45s pod/monolith-7d8bc7bf68-c5kxk 1/1 Running 0 45s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.27.240.1 443/TCP 25h service/monolith LoadBalancer 10.27.253.64 XX.XX.XX.XX 80:32050/TCP 6m7s NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deployment.apps/monolith 3 3 3 3 61m NAME DESIRED CURRENT READY AGE replicaset.apps/monolith-7d8bc7bf68 3 3 3 61m

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. Przeskalowanie wdrożenia GKE

Zadanie 7. Wprowadzanie zmian w witrynie

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, a zmiany zostaną zastosowane automatycznie. Wykonaj podane niżej instrukcje, by wprowadzić odpowiednie zmiany.

  1. Uruchom te polecenia, aby skopiować zaktualizowany plik z poprawną nazwą:
cd ~/monolith-to-microservices/react-app/src/pages/Home mv index.js.new index.js
  1. Wyświetl zawartość pliku, aby sprawdzić zmiany:
cat ~/monolith-to-microservices/react-app/src/pages/Home/index.js

Wynikowy kod powinien wyglądać podobnie do tego:

/* Copyright 2019 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. \*/ import React from "react"; import { makeStyles } from "@material-ui/core/styles"; import Paper from "@material-ui/core/Paper"; import Typography from "@material-ui/core/Typography"; const useStyles = makeStyles(theme => ({ root: { flexGrow: 1 }, paper: { width: "800px", margin: "0 auto", padding: theme.spacing(3, 2) } })); export default function Home() { const classes = useStyles(); return (
Fancy Fashion & Style Online
Tired of mainstream fashion ideas, popular trends and societal norms? This line of lifestyle products will help you catch up with the Fancy trend and express your personal style. Start shopping Fancy items now!
); }

Zaktualizowane zostały komponenty React, ale należy jeszcze utworzyć aplikację React, by wygenerować pliki statyczne.

  1. Uruchom to polecenie, by utworzyć aplikację React i skopiować ją do katalogu publicznego aplikacji monolitycznej:
cd ~/monolith-to-microservices/react-app npm run build:monolith

Po zaktualizowaniu kodu musisz ponownie utworzyć kontener Dockera i opublikować go w Artifact Registry. Użyj tego samego polecenia co wcześniej, ale tym razem zaktualizuj etykietę wersji.

  1. Uruchom to polecenie, aby aktywować nową kompilację Cloud Build ze zaktualizowaną wersją obrazu 2.0.0:
cd ~/monolith-to-microservices/monolith gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .

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. Wprowadzenie zmian w witrynie

Zadanie 8. Aktualizowanie witryny z zerowym czasem przestoju

Zmiany zostały wprowadzone i dział marketingu jest zadowolony z aktualizacji. Nadszedł czas, aby zaktualizować witrynę 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.

  • Aby zaktualizować w Kubernetes obraz swojego wdrożenia do nowej wersji, użyj następującego polecenia:
kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0

Sprawdzanie wdrożenia

  1. Aby sprawdzić aktualizację wdrożenia, uruchom następujące polecenie:
kubectl get pods

Dane wyjściowe:

NAME READY STATUS RESTARTS AGE monolith-584fbc994b-4hj68 1/1 Terminating 0 60m monolith-584fbc994b-fpwdw 1/1 Running 0 60m monolith-584fbc994b-xsk8s 1/1 Terminating 0 60m monolith-75f4cf58d5-24cq8 1/1 Running 0 3s monolith-75f4cf58d5-rfj8r 1/1 Running 0 5s monolith-75f4cf58d5-xm44v 0/1 ContainerCreating 0 1s

Jak widać, tworzone są 3 nowe pody, podczas gdy stare pody są wyłączane. Można stwierdzić, które pody są nowe, a które stare, na podstawie wartości w kolumnie AGE. Ostatecznie widoczne będą znowu tylko 3 pody – te zaktualizowane.

  1. Przetestuj aplikację, wykonując następujące polecenie w celu uruchomienia serwera WWW:
npm start
  1. Aby sprawdzić wprowadzone zmiany, wróć do karty aplikacji i odśwież stronę. Zwróć uwagę, że Twoja aplikacja została zaktualizowana.

W Twojej witrynie powinien być teraz widoczny tekst dodany ostatnio do komponentu strony głównej.

Strona główna Fancy Store

  1. Aby zatrzymać proces serwera WWW, naciśnij CTRL+C w Cloud Shell.

Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło. Zaktualizowanie witryny przy zerowym czasie przestoju

Zadanie 9. Czyszczenie

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.

  1. Usuń repozytorium Git:
cd ~ rm -rf monolith-to-microservices
  1. Usuń obrazy Artifact Registry:
# Delete the container image for version 1.0.0 of the monolith gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --quiet # Delete the container image for version 2.0.0 of the monolith gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 --quiet
  1. Usuń artefakty Google Cloud Build z Google Cloud Storage:
# The following command will take all source archives from all builds and delete them from cloud storage # Run this command to print all sources: # gcloud builds list | awk 'NR > 1 {print $4}' gcloud builds list | grep 'SOURCE' | cut -d ' ' -f2 | while read line; do gsutil rm $line; done
  1. Usuń usługę GKE:
kubectl delete service monolith kubectl delete deployment monolith
  1. Usuń klaster GKE:
gcloud container clusters delete fancy-cluster {{{project_0.default_region | lab region}}}
  1. Wpisz Y, aby potwierdzić działanie. Wykonanie polecenia może zająć kilka chwil.

Gratulacje!

Udało Ci się wdrożyć, przeskalować i zaktualizować witrynę w GKE. Teraz już wiesz, jak korzystać z usług Docker i Kubernetes.

Kolejne kroki / Więcej informacji

Ostatnia aktualizacja instrukcji: 26 kwietnia 2024 r.

Ostatni test modułu: 21 lutego 2024 r.

Copyright 2026 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.

Zanim zaczniesz

  1. Moduły tworzą projekt Google Cloud i zasoby na określony czas.
  2. Moduły mają ograniczenie czasowe i nie mają funkcji wstrzymywania. Jeśli zakończysz moduł, musisz go zacząć od początku.
  3. Aby rozpocząć, w lewym górnym rogu ekranu kliknij Rozpocznij moduł.

Użyj przeglądania prywatnego

  1. Skopiuj podaną nazwę użytkownika i hasło do modułu.
  2. Kliknij Otwórz konsolę w trybie prywatnym.

Zaloguj się w konsoli

  1. Zaloguj się z użyciem danych logowania do modułu. Użycie innych danych logowania może spowodować błędy lub naliczanie opłat.
  2. Zaakceptuj warunki i pomiń stronę zasobów przywracania.
  3. Nie klikaj Zakończ moduł, chyba że właśnie został przez Ciebie zakończony lub chcesz go uruchomić ponownie, ponieważ spowoduje to usunięcie wyników i projektu.

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

Jeden moduł, a potem drugi

Potwierdź, aby zakończyć wszystkie istniejące moduły i rozpocząć ten

Aby uruchomić moduł, użyj przeglądania prywatnego

Najlepszym sposobem na uruchomienie tego laboratorium jest użycie okna incognito 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.