1. Giriş
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
- 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.
- 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.
- 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 :
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.
Ortamın sağlanması yalnızca birkaç saniye sürer :
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 :
Ayrıca "Ayarlar ve yardımcı programlar"ı kullanarak projenizin ayrıntılarını inceleyebilirsiniz bölüm:
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 :
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: