arrow_back

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

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

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

Lab 1 godz. 30 godz. universal_currency_alt 1 punkt show_chart Wprowadzające
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP663

Moduły Google Cloud do samodzielnego ukończenia

Opis

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:

  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 strony
  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 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;
    • 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. 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 z panelu Szczegóły modułu i wklej ją w oknie logowania. Kliknij Dalej.

  4. Skopiuj hasło z panelu Szczegóły modułu i wklej je w oknie powitania. Kliknij Dalej.

    Ważne: musisz użyć danych logowania z panelu po lewej stronie, a nie danych logowania Google Cloud Skills Boost. Uwaga: korzystanie z własnego konta Google Cloud w tym module może wiązać się z dodatkowymi opłatami.
  5. 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 Console, 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

  • 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 strony internetowej potrzebny Ci będzie klaster Kubernetes. Najpierw upewnij się, że włączono odpowiednie interfejsy API.

  1. Uruchom następujące polecenie, aby włączyć interfejs Container Registry API:
gcloud services enable container.googleapis.com

Teraz możesz utworzyć klaster.

  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 ustawiono 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 Google Cloud.

  2. Kliknij menu nawigacyjne (Ikona menu nawigacyjnego) > 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. Utworzenie klastra GKE

Zadanie 2. Klonowanie repozytorium źródłowego

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.

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

  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 Narzędzia 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 podkreśloną 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 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 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 lub Cloud Source Repositories. 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 W toku.

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 > Zadania. 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 poprzez usunięcie poda i sprawdzić, jaki uzyskamy wtedy efekt.

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

Proces usuwania można obserwować na stronie Zadania.

  1. Wystarczy kliknąć nazwę zbioru zadań (proces ten będzie bardzo krótki).

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

  • Aby udostępnić stronę 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 wskaż adres URL swojej przeglądarce (np. „http://203.0.113.0”), aby sprawdzić, czy Twoja aplikacja jest dostępna.

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. Udostępnienie wdrożenia GKE

Zadanie 6. Skalowanie wdrożenia GKE

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.

  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 i zmiany zostaną automatycznie zastosowane. 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 usługi monolitycznej:
cd ~/monolith-to-microservices/react-app npm run build:monolith

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.

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

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

  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 Google Container 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ć stronę w GKE. Teraz już wiesz, jak korzystać z usług Docker i Kubernetes.

Ukończ kurs

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.

Przejdź do kolejnego modułu

Możesz uczyć się dalej w ramach modułu Migracja monolitycznej strony internetowej do mikroserwisów w Google Kubernetes Engine lub sprawdzić inne propozycje:

Kolejne kroki / Więcej informacji

Ostatnia aktualizacja instrukcji: 13 września 2023 r.

Ostatni test modułu: 13 września 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.