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.
Rozwiązanie to jest oparte 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 laboratorium 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 użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.



- Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Zawsze możesz ją zaktualizować.
- Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się tym przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako
PROJECT_ID). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i pozostaje on taki przez cały czas trwania projektu. - Warto wiedzieć, że istnieje trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Wykonanie tego laboratorium nie będzie kosztować dużo, a może nawet nic. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Google Cloud Shell
Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module użyjemy Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.
Cloud Shell to środowisko programistyczne i operacyjne online, które można otworzyć w dowolnym miejscu przy użyciu przeglądarki. Możesz zarządzać zasobami za pomocą terminala online wyposażonego w takie narzędzia jak narzędzie wiersza poleceń gcloud czy kubectl. Możesz również tworzyć, kompilować, debugować i wdrażać aplikacje działające w chmurze przy użyciu edytora Cloud Shell online.
Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa bezpośrednio w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Oznacza to, że do ukończenia tego ćwiczenia potrzebujesz tylko przeglądarki (działa ona na Chromebooku).
- Aby aktywować Cloud Shell w konsoli Cloud, kliknij Aktywuj Cloud Shell :

Jeśli uruchamiasz Cloud Shell po raz pierwszy, zobaczysz ekran pośredni z opisem tego środowiska. Jeśli pojawił się ekran pośredni, kliknij Dalej.

Udostępnienie środowiska powinno zająć tylko kilka sekund :

Po połączeniu z Cloud Shell zobaczysz, że uwierzytelnianie zostało już przeprowadzone :
gcloud auth list
Wynik polecenia
Credentialed Accounts ACTIVE: * ACCOUNT: <my-account>@<mydomain>
Projekt powinien być już ustawiony na PROJECT_ID (zakładając, że został wybrany w konsoli internetowej) :
gcloud config list project
Wynik polecenia
[core] project = <PROJECT_ID>
Jeśli z jakiegoś powodu projekt nie jest ustawiony, po prostu wydaj to polecenie:
gcloud config set project <PROJECT_ID>
Szukasz urządzenia PROJECT_ID? Sprawdź menu u góry konsoli Cloud :

Szczegóły projektu możesz też sprawdzić w sekcji „Ustawienia i narzędzia”:

Cloud Shell domyślnie ustawia też niektóre zmienne środowiskowe, które mogą być przydatne podczas wykonywania kolejnych poleceń.
echo $GOOGLE_CLOUD_PROJECT
Wynik 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łącz Cloud Run API
W Cloud Shell włącz Cloud Run API :
gcloud services enable run.googleapis.com
Powinien wyświetlić się komunikat o powodzeniu podobny do tego :
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
3. Tworzenie przykładowej aplikacji
Utworzymy prostą aplikację ASP.NET C#, która będzie 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 Program.cs, aby pasowało do tych wartości:
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 Hello World.
Aplikację możesz przetestować, uruchamiając ją lokalnie w Cloud Shell. Powinien 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
Aby wdrożyć aplikację w Cloud Run, użyj tego polecenia:
gcloud run deploy hello-world \
--allow-unauthenticated \
--region us-central1 \
--source .
hello-worldto nazwa usługi.- Flaga
allow-unauthenticatedwdraża usługę jako publicznie dostępną bez wymagań dotyczących uwierzytelniania. us-central1to region, w którym zostanie wdrożona aplikacja.- Flaga
sourceokreśla lokalizację źródła do skompilowania. Cloud Run używa pakietów kompilacji do automatycznego tworzenia kontenera z kodu źródłowego.
Poczekaj kilka minut na zakończenie wdrażania. 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 zobaczyć wdrożony kontener, otwierając URL usługi w przeglądarce :

Gratulacje! Właśnie udało Ci się wdrożyć 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. Płacisz tylko za procesor, pamięć i sieć wykorzystywane w trakcie obsługiwania żądań.
5. Czas na zwolnienie miejsca
Możesz usunąć projekt GCP, co spowoduje zaprzestanie naliczania opłat za wszelkie zasoby wykorzystywane w ramach tego projektu, albo usunąć tylko usługę Cloud Run:
gcloud run services delete helloworld
6. Co dalej?
Dobrym kolejnym krokiem będzie 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 (w języku angielskim):