C# ile Hello Cloud Run

1. Giriş

89eb4723767d4525.png

Cloud Run, HTTP istekleriyle çağrılabilen durum bilgisiz container'ları çalıştırmanızı sağlayan, yönetilen bir platformdur. Cloud Run sunucusuzdur: Tüm altyapı yönetimini soyutladığı için en önemli işe, yani harika uygulamalar geliştirmeye odaklanabilirsiniz.

Knative'den derlenen bu platform, container'larınızı Cloud Run ile tümüyle yönetilecek şekilde veya Google Kubernetes Engine kümenizde Cloud Run on GKE ile çalıştırmayı seçebilmenizi sağlar.

Bu codelab'in amacı, container görüntüsü oluşturup Cloud Run'a dağıtmaktır.

2. Kurulum ve Gereksinimler

Kendi hızınızda ortam kurulumu

  1. Google Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. İstediğiniz zaman güncelleyebilirsiniz.
  • Proje Kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de proje kimliğinizi (genellikle PROJECT_ID olarak tanımlanır) belirtmeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele bir kimlik daha oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır.
  • Bilginiz olması açısından, bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Sonraki adımda, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırmanın tekrarlanmasını önlemek amacıyla kaynakları kapatmak için oluşturduğunuz kaynakları silebilir veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.

Google Cloud Shell

Google Cloud dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacağız.

Cloud Shell, tarayıcınızı kullanarak her yerden erişebileceğiniz bir online geliştirme ve işlem ortamıdır. gcloud komut satırı aracı ve kubectl gibi yardımcı programlarla önceden yüklenmiş online terminalini kullanarak kaynaklarınızı yönetebilirsiniz. Ayrıca online Cloud Shell Düzenleyici'yi kullanarak bulut tabanlı uygulamalarınızı geliştirebilir, derleyebilir, hata ayıklayabilir ve dağıtabilirsiniz.

Bu sanal makinede, ihtiyacınız olan tüm geliştirme araçları yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve doğrudan Google Cloud'da çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Yani bu codelab'de ihtiyacınız olan tek şey bir tarayıcıdır (evet, Chromebook'ta çalışır).

  • Cloud Shell'i Cloud Console'dan etkinleştirmek için Cloud Shell'i etkinleştir'i tıklamanız yeterlidir :

cb81e7c8e34bc8d.png

Cloud Shell'i ilk kez başlatıyorsanız ne olduğunu açıklayan bir ara ekran gösterilir. Ara bir ekran görüntülendiyse Devam'ı tıklayın.

bfde7b083abc9544.png

Ortamın sağlanması yalnızca birkaç saniye sürer :

cbb597d2be277a14.png

Cloud Shell'e bağlandıktan sonra kimliğinizin zaten doğrulandığını göreceksiniz :

gcloud auth list

Komut çıkışı

Credentialed Accounts

ACTIVE: *
ACCOUNT: <my-account>@<mydomain>

Projenin ayrıca PROJECT_ID olarak ayarlanmış olması da gerekir (web konsolunda bir proje seçtiğiniz varsayılır) :

gcloud config list project

Komut çıkışı

[core]
project = <PROJECT_ID>

Herhangi bir nedenle proje ayarlanmamışsa şu komutu vermeniz yeterlidir:

gcloud config set project <PROJECT_ID>

PROJECT_ID cihazınızı mı arıyorsunuz? Cloud Console'un üst kısmındaki açılır menüye göz atın :

2c7a57249d954735.png

Ayrıca "Ayarlar ve yardımcı programlar"ı kullanarak projenizin ayrıntılarını inceleyebilirsiniz bölüm:

791f101797cfef39.png

Cloud Shell bazı ortam değişkenlerini de varsayılan olarak ayarlar. Bu değişkenler, gelecekte komut çalıştırdığınızda işinize yarayabilir.

echo $GOOGLE_CLOUD_PROJECT

Komut çıkışı

<PROJECT_ID>
  • Son olarak, varsayılan alt bölgeyi ayarlayabilirsiniz :
gcloud config set compute/zone us-central1-f

Farklı bölgeler seçebilirsiniz. Daha fazla bilgi için Bölgeler ve Bölgeler.

Cloud Run API'yi etkinleştirme

Cloud Shell'den Cloud Run API'yi etkinleştirin :

gcloud services enable run.googleapis.com

Bu işlem, aşağıdakine benzer başarılı bir mesaj üretir :

Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.

3. Örnek uygulamayı yazma

HTTP isteklerine yanıt veren basit bir ASP.NET C# uygulaması oluşturacağız.

Uygulamanızı oluşturmak için Cloud Shell'de dotnet komut satırı aracını kullanın:

dotnet new web -o helloworld-csharp

helloworld-csharp dizinine geç:

cd helloworld-csharp

Sonra, Program.cs öğesini aşağıdakilerle eşleşecek şekilde güncelleyin:

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();

Bu kod, PORT ortam değişkeni tarafından tanımlanan bağlantı noktasında dinleme yapan ve Hello World ile yanıt veren temel bir web sunucusu oluşturur.

Uygulamayı Cloud Shell'de yerel olarak çalıştırarak test edebilirsiniz. Cihazın 8080 numaralı bağlantı noktasında dinlediğini göreceksiniz:

$ 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. Cloud Run'a dağıt

Aşağıdaki komutla uygulamanızı Cloud Run'a dağıtın:

gcloud run deploy hello-world \
    --allow-unauthenticated \
    --region us-central1 \
    --source .
  • hello-world, hizmet adıdır.
  • allow-unauthenticated işareti, hizmeti kimlik doğrulama gereksinimi olmadan herkese açık bir hizmet olarak dağıtır.
  • us-central1, uygulamanın dağıtılacağı bölgedir.
  • source işareti, derlenecek kaynağın konumunu belirler. Cloud Run, kaynak kodundan otomatik olarak container oluşturmak için derleme paketlerini kullanır.

Dağıtım tamamlanana kadar birkaç dakika bekleyin. İşlem başarılı olursa komut satırında hizmet URL'si gösterilir :

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

Artık hizmet URL'sini bir web tarayıcısında açarak dağıtılan kapsayıcınızı ziyaret edebilirsiniz :

85e7fbbd264444c9.png

Tebrikler! Container görüntüsünde paketlenmiş bir uygulamayı Cloud Run'a dağıttınız. Cloud Run, alınan istekleri işlemek için container görüntünüzü otomatik ve yatay olarak ölçeklendirir. Ardından, talep azaldığında ölçeği küçültür. Yalnızca istek işleme sırasında tüketilen CPU, bellek ve ağ için ödeme yaparsınız.

5. Temizleme zamanı

Ücret ödemek istemiyorsanız GCP projenizi silebilirsiniz. Bunu yaptığınızda, ilgili proje içinde kullanılan tüm kaynakların faturalandırması durdurulur veya yalnızca Cloud Run hizmeti silinir:

gcloud run services delete helloworld

6. Sırada ne var?

Bundan sonraki iyi bir adım GKE'de Cloud Run'a dağıtma olacaktır.

Kod kaynağından Cloud Run'a uygun durum bilgisiz bir HTTP container'ı derleme ve bunu Container Registry'ye aktarma hakkında daha fazla bilgi için aşağıdaki konulara bakın: