1. Giriş
Genel Bakış
Cloud Run işlevleri, hangi düzeltmelerin trafik alması gerektiğini ve bir düzeltme tarafından alınan 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 gelen trafiği yönetmek için düzeltmeleri nasıl kullanacağınız gösterilmektedir. Düzeltmeler hakkında daha fazla bilgiyi Cloud Run belgeleri'nde bulabilirsiniz.
Neler öğreneceksiniz?
- Cloud Run işlevi için trafiği iki veya daha fazla düzeltme arasında bölme
- Yeni bir düzeltmeyi kademeli olarak kullanıma sunma
- Önceki bir düzeltmeye geri dönme
2. Kurulum ve Gereksinimler
Ön koşullar
- Cloud Console'a giriş yapmış olmanız gerekir.
- Daha önce Cloud Run işlevi dağıttıysanız Ö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 Cloud Shell'in ne olduğunu açıklayan bir ara ekran gösterilir. Ara ekran gösterildiyse Devam'ı tıklayın.
Temel hazırlık ve Cloud Shell'e bağlanmak yalnızca birkaç dakika sürer.
Bu sanal makinede, ihtiyaç duyulan tüm geliştirme araçları yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışır. Bu sayede ağ performansını ve kimlik doğrulamayı büyük ölçüde iyileştirir. Bu kod laboratuvarındaki çalışmanızın tamamı olmasa da büyük bir kısmı tarayıcıda yapılabilir.
Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin proje kimliğinize ayarlandığını görürsünüz.
- Kimlik doğrulamanızın tamamlandığını onaylamak için Cloud Shell'de aşağıdaki 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 projenizi bildiğini 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ğişiklik yapılmadıysa aşağıdaki 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ını içeren bir yanıt veren bir işlevin nasıl oluşturulacağı gösterilmektedir.
Bu kod laboratuvarında node.js kullanılsa da istediğiniz çalışma zamanını kullanabilirsiniz.
Ortam Değişkenlerini Ayarlama
Bu codelab boyunca kullanılacak ortam değişkenleri ayarlayabilirsiniz.
REGION=<YOUR_REGION> PROJECT_ID=<YOUR-PROJECT-ID> BG_COLOR=darkseagreen
İşlevi oluşturma
Öncelikle kaynak kod için bir dizin oluşturun ve cd komutunu kullanarak 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" } }
Sonra, 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>'); });
Bir 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
2. nesil Cloud Functions işlevi olarak dağıtım yapmayı tercih ederseniz şu 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ı html'de darkseagreen rengini görmek üzere curl'leyebilir veya tarayıcınıza giderek uç noktayı doğrudan ziyaret ederek 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, koyu arka plan rengine sahip ikinci bir düzeltme dağıtın.
Bir 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
2. nesil Cloud Functions olarak dağıtmayı tercih ediyorsanız 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ç noktasını kıvırdığınızda soluk 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'ye bölün
Trafiği koyu deniz yeşili ve ten rengi düzeltmeler arasında bölmek için temel Cloud Run hizmetlerinin düzeltme 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 iki düzeltme arasında trafiği 50/50 oranında bölebilirsiniz:
gcloud run services update-traffic traffic-splitting-gcf \ --region $REGION \ --to-revisions <REVISION1>=50,<REVISION2>=50
Trafiğin bölünmesini test edin
İş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
Zamanların yarısında koyu deniz yeşili düzeltmeyi, diğer yarısında ise ten rengi düzeltmeyi görürsünüz. Çıktıda düzeltme adını da görürsünüz (ör.
<html><body style="background-color:tan;"><div><p>Hello traffic-splitting-gcf-00006-qoq</p></div></body></html>
4. Kademeli Kullanıma Sunma
Bu bölümde, değişiklikleri yeni bir Cloud Functions revizyonuna kademeli olarak nasıl kullanıma sunacağınızı öğreneceksiniz. Kademeli kullanıma sunma hakkında daha fazla bilgiyi dokümanlar bölümünde bulabilirsiniz.
Önceki bölümde kullanılanla aynı kodu kullanacaksınız ancak bu kodu yeni bir Cloud Functions işlevi olarak dağıtacaksınız.
Öncelikle, arka plan rengini beige
olarak ayarlayın ve gradual-rollouts-gcf
adlı işlevi dağıtın.
Bir 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
2. nesil Cloud Functions işlevi olarak dağıtım yapmayı tercih ederseniz şu 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 mor arka plan rengiyle yeni bir düzeltmeyi kademeli olarak kullanıma sunmak istediğinizi düşünelim.
Öncelikle, mevcut düzeltmeyi %100 trafik alacak şekilde bej olarak ayarlayalım. Bu işlem, gelecekteki Cloud Functions dağıtımlarınızın trafik almasını önler. Cloud Functions varsayılan olarak latest
işaretli düzeltmeye %100 trafik ayarlar. Mevcut bej düzeltmenin tüm trafiği alması gerektiğini manuel olarak belirterek 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
Şuna benzer bir çıkış görürsünüz: Traffic: 100% gradual-rollouts-gcf2-00001-yox
Artık trafik almayan yeni bir düzeltme yayınlayabilirsiniz. Kod değişiklikleri yapmak yerine, bu düzeltme için BG_COLOR ortam değişkenini güncelleyebilirsiniz.
Bir 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
2. nesil Cloud Functions olarak dağıtmayı tercih ediyorsanız 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)')
Şimdi de hizmeti curl'ye
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL
en son kullanılan düzeltme lavanta olsa da bej rengi 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
Düzeltmenizin başarıyla dağıtıldığını ve %0 trafik yayınladığını doğruladığınızı varsayalım. Durum denetimlerini geçmiş olsa da bu düzeltmenin lavanta arka plan rengini kullandığını doğrulamak istiyorsunuz.
Lavanta düzeltmesini test etmek için bu düzeltmeye etiket uygulayabilirsiniz. Etiketleme, yeni düzeltmeyi trafik sunmadan belirli bir URL'de doğrudan test etmenize olanak tanır.
Ö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)')
Ardından bu resmi ilişkili rengi kullanarak etiketleyin.
gcloud run deploy gradual-rollouts-gcf --image $IMAGE_URL --no-traffic --tag $BG_COLOR --region $REGION --no-allow-unauthenticated
Şuna benzer bir çıkış alı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 örebilirsiniz
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET <DIRECT_REVISION_URL>
ve sonuçlardaki eflatun rengini görebiliriz:
<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 kullanabilirsiniz ancak bunun yerine %50'yi belirtin.
gcloud run services update-traffic gradual-rollouts-gcf --region $REGION --to-tags lavender=50
Her bir düzeltmenin ne kadar trafik aldığını gösteren bir liste göreceksiniz.
Traffic: 50% gradual-rollouts-gcf-00001-hos 50% gradual-rollouts-gcf-00004-mum lavender: https://lavender---gradual-rollouts-gcf-k6msmyp47q-uc.a.run.app
Lavantayı tamamen kullanıma sunmaya hazır olduğunuzda bej yerine lavantayı% 100 olarak ayarlayabilirsiniz.
gcloud run services update-traffic gradual-rollouts-gcf --region $REGION --to-tags lavender=100
ve şimdi gradual-rollouts-gcf işlev hizmet URL'sini ziyaret ettiğinizde veya curl işlemini yaptığınızda
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL
yalnızca lavanta 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ı
Müşterilerin lavanta yerine bej rengi tercih ettiğini belirten erken kullanıcı deneyimi geri bildirimleri geldiğ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
ve artık curl'ünüz olduğunda veya işlev URL'sinin uç noktasını ziyaret ettiğinizde
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL
renk bej olacaktı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!
Codelab'i tamamladığınız için tebrikler.
Yayınlama, geri alma ve trafik taşıma ile ilgili dokümanları incelemenizi öneririz.
İşlediklerimiz
- Cloud Run işlevi için trafiği iki veya daha fazla düzeltme arasında bölme
- Yeni bir düzeltmeyi kademeli olarak kullanıma sunma
- Önceki bir düzeltmeye geri dönme
7. Temizleme
Yanlışlıkla yapılan ücretleri önlemek için (örneğin, bu Cloud Run işlevi yanlışlıkla ücretsiz katmandaki aylık Cloud Functions işlevi çağırma alanınızdan daha fazla kez çağrıldıysa) Cloud Run işlevini silebilir veya 2. adımda oluşturduğunuz projeyi silebilirsiniz.
Cloud Run'a dağıtılan bir Cloud Run işlevini silmek için https://console.cloud.google.com/functions/ adresindeki Cloud Console'da Cloud Run'a gidin ve bu kod laboratuvarında oluşturduğunuz işlevleri silin.
2. nesil işlev olarak dağıtılan Cloud Run işlevlerini silmek için https://console.cloud.google.com/functions/ adresindeki Cloud Console'da Cloud Functions'e gidin ve bu kod laboratuvarında oluşturduğunuz işlevleri 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.