Cloud Run işlevlerini (HTTP) kullanmaya başlama

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:

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.