Bu codelab hakkında
1. Giriş
Genel Bakış
Cloud Run düzeltmeleri, hangi düzeltmelerin trafik alması gerektiğini ve her düzeltmeye gönderilecek trafik yüzdesini belirtmenize olanak tanır. Düzeltmeler, önceki bir sürüme geri dönmenize, bir sürümü kademeli olarak kullanıma sunmanıza ve trafiği birden fazla sürüm arasında bölmenize olanak tanır.
Bu codelab'lerde, Cloud Run hizmetinize 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 dokümanlarında bulabilirsiniz.
Neler öğreneceksiniz?
- Cloud Run hizmeti için trafiği iki veya daha fazla revizyon 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 bir Cloud Run hizmeti dağıttıysanız. Örneğin, başlamak için Cloud Run hizmeti dağıtma adımlarını uygulayabilirsiniz.
Ortam Değişkenlerini Ayarlama
Bu codelab boyunca kullanılacak ortam değişkenlerini ayarlayabilirsiniz.
PROJECT_ID=YOUR-PROJECT-ID
REGION=YOUR_REGION
BG_COLOR=darkseagreen
SERVICE_NAME=traffic-revisions-color
AR_REPO=traffic-revisions-color-repo
Hizmet için bir Artifact Registry deposu oluşturun
gcloud artifacts repositories create $AR_REPO \
--repository-format=docker \
--location=$REGION \
--description="codelab for finetuning using CR jobs" \
--project=$PROJECT_ID
3. Trafiği Bölme
Bu örnekte, bir renk ortam değişkenini okuyan ve bu arka plan rengini kullanarak düzeltme adını döndüren bir Cloud Run hizmetinin nasıl oluşturulacağı gösterilmektedir.
Bu kod laboratuvarında Python kullanılsa da istediğiniz ç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 SERVICE_NAME=traffic-revisions-color AR_REPO=traffic-revisions-color-repo
Hizmeti oluşturun
Öncelikle kaynak kod için bir dizin oluşturun ve cd komutunu kullanarak bu dizine gidin.
mkdir traffic-revisions-codelab && cd $_
Ardından, aşağıdaki içeriği içeren bir main.py
dosyası oluşturun:
import os from flask import Flask, render_template_string app = Flask(__name__) TEMPLATE = """ <!doctype html> <html lang="en"> <head> <title>Cloud Run Traffic Revisions</title> <style> body { display: flex; justify-content: center; align-items: center; min-height: 50vh; background-color: {{ bg_color }}; /* Set by environment variable */ font-family: sans-serif; } .content { background-color: rgba(255, 255, 255, 0.8); /* Semi-transparent white background */ padding: 2em; border-radius: 8px; text-align: center; box-shadow: 0 4px 8px rgba(0,0,0,0.1); } </style> </head> <body> <div class="content"> <p>background color: <strong>{{ color_name }}</strong></p> </div> </body> </html> """ @app.route('/') def main(): """Serves the main page with a background color from the ENV.""" # Get the color from the 'BG_COLOR' environment variable. # Default to 'white' if the variable is not set. color = os.environ.get('BG_COLOR', 'white').lower() return render_template_string(TEMPLATE, bg_color=color, color_name=color) if __name__ == '__main__': port = int(os.environ.get('PORT', 8080)) app.run(debug=True, host='0.0.0.0', port=port)
Ardından, aşağıdaki içeriği içeren bir requirements.txt
dosyası oluşturun:
Flask>=2.0.0 gunicorn>=20.0.0
Son olarak Dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8080
ENV PYTHONPATH /app
CMD ["gunicorn", "--bind", "0.0.0.0:8080", "main:app"]
Cloud Build'i kullanarak Buildpacks'i kullanarak Artifact Registry'de görüntü oluşturun:
gcloud builds submit \
--tag $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$SERVICE_NAME
İlk revizyonu koyu deniz yeşili renkle Cloud Run'a dağıtın:
gcloud run deploy $SERVICE_NAME \
--image $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$SERVICE_NAME:latest \
--region $REGION \
--allow-unauthenticated \
--set-env-vars BG_COLOR=darkseagreen
Hizmeti test etmek için uç noktayı doğrudan web tarayıcınızda açarak arka plan rengini koyu deniz yeşili olarak görebilirsiniz.
Şimdi, açık kahverengi arka plan rengine sahip ikinci bir düzeltme yayınlayın.
# update the env var BG_COLOR=tan gcloud run deploy $SERVICE_NAME \ --image $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$SERVICE_NAME:latest \ --region $REGION \ --set-env-vars BG_COLOR=tan
Artık web sitesini yenilediğinizde ten rengi arka plan rengini görürsünüz.
Trafiği 50-50 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. Düzeltme kimliklerini görmek için şu komutu çalıştırın:
gcloud run revisions list --service $SERVICE_NAME \ --region $REGION --format 'value(REVISION)'
Aşağıdakine benzer sonuçlar görürsünüz.
traffic-revisions-color-00003-qoq traffic-revisions-color-00002-zag
Düzeltmelerinizle birlikte aşağıdaki komutu çalıştırarak trafiği iki düzeltme arasında eşit olarak bölebilirsiniz:
gcloud run services update-traffic $SERVICE_NAME \ --region $REGION \ --to-revisions YOUR_REVISION_1=50,YOUR_REVISION_2=50
Trafiği bölme özelliğini test etme
Tarayıcınızdaki sayfayı yenileyerek hizmeti test edebilirsiniz.
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-revisions-color-00003-qoq</p></div></body></html>
4. Kademeli kullanıma sunma
Bu bölümde, yeni bir Cloud Service revizyonunda değişiklikleri nasıl kademeli olarak 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ümdekiyle aynı kodu kullanacak ancak yeni bir Cloud Run hizmeti olarak dağıtacaksınız.
Öncelikle arka plan rengini beige
olarak ayarlayın ve işlevi gradual-rollouts-colors
adıyla 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-colors \ --image $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$SERVICE_NAME:latest \ --region $REGION \ --allow-unauthenticated \ --update-env-vars BG_COLOR=$BG_COLOR
Şimdi, arka plan rengi leylak olan yeni bir düzeltmeyi kademeli olarak kullanıma sunmak istediğimizi varsayalım.
Öncelikle, mevcut düzeltmeyi% 100 trafik alacak şekilde ayarlayalım. Bu sayede, gelecekteki düzeltmeleriniz trafik almaz. Cloud Run 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-colors \ --region $REGION --format 'value(REVISION)') # now set 100% traffic to that revision gcloud run services update-traffic gradual-rollouts-colors \ --to-revisions=$BEIGE_REVISION=100 \ --region $REGION
Traffic: 100% radual-rollouts-colors-00001-yox
Artık trafik almayan yeni bir düzeltme yayınlayabilirsiniz. Kod değişikliği 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-colors \ --image $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$SERVICE_NAME:latest \ --region $REGION \ --allow-unauthenticated \ --update-env-vars BG_COLOR=$BG_COLOR
Artık tarayıcınızda web sitesini ziyaret ettiğinizde, en son dağıtılan düzeltme lavanta olsa bile bej rengini görürsünüz.
%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, trafiği yayınlamadan yeni düzeltmeyi belirli bir URL'de doğrudan test etmenizi sağlar.
Öncelikle, en son düzeltmenin resim URL'sini (lavanta) alın.
IMAGE_URL_LAVENDER=$(gcloud run services describe gradual-rollouts-colors --region $REGION --format 'value(IMAGE)')
Ardından bu resmi ilişkili rengi ile etiketleyin.
gcloud run deploy gradual-rollouts-colors --image $IMAGE_URL_LAVENDER --no-traffic --tag $BG_COLOR --region $REGION
Aşağıdakine benzer bir çıkış görürsünüz:
The revision can be reached directly at https://lavender---gradual-rollouts-colors-<hash>-<region>.a.run.app
Artık söz konusu düzeltme URL'sini ziyaret ettiğinizde lavanta rengini görürsünüz.
Trafiği kademeli olarak artırma
Artık lavanta düzeltmesine trafik göndermeye başlayabilirsiniz. Aşağıdaki örnekte, trafiğin% 1'inin lavender adresine nasıl gönderileceği gösterilmektedir.
gcloud run services update-traffic gradual-rollouts-colors --region $REGION --to-tags lavender=1
Trafiğin% 50'sini lavantaya göndermek için aynı komutu kullanabilirsiniz ancak bunun yerine% 50'yi belirtebilirsiniz.
gcloud run services update-traffic gradual-rollouts-colors --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-colors-00001-hos 50% gradual-rollouts-colors-00004-mum lavender: https://lavender---gradual-rollouts-colors-<hash>-<region>.a.run.app
Lavanta rengini tam olarak kullanıma sunmaya hazır olduğunuzda, bejin yerini almak için lavanta rengini% 100 olarak ayarlayabilirsiniz.
gcloud run services update-traffic gradual-rollouts-colors --region $REGION --to-tags lavender=100
Artık web sitesini ziyaret ettiğinizde yalnızca lavanta göreceksiniz.
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.
Aşağıdaki komutu çalıştırarak önceki düzeltmeye (bej) geri dönebilirsiniz:
gcloud run services update-traffic gradual-rollouts-colors --region $REGION --to-revisions $BEIGE_REVISION=100
Artık web sitesini ziyaret ettiğinizde arka plan rengi olarak bej rengini görürsünüz.
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.
Ele aldığımız konular
- Cloud Run hizmeti için trafiği iki veya daha fazla revizyon arasında bölme
- Yeni bir düzeltmeyi kademeli olarak kullanıma sunma
- Önceki bir düzeltmeye geri dönme
7. Temizleme
İstenmeyen ödemelerden kaçınmak için (örneğin, bu Cloud Run işlevi yanlışlıkla ücretsiz kademede aylık Cloud Run çağrısı kotanızdan daha fazla çağrılırsa) Cloud Run hizmetini veya 2. adımda oluşturduğunuz projeyi silebilirsiniz.
Bir Cloud Run hizmetini silmek için https://console.cloud.google.com/run/ adresindeki Cloud Console'da Cloud Run'a gidin ve bu kod laboratuvarında oluşturduğunuz işlevleri silin.
Projenin tamamını silmeyi seçerseniz https://console.cloud.google.com/cloud-resource-manager adresine gidip 2. adımda oluşturduğunuz projeyi seçin ve Sil'i tıklayın. 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.