Wprowadzenie do Cloud Run w języku C#

1. Wprowadzenie

89eb4723767d4525.png

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

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

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

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

cb81e7c8e34bc8d.png

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.

bfde7b083abc9544.png

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

cbb597d2be277a14.png

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 :

2c7a57249d954735.png

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

791f101797cfef39.png

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 :

85e7fbbd264444c9.png

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: