1. Giriş
Genel Bakış
Cloud Run işlevleri, bilinen GCF etkinlik oluşturma paradigmalarını ve işlev imzasını kullanarak iş yüklerini dağıtmanın yeni bir yoludur. Cloud Run işlevleri, kendi görüşlerimize dayalı 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 sahibi olmanızı sağlar.
Cloud Run işlevleriyle, Cloud Run kaynak dağıtımının basit kullanıcı deneyimini sunarak geliştiricilerin Cloud Run yapılandırmalarını kullanarak iş yükleri üzerinde tam kontrol sahibi olmasını sağlıyoruz.
Bu kod laboratuvarında, aşağıdaki örneklerde nodejs örnekleri kullanılmaktadır. Ancak, Cloud Functions 2. nesil kod örneklerini istediğiniz dilde kullanabilirsiniz:
- Python işlevi örnekleri
- Node.js işlevi örnekleri
- Go işlevi örnekleri
- Java işlevi örnekleri
- PHP işlevi örnekleri
- Ruby işlevi örnekleri
- .NET işlevi örnekleri
Neler öğreneceksiniz?
- HTTP isteğiyle tetiklenen bir Cloud Run işlevi nasıl dağıtılır?
2. Ortam değişkenlerini ayarlama ve API'leri etkinleştirme
gcloud CLI'yı yükseltme
Öncelikle gcloud CLI'nin yeni bir sürümünü yüklemeniz gerekir. Aşağıdaki komutu çalıştırarak KSA'yı güncelleyebilirsiniz:
gcloud components update
Ortam değişkenlerini ayarlama
Bu codelab boyunca 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 aşağıdaki 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
Öncelikle kaynak kodu için bir dizin oluşturun ve bu dizine gidin.
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"
}
}
Ardından, 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 kapsayıcı görüntüsüne dönüştürmek için buildpack'leri kullanır.
Lütfen şunları unutmayın:
- –source işareti, Cloud Run'a işlevi çalıştırılabilir bir kapsayıcı tabanlı hizmet olarak oluşturmasını söylemek için kullanılır.
- –function işareti (yeni), yeni hizmetin giriş noktasını çağrılmasını istediğiniz işlev imzası olarak ayarlamak için kullanılır.
- (isteğe bağlı) İşlevinizin herkese açık olarak ç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 jetonunuzla veya Cloud Run Invoker rolüne sahip bir asıl öğenin kimlik jetonuyla 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şlevleriyle ilgili dokümanları incelemenizi öneririz.
İşlediğimiz konular
- HTTP isteğiyle tetiklenen bir Cloud Run işlevi nasıl dağıtılır?
7. Temizleme
Yanlışlıkla ücretlendirilmemek için (örneğin, Cloud Run hizmetleri ücretsiz katmandaki aylık Cloud Run çağırma kotanızdan daha fazla sayıda çağrılırsa) Cloud Run'ı 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 gidin ve crf-http-codelab hizmetini silin.
Projenin tamamını silmeyi tercih ederseniz https://console.cloud.google.com/cloud-resource-manager adresine gidebilir, 2. adımda oluşturduğunuz projeyi seçip Sil'i tıklayabilirsiniz. Projeyi silerseniz Cloud SDK'nızda projeleri değiştirmeniz gerekir. gcloud projects list komutunu çalıştırarak kullanılabilir tüm projelerin listesini görüntüleyebilirsiniz.