1. Giriş
Genel Bakış
Cloud Run işlevleri, hangi revizyonların trafik alacağını ve bir revizyonun aldığı trafik yüzdelerini belirtmenize olanak tanır. Düzeltmeler, önceki bir düzeltmeye geri dönmenize, bir düzeltmeyi kademeli olarak kullanıma sunmanıza ve trafiği birden fazla düzeltme arasında bölmenize olanak tanır.
Bu codelab'lerde, Cloud Run işlevlerinize yönelik trafiği yönetmek için revizyonları nasıl kullanacağınız gösterilmektedir. Düzeltmeler hakkında daha fazla bilgiyi Cloud Run belgelerinde bulabilirsiniz.
Neler öğreneceksiniz?
- Cloud Run işlevi için trafiği iki veya daha fazla revizyon arasında bölme
- Yeni bir düzeltmeyi kademeli olarak kullanıma sunma
- Önceki düzeltmeye geri dönme
2. Kurulum ve Gereksinimler
Ön koşullar
- Cloud Console'a giriş yapmış olmanız gerekir.
- Daha önce bir Cloud Run işlevi dağıtmış olmanız gerekir. Örneğin, başlamak için Cloud Run işlevi dağıtma adımlarını uygulayabilirsiniz.
Cloud Shell'i etkinleştirme
- Cloud Console'da Cloud Shell'i etkinleştir 'i
tıklayın.

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

Cloud Shell'in temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır.

Bu sanal makineye, ihtiyaç duyacağınız tüm geliştirme araçları yüklenmiştir. 5 GB boyutunda kalıcı bir ana dizin bulunur ve Google Cloud'da çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki çalışmalarınızın neredeyse tamamını tarayıcıyla yapabilirsiniz.
Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin, proje kimliğinize ayarlandığını görürsünüz.
- Kimliğinizin doğrulandığını onaylamak için Cloud Shell'de şu komutu çalıştırın:
gcloud auth list
Komut çıkışı
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- gcloud komutunun projeniz hakkında bilgi sahibi olduğunu onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud config list project
Komut çıkışı
[core] project = <PROJECT_ID>
Değilse şu komutla ayarlayabilirsiniz:
gcloud config set project <PROJECT_ID>
Komut çıkışı
Updated property [core/project].
3. Trafiği Bölme
Bu örnekte, bir renk ortam değişkenini okuyan ve bu arka plan rengini kullanarak düzeltme adıyla yanıt veren bir işlevin nasıl oluşturulacağı gösterilmektedir.
Bu codelab'de node.js kullanılsa da herhangi bir çalışma zamanını kullanabilirsiniz.
Ortam değişkenlerini ayarlama
Bu codelab boyunca kullanılacak ortam değişkenlerini ayarlayabilirsiniz.
REGION=<YOUR_REGION> PROJECT_ID=<YOUR-PROJECT-ID> BG_COLOR=darkseagreen
İşlevi oluşturma
Öncelikle kaynak kodu için bir dizin oluşturun ve bu dizine gidin.
mkdir revisions-gcf-codelab && 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 kaynak dosyası oluşturun:
const functions = require('@google-cloud/functions-framework');
const BG_COLOR = process.env.BG_COLOR;
const K_REVISION = process.env.K_REVISION;
functions.http('helloWorld', (req, res) => {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end('<html><body style="background-color:' + BG_COLOR + ';"' + '><div><p>' + 'Hello from ' + K_REVISION + ' using color ' + BG_COLOR + '</p></div></body>' + '</html>');
});
Cloud Run işlevini doğrudan Cloud Run'a dağıtmak için aşağıdaki komutu çalıştırın:
gcloud beta run deploy traffic-splitting-gcf \
--source . \
--function helloWorld \
--region $REGION \
--no-allow-unauthenticated \
--set-env-vars BG_COLOR=$BG_COLOR
Cloud Functions 2. nesil olarak dağıtmayı tercih ederseniz aşağıdaki komutu kullanın:
gcloud functions deploy traffic-splitting-gcf \ --gen2 \ --runtime=nodejs20 \ --region=$REGION \ --source=. \ --entry-point=helloWorld \ --trigger-http \ --no-allow-unauthenticated \ --set-env-vars BG_COLOR=$BG_COLOR
İşlevi test etmek için mevcut uç noktayı curl komutuyla çağırarak HTML'de darkseagreen rengini görebilir veya tarayıcınızı kullanarak uç noktaya doğrudan erişerek arka plan rengini görebilirsiniz.
SERVICE_URL=$(gcloud run services describe traffic-splitting-gcf --platform managed --region $REGION --format 'value(status.url)') curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL
Şimdi de bej arka plan rengiyle ikinci bir düzeltme dağıtın.
Cloud Run işlevini doğrudan Cloud Run'a dağıtmak için aşağıdaki komutu çalıştırın:
# update the env var
BG_COLOR=tan
gcloud beta run deploy traffic-splitting-gcf \
--source . \
--function helloWorld \
--region $REGION \
--no-allow-unauthenticated \
--update-env-vars BG_COLOR=$BG_COLOR
Cloud Functions 2. nesil olarak dağıtmayı tercih ederseniz aşağıdaki komutu kullanın:
# update the env var BG_COLOR=tan gcloud functions deploy traffic-splitting-gcf \ --gen2 \ --runtime nodejs20 \ --entry-point helloHttp \ --source . \ --region $REGION \ --trigger-http \ --no-allow-unauthenticated \ --update-env-vars BG_COLOR=$BG_COLOR
Artık uç noktayı kıvırdığınızda açık kahverengi arka plan rengini görürsünüz.
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL
Trafiği 50/50 bölme
Trafiği koyu deniz yeşili ve açık kahverengi revizyonlar arasında bölmek için temel alınan Cloud Run hizmetlerinin revizyon kimliklerini bulmanız gerekir. Şu komutu çalıştırarak düzeltme kimliklerini görebilirsiniz:
gcloud run revisions list --service traffic-splitting-gcf \ --region $REGION --format 'value(REVISION)'
Aşağıdakine benzer sonuçlar görürsünüz.
traffic-splitting-gcf-00003-qoq traffic-splitting-gcf-00002-zag
Aşağıdaki komutu çalıştırarak trafiği iki düzeltme arasında 50/50 bölebilirsiniz:
gcloud run services update-traffic traffic-splitting-gcf \ --region $REGION \ --to-revisions <REVISION1>=50,<REVISION2>=50
Trafiği bölme özelliğini test etme
İşlevi, herkese açık URL'sini ziyaret ederek (curl ile veya doğrudan tarayıcıda) test edebilirsiniz.
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" $SERVICE_URL
Yenilemelerin yarısında koyu deniz yeşili, diğer yarısında ise açık kahverengi rengi görmelisiniz. Ayrıca, çıktıda düzeltme adının listelendiğini de görürsünüz. Örneğin:
<html><body style="background-color:tan;"><div><p>Hello traffic-splitting-gcf-00006-qoq</p></div></body></html>
4. Aşamalı Sunumlar
Bu bölümde, değişiklikleri yeni bir Cloud Functions revizyonuna kademeli olarak nasıl dağıtacağınızı öğreneceksiniz. Aşamalı kullanıma sunma hakkında daha fazla bilgiyi dokümanlarda bulabilirsiniz.
Önceki bölümdeki kodu kullanacak ancak bunu yeni bir Cloud Functions işlevi olarak dağıtacaksınız.
Öncelikle arka plan rengini beige olarak ayarlayın ve işlevi gradual-rollouts-gcf adıyla dağıtın.
Cloud Run işlevini doğrudan Cloud Run'a dağıtmak için aşağıdaki komutu çalıştırın:
# update the env var
BG_COLOR=beige
gcloud beta run deploy gradual-rollouts-gcf \
--source . \
--function helloWorld \
--region $REGION \
--no-allow-unauthenticated \
--update-env-vars BG_COLOR=$BG_COLOR
Cloud Functions 2. nesil olarak dağıtmayı tercih ederseniz aşağıdaki komutu kullanın:
# update the env var BG_COLOR=beige # deploy the function gcloud functions deploy gradual-rollouts-gcf \ --gen2 \ --runtime nodejs20 \ --entry-point helloHttp \ --source . \ --region $REGION \ --trigger-http \ --no-allow-unauthenticated \ --update-env-vars BG_COLOR=$BG_COLOR
Şimdi de arka plan rengi lavanta olan yeni bir düzeltmeyi kademeli olarak kullanıma sunmak istediğimizi varsayalım.
Öncelikle, mevcut bej düzeltmesinin trafiğin% 100'ünü almasını sağlayalım. Bu, gelecekteki Cloud Functions dağıtımlarınızın trafik almasını engeller. Cloud Functions, varsayılan olarak latest işaretli düzeltmeye% 100 trafik ayarlar. Mevcut bej düzeltmenin tüm trafiği alacağını manuel olarak belirtirseniz latest işaretli düzeltme artık% 100 trafik almaz. Belgelere göz atın.
# get the revision name BEIGE_REVISION=$(gcloud run revisions list --service gradual-rollouts-gcf \ --region $REGION --format 'value(REVISION)') # now set 100% traffic to that revision gcloud run services update-traffic gradual-rollouts-gcf --to-revisions=$BEIGE_REVISION=100 --region $REGION
Traffic: 100% gradual-rollouts-gcf2-00001-yox benzeri bir çıkış görürsünüz.
Artık trafik almayacak yeni bir revizyon dağıtabilirsiniz. Kodda herhangi bir değişiklik yapmak yerine bu düzeltme için BG_COLOR ortam değişkenini güncelleyebilirsiniz.
Cloud Run işlevini doğrudan Cloud Run'a dağıtmak için aşağıdaki komutu çalıştırın:
# update color
BG_COLOR=lavender
# deploy the function that will not receive any traffic
gcloud beta run deploy gradual-rollouts-gcf \
--source . \
--function helloWorld \
--region $REGION \
--no-allow-unauthenticated \
--update-env-vars BG_COLOR=$BG_COLOR
Cloud Functions 2. nesil olarak dağıtmayı tercih ederseniz aşağıdaki komutu kullanın:
# update color BG_COLOR=lavender # deploy the function that will not receive any traffic gcloud functions deploy gradual-rollouts-gcf \ --gen2 \ --runtime nodejs20 \ --entry-point helloHttp \ --source . \ --region $REGION \ --trigger-http \ --no-allow-unauthenticated \ --update-env-vars BG_COLOR=$BG_COLOR \ --tag $BG_COLOR
Şimdi SERVICE_URL ortam değişkenini, gradual-rollouts-gcf işlevini kullanacak şekilde güncelleyin.
SERVICE_URL=$(gcloud run services describe gradual-rollouts-gcf --platform managed --region $REGION --format 'value(status.url)')
Artık hizmeti kıvırdığınızda
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL
En son dağıtılan düzeltme lavanta rengi olsa bile bej rengini görürsünüz.
<html><body style="background-color:beige;"><div><p>Hello from gradual-rollouts-gcf-24jan16-staging-2-00001-kop using color beige</p></div></body></html>
%0 trafik sunan bir düzeltmeyi test etme
Revizyonunuzun başarıyla dağıtıldığını ve% 0 trafik sunduğunu doğruladığınızı varsayalım. Durum denetimlerini geçmiş olsa da bu düzeltmenin lavanta rengi arka planı kullandığını doğrulamak istiyorsunuz.
Lavanta rengi düzeltmeyi test etmek için bu düzeltmeye bir etiket uygulayabilirsiniz. Etiketleme, trafiği yayınlamadan yeni düzeltmeyi belirli bir URL'de doğrudan test etmenizi sağlar.
Öncelikle söz konusu düzeltmenin resim URL'sini alın.
IMAGE_URL=$(gcloud run services describe gradual-rollouts-gcf --region $REGION --format 'value(IMAGE)')
Şimdi bu resmi, ilişkili rengiyle etiketleyin.
gcloud run deploy gradual-rollouts-gcf --image $IMAGE_URL --no-traffic --tag $BG_COLOR --region $REGION --no-allow-unauthenticated
Aşağıdakine benzer bir çıkış görürsünüz:
The revision can be reached directly at https://lavender---gradual-rollouts-gcf-k6msmyp47q-lz.a.run.app
Artık bu düzeltmeyi doğrudan kıvırabilirsiniz
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET <DIRECT_REVISION_URL>
ve sonuçlarda lavanta rengini görürsünüz:
<html><body style="background-color:lavender;"><div><p>Hello from gradual-rollouts-gcf-24jan16-00003-xik using color lavender</p></div></body></html>
Trafiği kademeli olarak artırma
Artık lavanta revizyonuna trafik göndermeye başlayabilirsiniz. Aşağıdaki örnekte, trafiğin% 1'inin lavantaya nasıl gönderileceği gösterilmektedir.
gcloud run services update-traffic gradual-rollouts-gcf --region $REGION --to-tags lavender=1
Trafiğin% 50'sini lavantaya göndermek için aynı komutu kullanabilir ancak% 50'yi belirtebilirsiniz.
gcloud run services update-traffic gradual-rollouts-gcf --region $REGION --to-tags lavender=50
Her düzeltmenin ne kadar trafik aldığını gösteren bir liste görürsünüz.
Traffic:
50% gradual-rollouts-gcf-00001-hos
50% gradual-rollouts-gcf-00004-mum
lavender: https://lavender---gradual-rollouts-gcf-k6msmyp47q-uc.a.run.app
Lavanta rengini tamamen kullanıma sunmaya hazır olduğunuzda bej rengini lavanta rengiyle değiştirmek için lavanta rengini% 100 olarak ayarlayabilirsiniz.
gcloud run services update-traffic gradual-rollouts-gcf --region $REGION --to-tags lavender=100
Artık kademeli kullanıma sunma GCF işlevi hizmeti URL'sini ziyaret ettiğinizde veya curl komutuyla çağırdığınızda
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL
yalnızca lavanta rengini görürsünüz.
<html><body style="background-color:lavender;"><div><p>Hello gradual-rollouts-gcf-00004-mum</p></div></body></html>
5. Geri alma sayısı
Erken kullanıcı deneyimi geri bildirimlerinin müşterilerin lavanta yerine beji tercih ettiğini gösterdiğini ve beje geri dönmeniz gerektiğini varsayalım.
Bu komutu çalıştırarak önceki düzeltmeye (bej) geri dönebilirsiniz.
gcloud run services update-traffic gradual-rollouts-gcf --region $REGION --to-revisions $BEIGE_REVISION=100
Artık curl komutunu kullandığınızda veya işlev URL'si uç noktasını ziyaret ettiğinizde
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL
bej rengi döndürülür.
<html><body style="background-color:beige;"><div><p>Hello gradual-rollouts-gcf-00001-hos</p></div></body></html>
Geri alma işlemleri hakkında daha fazla bilgiyi dokümanlarda bulabilirsiniz.
6. Tebrikler!
Tebrikler, codelab'i tamamladınız.
Yeni sürüme geçiş, geri alma ve trafik taşıma ile ilgili dokümanları incelemenizi öneririz.
İşlediğimiz konular
- Cloud Run işlevi için trafiği iki veya daha fazla revizyon arasında bölme
- Yeni bir düzeltmeyi kademeli olarak kullanıma sunma
- Önceki düzeltmeye geri dönme
7. Temizleme
Yanlışlıkla ücretlendirilmemek için (örneğin, bu Cloud Run işlevi ücretsiz katmandaki aylık Cloud Functions işlevi çağırma tahsisinizden daha fazla sayıda çağrılırsa) Cloud Run işlevini veya 2. adımda oluşturduğunuz projeyi silebilirsiniz.
Cloud Run'a dağıtılan bir Cloud Run işlevini silmek için Cloud Console'da https://console.cloud.google.com/functions/ adresindeki Cloud Run'a gidin ve bu codelab'de oluşturduğunuz işlevleri silin.
2. nesil işlevler olarak dağıtılan Cloud Run işlevlerini silmek için Cloud Console'da https://console.cloud.google.com/functions/ adresine giderek Cloud Functions'ı açın ve bu codelab'de oluşturduğunuz işlevleri 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.