1. Wprowadzenie
Cloud Run to zarządzana platforma, 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.
Jest oparta 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 ćwiczenia w Codelabs jest utworzenie obrazu kontenera i wdrożenie go w Cloud Run.
2. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.
- Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. To ciąg znaków, który nie jest używany przez interfejsy API Google. W każdej chwili możesz ją zaktualizować.
- Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić (po jego ustawieniu nie można go zmienić). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń w Codelabs musisz podać swój identyfikator projektu (zwykle identyfikowany jako
PROJECT_ID
). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować kolejny losowy. Możesz też spróbować własnych sił i sprawdzić, czy jest dostępna. Po wykonaniu tej czynności nie można jej już zmienić. Pozostanie ona przez cały czas trwania projektu. - Jest jeszcze trzecia wartość, numer projektu, z którego korzystają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Cloud/interfejsów API. Ukończenie tego ćwiczenia z programowania nic nie kosztuje. Aby wyłączyć zasoby w celu uniknięcia naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.
Google Cloud Shell,
Google Cloud można obsługiwać zdalnie z Twojego laptopa, ale w ramach tego ćwiczenia z programowania wykorzystamy Google Cloud Shell – środowisko wiersza poleceń działające w chmurze.
Cloud Shell to środowisko programistyczne i operacyjne online, które jest dostępne z dowolnego miejsca przy użyciu przeglądarki. Możesz zarządzać zasobami za pomocą terminala online wyposażonego w narzędzia wiersza poleceń gcloud czy kubectl. Możesz także tworzyć, kompilować, debugować i wdrażać aplikacje działające w chmurze za pomocą edytora Cloud Shell online.
Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa bezpośrednio 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, po prostu kliknij Aktywuj Cloud Shell :
Jeśli uruchamiasz Cloud Shell po raz pierwszy, zobaczysz ekran pośredni z opisem tej usługi. Jeśli został wyświetlony ekran pośredni, kliknij Dalej.
Udostępnianie środowiska powinno zająć tylko kilka sekund :
Gdy połączysz się z Cloud Shell, powinna pojawić się informacja, że jesteś już uwierzytelniona :
gcloud auth list
Dane wyjściowe polecenia
Credentialed Accounts ACTIVE: * ACCOUNT: <my-account>@<mydomain>
Projekt powinien być już ustawiony na PROJECT_ID
(przy założeniu, że projekt został wybrany w konsoli sieciowej) :
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
? Skorzystaj z menu u góry konsoli Cloud :
Szczegóły projektu możesz też sprawdzić w sekcji „Ustawienia i narzędzia” :
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 możesz ustawić strefę domyślną :
gcloud config set compute/zone us-central1-f
Możesz wybrać różne strefy. Więcej informacji znajdziesz w artykule Regiony i Strefy.
Włączanie interfejsu Cloud Run API
W Cloud Shell włącz interfejs Cloud Run API :
gcloud services enable run.googleapis.com
Powinien wyświetlić się komunikat podobny do tego :
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
3. Tworzenie przykładowej aplikacji
Utworzymy prostą aplikację w języku ASP.NET w języku C#, która odpowiada na żądania HTTP.
Aby utworzyć aplikację, użyj narzędzia wiersza poleceń dotnet
w Cloud Shell:
dotnet new web -o helloworld-csharp
Przejdź do katalogu helloworld-csharp
:
cd helloworld-csharp
Następnie zaktualizuj pole Program.cs
, tak aby spełniały te wymagania:
var builder = WebApplication.CreateBuilder(args); var port = Environment.GetEnvironmentVariable("PORT") ?? "8080"; var url = $"http://0.0.0.0:{port}"; builder.WebHost.UseUrls(url); var app = builder.Build(); app.MapGet("/", () => "Hello World!"); app.Run();
Ten kod tworzy podstawowy serwer WWW, który nasłuchuje na porcie określonym przez zmienną środowiskową PORT
i odpowiada za pomocą Hello World
.
Aby przetestować aplikację, uruchom ją lokalnie w Cloud Shell. Powinien on nasłuchiwać na porcie 8080:
$ dotnet run Using launch settings from /home/atameldev/helloworld-csharp/Properties/launchSettings.json... Hosting environment: Development Content root path: /home/atameldev/helloworld-csharp Now listening on: http://0.0.0.0:8080 Application started. Press Ctrl+C to shut down.
4. Wdrożenie w Cloud Run
Wdróż aplikację w Cloud Run za pomocą tego polecenia:
gcloud run deploy hello-world \ --allow-unauthenticated \ --region us-central1 \ --source .
hello-world
to nazwa usługi.- Flaga
allow-unauthenticated
wdraża usługę jako usługę dostępną publicznie bez wymagań dotyczących uwierzytelniania. us-central1
to region, w którym aplikacja zostanie wdrożona.- Flaga
source
określa lokalizację źródła do skompilowania. Cloud Run używa pakietów kompilacji, aby automatycznie utworzyć kontener na podstawie kodu źródłowego.
Poczekaj kilka minut na zakończenie wdrożenia. Kiedy operacja zostanie wykonana, w wierszu poleceń wyświetli się URL usługi :
Service [hello-world] revision [hello-world-00001-yos] has been deployed and is serving 100 percent of traffic. Service URL: https://helloworld-wdl7fdwaaa-uc.a.run.app
Możesz teraz wyświetlić wdrożony kontener, otwierając URL usługi w przeglądarce :
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 w dół, gdy zapotrzebowanie maleje. Płacisz tylko za procesor, pamięć i sieć wykorzystywane podczas obsługi żądań.
5. Czas posprzątać
Możesz usunąć projekt GCP, co spowoduje zaprzestanie naliczania opłat za wszystkie zasoby używane w ramach tego projektu, albo usunąć usługę Cloud Run:
gcloud run services delete helloworld
6. Co dalej?
Dobrym następnym krokiem jest wdrożenie w Cloud Run w GKE.
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 Container Registry znajdziesz w tych materiałach: