1. Giriş
Genel Bakış
Cloud Run işlevleri, bilinen EBOB etkinlik paradigmalarını ve işlev imzalarını kullanarak iş yüklerini dağıtmanın yeni bir yoludur. Cloud Run işlevleri, ayrıntılı derleme sürecimizi ve dağıtım yapılandırmalarımızı kullanmak yerine Cloud Run'da oluşturulan temel Hizmet üzerinde doğrudan kontrol sağlar.
Cloud Run işlevleriyle basit bir Cloud Run kaynak dağıtımı kullanıcı deneyimi sunarak geliştiricilerin Cloud Run yapılandırmalarını kullanarak iş yükleri üzerinde tam kontrol sahibi olmasını sağlıyoruz.
Bu codelab'de, aşağıdaki örneklerde yer alan nodejs örnekleri kullanılır. Bununla birlikte, Cloud Functions 2. nesil kod örneklerini istediğiniz dilde kullanabilirsiniz:
- Python işlev örnekleri
- Nodejs işlev örnekleri
- Go işlev örnekleri
- Java işlevi örnekleri
- PHP işlev örnekleri
- Ruby işlevi örnekleri
- .NET işlevi örnekleri
Neler öğreneceksiniz?
- HTTP isteği tarafından tetiklenen bir Cloud Run işlevini dağıtma
2. Ortam Değişkenlerini Ayarlama ve API'leri Etkinleştirme
gcloud CLI'ı yükseltme
Öncelikle, gcloud CLI'ın yeni bir sürümünün yüklü olması gerekir. CLI'yı güncellemek için şu komutu çalıştırın:
gcloud components update
Ortam değişkenlerini ayarlama
Bu codelab'de kullanılacak ortam değişkenlerini ayarlayabilirsiniz.
PROJECT_ID=<YOUR_PROJECT_ID> REGION=<YOUR_REGION, e.g. us-central1> gcloud config set project $PROJECT_ID SERVICE_NAME=crf-http-codelab
API'leri etkinleştir
Bu codelab'i kullanmaya başlamadan önce etkinleştirmeniz gereken birkaç API vardır. Bu codelab'de aşağıdaki API'lerin kullanılması gerekir. Bu API'leri şu komutu çalıştırarak etkinleştirebilirsiniz:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com \ storage.googleapis.com \ artifactregistry.googleapis.com
3. HTTP işlevi oluşturma
İlk olarak, kaynak kodu için bir dizin oluşturun ve bu dizin için cd'yi kullanın.
mkdir -p cloud-run-functions/$SERVICE_NAME && cd $_
Ardından, aşağıdaki içeriğe sahip bir package.json
dosyası oluşturun:
{ "dependencies": { "@google-cloud/functions-framework": "^3.0.0" } }
Sonra, aşağıdaki içeriğe sahip bir index.js
dosyası oluşturun:
const functions = require("@google-cloud/functions-framework"); functions.http("helloHttp", (req, res) => { res.send(`Hello ${req.query.name || req.body.name || "World"}!`); });
4. İşlevi dağıtma
Şimdi aşağıdaki komutu çalıştırarak Cloud Run işlevini dağıtabilirsiniz:
gcloud beta run deploy $SERVICE_NAME \ --source . \ --function helloHttp \ --region us-central1 \ --no-allow-unauthenticated
Bu komut, işlev kaynak kodunuzu üretime hazır bir container görüntüsüne dönüştürmek için buildpack'leri kullanır.
Önemli:
- -source işareti, Cloud Run'a işlevi çalıştırılabilir container tabanlı bir hizmette derlemesini bildirmek için kullanılır
- İşlev işareti (yeni), yeni hizmetin giriş noktasını çağrılmasını istediğiniz fonksiyon imzası olarak ayarlamak için kullanılır
- (isteğe bağlı) İşlevinizin herkese açık şekilde çağrılmasını önlemek için –no-allow-unauthenticated
5. İşlevi test etme
Dağıtım tamamlandığında hizmet URL'sini görürsünüz. İşlevi çağırmak için kimlik jetonunuz veya Cloud Run Çağırıcısı rolüne sahip bir ilkenin kimlik jetonuyla aşağıda gösterildiği gibi kimliği doğrulanmış bir istek göndermeniz gerekir:
# get the Service URL SERVICE_URL="$(gcloud run services describe $SERVICE_NAME --region us-central1 --format 'value(status.url)')" # invoke the service curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL
6. Tebrikler!
Tebrikler, codelab'i tamamladınız.
Cloud Run işlevleri ile ilgili belgeleri incelemenizi öneririz.
İşlediklerimiz
- HTTP isteği tarafından tetiklenen bir Cloud Run işlevini dağıtma
7. Temizleme
Yanlışlıkla yapılan ücretleri önlemek için (örneğin, Cloud Run hizmetleri yanlışlıkla ücretsiz katmandaki aylık Cloud Run çağırma tahsisinizden daha fazla kez çağrıldıysa) Cloud Run'ı silebilir veya 2. adımda oluşturduğunuz projeyi silebilirsiniz.
Cloud Run işlevini silmek için https://console.cloud.google.com/run adresinden Cloud Run Cloud Console'a gidip crf-http-codelab
hizmetini silin.
Projenin tamamını silmeyi tercih ederseniz https://console.cloud.google.com/cloud-resource-manager adresine gidip 2. adımda oluşturduğunuz projeyi, ardından Sil'i seçebilirsiniz. Projeyi silerseniz Cloud SDK'nızdaki projeleri değiştirmeniz gerekir. gcloud projects list
komutunu çalıştırarak mevcut tüm projelerin listesini görüntüleyebilirsiniz.