Cloud Run to zarządzana platforma obliczeniowa, która umożliwia uruchamianie bezstanowych kontenerów wywoływanych przez żądania HTTP. Cloud Run jest rozwiązaniem bezserwerowym, które nie wymaga zarządzania infrastrukturą, dzięki czemu możesz skupić się na tym, co najważniejsze, czyli tworzeniu świetnych aplikacji.
Cloud Run opiera się na platformie Knative, co pozwala uruchamiać w pełni zarządzane kontenery w Cloud Run lub kontenery w klastrze Google Kubernetes Engine przy użyciu Cloud Run w GKE.
Celem tego modułu jest utworzenie obrazu prostej, skonteneryzowanej aplikacji i wdrożenie jej w Cloud Run.
Cele
W tym module dowiesz się, jak:
włączyć interfejs Cloud Run API;
utworzyć prostą aplikację Node.js, którą można wdrożyć jako bezserwerowy i bezstanowy kontener;
skonteneryzować aplikację i przesłać ją do Artifact Registry;
wdrożyć skonteneryzowaną aplikację w Cloud Run;
usunąć niepotrzebne obrazy, żeby uniknąć dodatkowych opłat za miejsce na dane.
Konfiguracja i wymagania
W przypadku każdego modułu otrzymujesz bezpłatnie i na określony czas nowy projekt Google Cloud oraz zbiór zasobów.
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.
Kliknij Otwórz konsolę Google Cloud (lub kliknij prawym przyciskiem myszy i wybierz Otwórz link w oknie incognito, jeśli korzystasz z przeglądarki Chrome).
Moduł uruchomi zasoby, po czym otworzy nową kartę ze stroną logowania.
Wskazówka: otwórz karty obok siebie w osobnych oknach.
Uwaga: jeśli pojawi się okno Wybierz konto, kliknij Użyj innego konta.
W razie potrzeby skopiuj nazwę użytkownika znajdującą się poniżej i wklej ją w oknie logowania.
{{{user_0.username | "Username"}}}
Nazwę użytkownika znajdziesz też w panelu Szczegóły modułu.
Kliknij Dalej.
Skopiuj podane niżej hasło i wklej je w oknie powitania.
{{{user_0.password | "Password"}}}
Hasło znajdziesz też w panelu Szczegóły modułu.
Kliknij Dalej.
Ważne: musisz użyć danych logowania podanych w module. Nie używaj danych logowania na swoje konto Google Cloud.
Uwaga: korzystanie z własnego konta Google Cloud w tym module może wiązać się z dodatkowymi opłatami.
Na kolejnych stronach wykonaj następujące czynności:
Zaakceptuj Warunki korzystania z usługi.
Nie dodawaj opcji odzyskiwania ani uwierzytelniania dwuskładnikowego (ponieważ konto ma charakter tymczasowy).
Nie rejestruj się w bezpłatnych wersjach próbnych.
Poczekaj, aż na karcie otworzy się konsola Google Cloud.
Uwaga: aby wyświetlić menu z listą produktów i usług Google Cloud, w lewym górnym rogu kliknij Menu nawigacyjne lub wpisz nazwę usługi lub produktu w polu Szukaj.
Aktywowanie Google Cloud Shell
Google 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ń Google Cloud Shell zyskujesz dostęp do swoich zasobów Google Cloud.
Na pasku narzędzi w prawym górnym rogu w konsoli Cloud kliknij przycisk Otwórz Cloud Shell.
Kliknij Dalej.
Uzyskanie dostępu do środowiska i połączenie się z nim może zająć kilka chwil. Po połączeniu użytkownik od razu jest uwierzytelniony. Uruchomi się Twój projekt o identyfikatorze PROJECT_ID. Na przykład:
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.
Aby wyświetlić listę aktywnych kont, użyj tego polecenia:
Poniżej zamieściliśmy listę kilku podstawowych poleceń w Linuksie, które mogą być zawarte w instrukcjach lub blokach kodu w tym module.
Polecenie -->
Działanie
.
Polecenie -->
Działanie
mkdir (make directory)
tworzy nowy folder
.
cd (change directory)
zmienia lokalizację na inny folder
ls (list )
tworzy listę plików i folderów w katalogu
.
cat (concatenate)
odczytuje zawartość pliku bez używania edytora
apt-get update
aktualizuje bibliotekę systemu zarządzania pakietami
.
ping
wysyła sygnał, aby sprawdzić osiągalność hosta
mv (move)
przenosi plik
.
cp (copy)
tworzy kopię pliku
pwd (present working directory )
pokazuje obecną lokalizację
.
sudo (super user do)
nadaje wyższe uprawnienia administracyjne
Zadanie 1. Włączanie Cloud Run API i konfigurowanie środowiska powłoki
W Cloud Shell włącz Cloud Run API:
gcloud services enable run.googleapis.com
Jeśli pojawi się prośba o autoryzowanie wykorzystania Twoich danych logowania, zrób to. Następnie wyświetli się komunikat o udanym przeprowadzeniu operacji podobny do tego:
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
Uwaga: API możesz również włączyć w sekcji Interfejsy API i usługi w konsoli.
Ustaw region obliczeń:
gcloud config set compute/region {{{project_0.default_region | "REGION"}}}
W tym zadaniu utworzysz prostą aplikację NodeJS opartą na platformie Express, która odpowiada na żądania HTTP.
W Cloud Shell utwórz nowy katalog o nazwie helloworld i wyświetl go:
mkdir helloworld && cd helloworld
Następnie będziesz tworzyć i edytować pliki. Pliki możesz edytować w edytorze kodu Cloud Shell lub nano. Żeby to zrobić, kliknij przycisk Otwórz edytor w Cloud Shell.
Utwórz plik package.json i dodaj do niego tę treść:
Co najważniejsze, ten plik zawiera polecenie skryptu startowego i zależność od platformy Express umożliwiającej tworzenie aplikacji internetowych.
Naciśnij kolejno CTRL+X, Y oraz Enter, aby zapisać plik package.json.
Następnie w tym samym katalogu utwórz plik index.js i skopiuj do niego te wiersze:
nano index.js
const express = require('express');
const app = express();
const port = process.env.PORT || 8080;
app.get('/', (req, res) => {
const name = process.env.NAME || 'World';
res.send(`Hello ${name}!`);
});
app.listen(port, () => {
console.log(`helloworld: listening on port ${port}`);
});
Ten kod tworzy podstawowy serwer WWW, który nasłuchuje na porcie określonym przez zmienną środowiskową PORT. Aplikacja jest gotowa i możesz ją teraz skonteneryzować i przesłać do Artifact Registry.
Naciśnij kolejno CTRL+X, Y oraz Enter, aby zapisać plik index.js.
Uwaga: podczas pierwszych kroków z Cloud Run możesz używać wielu innych języków. Instrukcje dotyczące skryptów w językach takich jak Go, Python, Java, PHP i Ruby oraz skryptów powłoki znajdziesz w tych krótkich przewodnikach (w języku angielskim).
Zadanie 3. Konteneryzowanie aplikacji i przesyłanie jej do Artifact Registry
Żeby skonteneryzować przykładową aplikację, utwórz nowy plik o nazwie Dockerfile w tym samym katalogu, w którym znajdują się pliki źródłowe, i dodaj tę treść:
nano Dockerfile
# Use the official lightweight Node.js 12 image.
# https://hub.docker.com/_/node
FROM node:12-slim
# Create and change to the app directory.
WORKDIR /usr/src/app
# Copy application dependency manifests to the container image.
# A wildcard is used to ensure copying both package.json AND package-lock.json (when available).
# Copying this first prevents re-running npm install on every code change.
COPY package*.json ./
# Install production dependencies.
# If you add a package-lock.json, speed your build by switching to 'npm ci'.
# RUN npm ci --only=production
RUN npm install --only=production
# Copy local code to the container image.
COPY . ./
# Run the web service on container startup.
CMD [ "npm", "start" ]
Naciśnij kolejno CTRL+X, Y oraz Enter, żeby zapisać plik Dockerfile.
Teraz utwórz obraz kontenera przy pomocy Cloud Build, uruchamiając podane poniżej polecenie z katalogu zawierającego Dockerfile (zwróć uwagę na zmienną środowiskową $GOOGLE_CLOUD_PROJECT w poleceniu, która zawiera identyfikator projektu z modułu):
Cloud Build to usługa, która uruchamia Twoje kompilacje w Google Cloud. Wykonuje ona serię kroków kompilacji – każdy z nich jest przeprowadzany w kontenerze Dockera, aby utworzyć kontener aplikacji (lub inne artefakty) i przekazać go do rejestru Artifact Registry, a to wszystko w ramach jednego polecenia.
Gdy kontener zostanie przekazany do rejestru, wyświetli się komunikat z informacją o udanym przeprowadzeniu operacji i nazwą obrazu (gcr.io/[PROJECT-ID]/helloworld). Obraz będzie przechowywany w Artifact Registry i w razie potrzeby można go użyć ponownie.
Użyj tego polecenia, aby sporządzić listę wszystkich obrazów kontenerów związanych z bieżącym projektem:
gcloud container images list
Zarejestruj gcloud jako asystenta danych logowania we wszystkich rejestrach Dockera obsługiwanych przez Google:
gcloud auth configure-docker
Uwaga: może pojawić się pytanie Czy chcesz kontynuować? (Y/N)? Jeśli tak, wpisz Y.
Aby przetestować aplikację lokalnie w Cloud Shell, uruchom ją przy użyciu tego standardowego polecenia usługi docker:
docker run -d -p 8080:8080 gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
W oknie Cloud Shell kliknij Podgląd w przeglądarce i wybierz Podejrzyj na porcie 8080.
Powinno się otworzyć okno przeglądarki z komunikatem „Hello World”. Możesz też użyć polecenia curl localhost:8080.
Zadanie 4. Wdrożenie w Cloud Run
Skonteneryzowaną aplikację możesz wdrożyć w Cloud Run przy pomocy tego polecenia, do którego należy dodać identyfikator projektu:
gcloud run deploy --image gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld --allow-unauthenticated --region=$LOCATION
Flaga allow-unauthenticated w tym poleceniu sprawia, że usługa jest dostępna publicznie.
Gdy pojawi się prośba, potwierdź service name, naciskając Enter.
Uwaga: może pojawić się pytanie Do you want enable these APIs to continue (this will take a few minutes)? (Y/N). Jeśli chcesz włączyć wymagane interfejsy API, wpisz Y.
Poczekaj chwilę na zakończenie wdrażania.
Kiedy operacja zostanie wykonana, w wierszu poleceń wyświetli się URL usługi:
Service [helloworld] revision [helloworld-00001-xit] has been deployed
and is serving 100 percent of traffic.
Service URL: https://helloworld-h6cp412q3a-uc.a.run.app
Możesz teraz zobaczyć wdrożony kontener, otwierając URL usługi w dowolnym oknie przeglądarki.
Gratulacje! Właśnie wdrożyliśmy w Cloud Run aplikację spakowaną do obrazu kontenera. Cloud Run automatycznie skaluje obraz kontenera w poziomie, aby obsługiwać otrzymane żądania, a następnie skaluje go w dół, gdy zapotrzebowanie maleje. We własnym środowisku płacisz tylko za procesor, pamięć i sieć wykorzystywane w trakcie obsługiwania żądań.
W tym module używaliśmy wiersza poleceń gcloud. Usługa Cloud Run jest również dostępna w konsoli Cloud.
Otwórz Menu nawigacyjne i w sekcji Technologia bezserwerowa kliknij Cloud Run. Powinna się wyświetlić Twoja usługa helloworld:
Zadanie 5. Czyszczenie danych
Cloud Run nie nalicza opłat, gdy usługa nie jest używana, ale może zostać pobrana należność za przechowywanie utworzonego obrazu kontenera.
Możesz usunąć projekt Google Cloud, co spowoduje zaprzestanie naliczania opłat za wszelkie zasoby wykorzystywane w ramach tego projektu, albo usunąć tylko obraz helloworld przy użyciu tego polecenia:
Kiedy pojawi się prośba, wpisz Y i naciśnij Enter, żeby przejść dalej.
Żeby usunąć usługę Cloud Run, użyj tego polecenia:
gcloud run services delete helloworld --region={{{project_0.default_region | "REGION"}}}
Kiedy pojawi się prośba, wpisz Y i naciśnij Enter, żeby przejść dalej.
Kończenie modułu
Po ukończeniu modułu kliknij Zakończ moduł. Google Cloud Skills Boost usunie wykorzystane zasoby i wyczyści konto.
Po zakończeniu modułu będzie można ocenić związane z nim wrażenia. Wybierz odpowiednią liczbę gwiazdek, wpisz komentarz, a następnie kliknij Prześlij.
Liczba gwiazdek oznacza odpowiednie oceny:
1 gwiazdka – bardzo zła,
2 gwiazdki – zła,
3 gwiazdki – neutralna,
4 gwiazdki – dobra,
5 gwiazdek – bardzo dobra.
Jeśli nie chcesz dzielić się swoją opinią, możesz zamknąć okno dialogowe.
Jeśli chcesz przesłać swoją opinię, sugestie lub propozycje poprawek, użyj karty Pomoc.
Gratulacje!
Moduł ukończony.
Kolejne kroki / Więcej informacji
Więcej informacji o tworzeniu, na podstawie kodu, bezstanowego kontenera HTTP, który będzie odpowiedni do zastosowania w Cloud Run, i przekazywaniu go do Artifact Registry znajdziesz w tych materiałach (w języku angielskim):
Copyright 2020 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.
Moduły tworzą projekt Google Cloud i zasoby na określony czas.
Moduły mają ograniczenie czasowe i nie mają funkcji wstrzymywania. Jeśli zakończysz moduł, musisz go zacząć od początku.
Aby rozpocząć, w lewym górnym rogu ekranu kliknij Rozpocznij moduł.
Użyj przeglądania prywatnego
Skopiuj podaną nazwę użytkownika i hasło do modułu.
Kliknij Otwórz konsolę w trybie prywatnym.
Zaloguj się w konsoli
Zaloguj się z użyciem danych logowania do modułu. Użycie innych danych logowania może spowodować błędy lub naliczanie opłat.
Zaakceptuj warunki i pomiń stronę zasobów przywracania.
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
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 dodatkowych opłat na koncie osobistym.
W tym module dowiesz się, jak zacząć pracę z Cloud Run przed wdrożenie i uruchomienie bezstanowego kontenera bez serwera (z pominięciem infrastruktury).
Czas trwania:
Konfiguracja: 0 min
·
Dostęp na 60 min
·
Ukończono w 60 min