1. Wprowadzenie
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 narzędzie, które mogłoby Ci w tym pomóc, a nawet umożliwić automatyzację. Dzięki GKE to wszystko jest nie tylko możliwe, ale także proste. W tym ćwiczeniu w programowaniu wcielasz się w programistę, który zajmuje się stroną e-commerce fikcyjnej firmy – Fani Store. Ze względu na problemy ze skalowaniem i częste przerwy w działaniu strony masz za zadanie wdrożyć swoją aplikację w GKE.
Ćwiczenia zostały ułożone w kolejności wykonywania typowych zadań przez programistę w chmurze:
- utworzyć klaster GKE,
- Utwórz kontener Dockera.
- wdrożyć kontener w GKE,
- Udostępnij kontener za pomocą usługi.
- Skaluj kontener, tworząc wiele replik.
- Zmodyfikuj witrynę.
- opublikować nową wersję z zerowym czasem przestoju,
Diagram architektury
Czego się nauczysz
- Jak utworzyć klaster GKE
- Jak utworzyć obraz Dockera
- jak wdrożyć obrazy Dockera w środowisku Kubernetes,
- jak skalować aplikacje w środowisku Kubernetes,
- jak wykonywać kroczące aktualizacje aplikacji w środowisku Kubernetes.
Wymagania wstępne
- Konto Google z dostępem administracyjnym do tworzenia projektów lub projekt z przypisaną rolą właściciela projektu
- Podstawowa znajomość technologii Docker i Kubernetes (jeśli nie znasz jeszcze podstaw Dockera i Kubernetes, zapoznaj się z materiałami dotyczącymi Dockera i Kubernetesa).
2. Konfiguracja środowiska
Samodzielne konfigurowanie środowiska
Jeśli nie masz jeszcze konta Google, musisz je utworzyć. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt.
Pamiętaj, że identyfikator projektu jest niepowtarzalną nazwą we wszystkich projektach Google Cloud (powyższa nazwa jest już zajęta i nie będzie Ci odpowiadać). Zacznie się ona później nazywać PROJECT_ID
.
Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Google Cloud. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego o wartości 300 USD. Jeśli nie jesteś nowym użytkownikiem, nie martw się – ćwiczenia z programowania nie powinny kosztować więcej niż kilka złotych. Ćwiczenia z programowania mogą być jednak droższe, jeśli używasz większej liczby zasobów lub pozostawisz je uruchomione (więcej informacji znajdziesz w sekcji „Czyszczenie” na końcu). Więcej informacji znajdziesz w cenniku.
Cloud Shell
Choć możesz zdalnie obsługiwać Google Cloud i GKE na laptopie, do ćwiczeń z programowania będziesz używać Cloud Shell – środowiska wiersza poleceń działającego w chmurze.
Ta maszyna wirtualna oparta na Debianie zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i uwierzytelnianie. Oznacza to, że do tego ćwiczenia z programowania wystarczy przeglądarka (tak, działa ona na Chromebooku).
- Aby aktywować Cloud Shell z poziomu konsoli Cloud, kliknij Aktywuj Cloud Shell (udostępnienie środowiska i połączenie z nim powinno zająć tylko chwilę).
Po nawiązaniu połączenia z Cloud Shell powinno pojawić się potwierdzenie, że użytkownik jest już uwierzytelniony, a projekt jest już ustawiony na PROJECT_ID
.
gcloud auth list
Dane wyjściowe polecenia
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Dane wyjściowe polecenia
[core] project = <PROJECT_ID>
Jeśli z jakiegoś powodu projekt nie jest skonfigurowany, uruchom po prostu to polecenie:
gcloud config set project <PROJECT_ID>
Szukasz urządzenia PROJECT_ID
? Sprawdź identyfikator użyty w krokach konfiguracji lub wyszukaj go w panelu Cloud Console:
Cloud Shell ustawia też domyślnie niektóre zmienne środowiskowe, które mogą być przydatne podczas uruchamiania kolejnych poleceń.
echo $GOOGLE_CLOUD_PROJECT
Dane wyjściowe polecenia
<PROJECT_ID>
- Na koniec ustaw domyślną strefę i konfigurację projektu.
gcloud config set compute/zone us-central1-f
Możesz wybrać różne strefy. Więcej informacji znajdziesz w artykule Regiony i Strefy.
3. Tworzenie klastra GKE
Skoro masz już działające środowisko programistyczne, potrzebujesz teraz klastra GKE, w którym wdrożysz witrynę. Zanim utworzysz klaster, musisz się upewnić, że są włączone odpowiednie interfejsy API. Uruchom to polecenie, aby włączyć interfejs API kontenerów:
gcloud services enable container.googleapis.com
Teraz możesz utworzyć klaster. Wykonaj te czynności, aby utworzyć klaster o nazwie fancy-cluster z 3 węzłami:
gcloud container clusters create fancy-cluster --num-nodes 3
Tworzenie klastra może potrwać kilka minut. Następnie uruchom to polecenie, aby wyświetlić 3 instancje maszyn wirtualnych klastra:
gcloud compute instances list
Dane wyjściowe:
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS gke-fancy-cluster-default-pool-ad92506d-1ng3 us-east4-a n1-standard-1 10.150.0.7 XX.XX.XX.XX RUNNING gke-fancy-cluster-default-pool-ad92506d-4fvq us-east4-a n1-standard-1 10.150.0.5 XX.XX.XX.XX RUNNING gke-fancy-cluster-default-pool-ad92506d-4zs3 us-east4-a n1-standard-1 10.150.0.6 XX.XX.XX.XX RUNNING
Klaster i powiązane z nim informacje możesz też wyświetlić w konsoli Cloud. Kliknij przycisk menu w lewym górnym rogu, przewiń w dół do Kubernetes Engine i kliknij Klastry. Zobaczysz klaster o nazwie fancy-cluster.
Gratulacje! Udało Ci się utworzyć pierwszy klaster!
4. Klonowanie repozytorium źródłowego
Ponieważ jest to istniejąca witryna, wystarczy sklonować źródło z repozytorium. Dzięki temu będzie można skoncentrować się na tworzeniu obrazów Dockera i ich wdrażaniu w GKE.
Uruchom następujące polecenia, aby sklonować repozytorium źródłowe do instancji Cloud Shell i zmienić je na odpowiedni katalog. Zainstalujesz również zależności Node.js, tak aby można było przetestować aplikację przed jej wdrożeniem.
cd ~ git clone https://github.com/googlecodelabs/monolith-to-microservices.git cd ~/monolith-to-microservices ./setup.sh
Spowoduje to skopiowanie repozytorium, zmianę katalogu i zainstalowanie zależności niezbędnych do lokalnego uruchomienia aplikacji. Działanie tego skryptu może potrwać kilka minut.
Zachowaj należytą staranność i przetestuj aplikację. Uruchom to polecenie, aby uruchomić serwer WWW:
cd ~/monolith-to-microservices/monolith npm start
Dane wyjściowe:
Monolith listening on port 8080!
Aby wyświetlić podgląd aplikacji, kliknij ikonę podglądu w przeglądarce w menu Cloud Shell i wybierz Podgląd na porcie 8080.
Otworzy się nowe okno, w którym zobaczysz, jak będzie wyglądać strona internetowa sklepu Fancy Store.
Możesz zamknąć to okno po przejrzeniu witryny. Naciśnij Control+C
(Windows lub Mac) w oknie terminala, by zatrzymać proces serwera WWW.
5. 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 etapów obejmujących utworzenie kontenera Dockera i przeniesienie go do rejestru w celu zapisania obrazu pobieranego przez GKE. Możesz jednak ułatwić sobie życie, korzystając z Cloud Build. W ten sposób możesz za pomocą jednego polecenia utworzyć kontener Dockera i umieścić obraz w Container Registry. Aby zapoznać się z ręcznym procesem tworzenia pliku Dockera i jego przenoszenia, zapoznaj się z krótkim wprowadzeniem do Container Registry.
Cloud Build kompresuje pliki znajdujące się w katalogu i przenosi je do zasobnika Cloud Storage. Następnie proces kompilacji pobiera pliki z zasobnika i używa pliku Dockerfile do uruchomienia procesu kompilacji Dockera. Ponieważ dla obrazu Dockera została określona flaga --tag
z hostem gcr.io
, wynikowy obraz Dockera zostanie przeniesiony do Container Registry.
Najpierw musisz włączyć interfejs Cloud Build API, uruchamiając to polecenie:
gcloud services enable cloudbuild.googleapis.com
Po włączeniu interfejsu API uruchom w Cloud Shell to polecenie, aby rozpocząć proces kompilacji:
cd ~/monolith-to-microservices/monolith gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 .
Ten proces może potrwać kilka minut, a po jego zakończeniu w terminalu pojawią się te dane wyjściowe:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ID CREATE_TIME DURATION SOURCE IMAGES STATUS 1ae295d9-63cb-482c-959b-bc52e9644d53 2019-08-29T01:56:35+00:00 33S gs://<PROJECT_ID>_cloudbuild/source/1567043793.94-abfd382011724422bf49af1558b894aa.tgz gcr.io/<PROJECT_ID>/monolith:1.0.0 SUCCESS
Aby wyświetlić historię kompilacji lub obejrzeć ten proces w czasie rzeczywistym, możesz otworzyć konsolę Cloud. Kliknij przycisk menu w lewym górnym rogu, przewiń w dół do sekcji Ci/CD, kliknij Cloud Build i na koniec kliknij Historia. Zobaczysz listę utworzonych do tej pory kompilacji, ale powinna się tam znajdować tylko ta utworzona przez Ciebie kompilacja.
Po kliknięciu identyfikatora kompilacji zostaną wyświetlone wszystkie szczegóły kompilacji, w tym dane wyjściowe dzienników.
Na stronie z informacjami o kompilacji możesz wyświetlić utworzony obraz kontenera. Aby to zrobić, kliknij nazwę obrazu w sekcji informacji o kompilacji.
6. Wdrażanie kontenera w GKE
Po umieszczeniu witryny w kontenerze i przeniesieniu kontenera do Container Registry możesz wdrożyć go w Kubernetes.
Aby 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 prezentuje aplikacje jako pody, czyli jednostki reprezentujące kontener (lub grupę ściśle powiązanych kontenerów). Pod to najmniejsza możliwa do wdrożenia jednostka w Kubernetes. W tym przypadku każdy pod zawiera tylko kontener aplikacji monolitycznej.
Aby wdrożyć aplikację, musisz utworzyć wdrożenie. Deployment zarządza wieloma kopiami aplikacji (nazywanymi replikami) i planuje ich uruchamianie w poszczególnych węzłach w klastrze. W takim przypadku zasób Deployment uruchomi tylko 1 pod Twojej aplikacji. Dzięki temu zespoły Deployment tworzą kontroler ReplicaSet. ReplicaSet odpowiada za to, aby zawsze działała określona liczba replik.
Polecenie kubectl create deployment
powoduje, że Kubernetes tworzy w klastrze zasób Deployment o nazwie monolith z 1 repliką.
Uruchom to polecenie, aby wdrożyć swoją aplikację:
kubectl create deployment monolith --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0
Sprawdzanie wdrożenia
Aby sprawdzić, czy zasób Deployment został prawidłowo utworzony, uruchom to polecenie (zmiana stanu poda na „Uruchomiono”) może chwilę potrwać:
kubectl get all
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 <none> 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
Dane wyjściowe zawierają kilka informacji. Możesz zobaczyć aktualny stan wdrożenia; kontroler ReplicaSet z pożądaną liczbą podów wynoszącą 1; i uruchomionego poda. Wygląda na to, że udało Ci się utworzyć wszystkie elementy.
Aby wyświetlić zasoby pojedynczo, możesz uruchomić te polecenia:
# 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łne korzyści Kubernetes, możesz przeprowadzić symulację awarii serwera, usunąć poda i sprawdzić, co się stanie.
Skopiuj nazwę poda z poprzedniego polecenia i uruchom to polecenie, aby go usunąć:
kubectl delete pod/<POD_NAME>
Jeśli zdążysz, możesz uruchomić poprzednie polecenie, aby ponownie zobaczyć wszystkie pody. Zobaczysz wtedy 2 pody – jeden w fazie końcowej, drugi w fazie tworzenia 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 <none> 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
Jaka była tego przyczyna? 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. Później dowiesz się, jak przeprowadzić skalowanie, aby zapewnić kilka uruchomionych instancji jednocześnie, tak aby w razie awarii jednej z nich użytkownicy nie doświadczali żadnych przestojów.
7. Udostępnanie wdrożenia GKE
Aplikacja została wdrożona w GKE, ale nie masz 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 Twojej aplikacji zewnętrzny adres IP i system równoważenia obciążenia (podlega opłacie).
Aby udostępnić stronę w internecie, uruchom to polecenie:
kubectl expose deployment monolith --type=LoadBalancer --port 80 --target-port 8080
Dane wyjściowe:
service/monolith exposed
Uzyskiwanie dostępu do usługi
GKE przypisuje zewnętrzny adres IP do zasobu Service, a nie do zasobu Deployment. Aby znaleźć zewnętrzny adres IP udostępniony przez GKE dla aplikacji, możesz sprawdzić usługę 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
Po określeniu zewnętrznego adresu IP aplikacji skopiuj go. Wpisz ten adres URL (na przykład http://203.0.113.0) w przeglądarce, aby sprawdzić, czy aplikacja jest dostępna.
Powinna wyświetlić się taka sama strona jak we wcześniejszym teście. Gratulacje! Twoja witryna w pełni korzysta z Kubernetes.
8. Skalowanie wdrożenia GKE
Po uruchomieniu instancji aplikacji w GKE i udostępnieniu jej w internecie Twoja witryna stała się niezwykle popularna. Potrzebujesz sposobu na przeskalowanie aplikacji na kilka instancji, by móc obsługiwać ruch. Dowiedz się, jak przeskalować aplikację do maksymalnie 3 replik.
Uruchom to polecenie, aby przeskalować wdrożenie do 3 replik:
kubectl scale deployment monolith --replicas=3
Dane wyjściowe:
deployment.apps/monolith scaled
Sprawdź skalowane wdrożenie
Aby sprawdzić, czy zasób Deployment został przeskalowany, uruchom to polecenie:
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 <none> 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 instancje poda. Pamiętaj też, że obiekty Deployment i ReplicaSet mają teraz pożądaną liczbę 3.
9. Wprowadzanie zmian w witrynie
Twój zespół marketingowy poprosił Cię o zmianę strony głównej witryny. Ich zdaniem powinna zawierać więcej informacji, wyjaśniając, czym jest firma i co sprzedaje. W tej sekcji dodasz więcej tekstu do strony głównej, aby zadowolić dział marketingu. Wygląda na to, że jeden z naszych programistów przygotował już odpowiednie zmiany i umieścił je w pliku o nazwie index.js.new
. Możesz skopiować plik do usługi index.js
i zmiany zostaną automatycznie zastosowane. Wykonaj podane niżej instrukcje, by wprowadzić odpowiednie zmiany.
Uruchom następujące polecenia, skopiuj zaktualizowany plik z poprawną nazwą, a potem wydrukuj jego zawartość, aby sprawdzić wprowadzone zmiany:
cd ~/monolith-to-microservices/react-app/src/pages/Home mv index.js.new index.js 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 ( <div className={classes.root}> <Paper className={classes.paper}> <Typography variant="h5"> Fancy Fashion & Style Online </Typography> <br /> <Typography variant="body1"> 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! </Typography> </Paper> </div> ); }
Zaktualizowane zostały komponenty React, ale musisz jeszcze utworzyć aplikację React, by wygenerować pliki statyczne. Uruchom to polecenie, by utworzyć aplikację React i skopiować ją do katalogu publicznego usługi monolith:
cd ~/monolith-to-microservices/react-app npm run build:monolith
Po zaktualizowaniu kodu musisz ponownie utworzyć kontener Dockera i opublikować go w Container Registry. Możesz użyć tego samego polecenia co wcześniej, ale tym razem zaktualizujesz etykietę wersji.
Uruchom to polecenie, aby aktywować nową kompilację Cloud Build ze zaktualizowaną wersją obrazu 2.0.0:
cd ~/monolith-to-microservices/monolith #Feel free to test your application npm start gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .
Naciśnij Control+C
(Windows lub Mac) w oknie terminala, by zatrzymać proces serwera WWW.
W następnej sekcji za pomocą tego obrazu zaktualizujesz swoją aplikację z zerowym czasem przestoju.
10. 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. Aby zaktualizować witrynę, wykonaj instrukcje opisane poniżej.
Aktualizacje kroczące GKE dają pewność, że aplikacja pozostanie aktywna i dostępna nawet wtedy, gdy system zastąpi instancje starego obrazu kontenera nowym we wszystkich uruchomionych replikach.
Z poziomu wiersza poleceń możesz poinformować Kubernetes, że chcesz zaktualizować obraz wdrożenia do nowej wersji, używając następującego polecenia:
kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0
Dane wyjściowe:
deployment.apps/monolith image updated
Sprawdzanie wdrożenia
Aby sprawdzić aktualizację wdrożenia, uruchom to 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
Widać, że tworzone są 3 nowe pody, a starsze pody są wyłączane. Sprawdzając wartość w kolumnie AGE, można stwierdzić, które są nowe, a które stare. Ostatecznie widoczne będą ponownie jedynie 3 pody – te zaktualizowane.
Aby sprawdzić zmiany, ponownie przejdź do zewnętrznego adresu IP systemu równoważenia obciążenia i zauważ, że aplikacja została zaktualizowana.
Uruchom to polecenie, aby wyświetlić listę usług i zapomniany adres IP:
kubectl get svc
W Twojej witrynie powinien być widoczny tekst dodany do komponentu strony głównej.
11. Czyszczenie danych
Usuń repozytorium Git
cd ~ rm -rf monolith-to-microservices
Usuwanie obrazów Container Registry
UWAGA: jeśli masz inne wersje, możesz użyć tej samej składni, aby usunąć także te obrazy. W tym ćwiczeniu w Codelabs zakładamy, że masz tylko 2 tagi.
# Delete the container image for version 1.0.0 of our 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 our monolith gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 --quiet
Usuwanie artefaktów Cloud Build z Cloud Storage
UWAGA: jeśli używasz Cloud Build na potrzeby artefaktów innych niż to ćwiczenia z programowania, musisz ręcznie usunąć źródło z zasobnika Cloud Storage gs://<PROJECT_ID>_cloudbuild/source
.
# 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 | awk 'NR > 1 {print $4}' | while read line; do gsutil rm $line; done
Usuń usługę GKE
kubectl delete service monolith kubectl delete deployment monolith
Usuń klaster GKE
gcloud container clusters delete fancy-cluster
UWAGA: wykonanie polecenia może chwilę potrwać.
12. Gratulacje!
Udało Ci się wdrożyć, przeskalować i zaktualizować stronę w GKE. Teraz już wiesz, jak korzystać z usług Docker i Kubernetes.