Dokumen ini menjelaskan cara mengonfigurasi dan menggunakan deployment canary untuk men-deploy aplikasi Anda ke Cloud Run (khusus layanan, bukan tugas) menggunakan Cloud Deploy.
Deployment canary adalah peluncuran progresif versi baru aplikasi Anda, dengan secara bertahap meningkatkan persentase traffic yang dikirim ke versi baru, sambil memantau performa aplikasi. Hal ini membantu Anda menemukan potensi masalah sejak dini dan meminimalkan dampaknya terhadap pengguna.
Cara kerja deployment canary untuk Cloud Run
Saat Anda men-deploy ke Cloud Run menggunakan strategi deployment canary, Cloud Deploy akan mengupdate layanan yang ada dengan revisi baru. Revisi baru menerima persentase traffic yang ditentukan, dan revisi lama terus menerima sisanya. Anda secara bertahap meningkatkan pembagian traffic ke revisi baru dari waktu ke waktu.
Dengan Cloud Deploy, Anda dapat mengonfigurasi deployment canary ke Cloud Run dalam satu tahap atau beberapa tahap.
Petunjuk di sini hanya mencakup hal-hal yang khusus untuk konfigurasi canary. Dokumen Men-deploy layanan atau tugas Cloud Run berisi petunjuk umum untuk mengonfigurasi dan mengeksekusi pipeline deployment Anda.
Pastikan Anda memiliki izin yang diperlukan
Selain izin Identity and Access Management lainnya yang Anda perlukan untuk menggunakan Cloud Deploy, Anda memerlukan izin berikut untuk melakukan tindakan tambahan yang mungkin diperlukan untuk deployment canary:
clouddeploy.rollouts.advance
clouddeploy.rollouts.ignoreJob
clouddeploy.rollouts.cancel
clouddeploy.rollouts.retryJob
clouddeploy.jobRuns.get
clouddeploy.jobRuns.list
clouddeploy.jobRuns.terminate
Lihat Peran dan izin IAM untuk mengetahui informasi selengkapnya tentang peran yang tersedia yang mencakup izin ini.
Siapkan skaffold.yaml
Anda
File skaffold.yaml
Anda menentukan cara definisi layanan Cloud Run Anda dirender dan di-deploy. Untuk deployment canary ke Cloud Run, pastikan deployment tersebut mengarah dengan benar ke file definisi layanan Anda dan menentukan artefak build yang diperlukan (seperti image container). Tidak ada konfigurasi khusus canary yang diperlukan dalam skaffold.yaml
itu sendiri selain yang diperlukan untuk deployment standar. Anda dapat menggunakan profil Skaffold untuk mengelola berbagai variasi definisi layanan untuk fase canary kustom.
Siapkan definisi layanan Anda
File definisi layanan Cloud Run normal Anda sudah cukup, tetapi
tanpa stanza traffic
. Cloud Deploy mengelola pembagian
traffic untuk Anda antara revisi terakhir yang berhasil dan revisi baru.
Contoh service.yaml
(tanpa stanza traffic
):
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: my-cloudrun-service
spec:
template:
spec:
containers:
- image: gcr.io/my-project/my-cloudrun-app
ports:
- containerPort: 8080
Mengonfigurasi canary otomatis
Konfigurasi canary otomatis langsung dalam definisi pipeline pengiriman untuk tahap Cloud Run tertentu. Cloud Deploy secara otomatis menginstruksikan Cloud Run untuk membagi traffic antara revisi stabil terakhir dan revisi baru sesuai dengan persentase yang ditentukan.
serialPipeline:
stages:
- targetId: prod
profiles: []
strategy:
canary:
runtimeConfig:
cloudRun:
automaticTrafficControl: true
canaryDeployment:
percentages: [PERCENTAGES]
verify: true|false
predeploy:
actions: "PREDEPLOY_ACTION"
postdeploy:
actions: "POSTDEPLOY_ACTION"
Dalam konfigurasi ini:
PERCENTAGES adalah daftar nilai persentase yang dipisahkan koma yang merepresentasikan peningkatan canary Anda, misalnya
[25, 50, 75]
. Perhatikan bahwa hal ini tidak mencakup100
, karena deployment 100% diasumsikan dalam canary, dan ditangani oleh fasestable
.Anda dapat mengaktifkan verifikasi deployment (
verify: true
). Jika melakukannya, tugasverify
akan ditambahkan ke setiap fase canary.PREDEPLOY_ACTION
Sama dengan ACTION_NAME yang Anda gunakan di
skaffold.yaml
untuk menentukan tindakan kustom yang ingin Anda jalankan sebelum men-deploy.POSTDEPLOY_ACTION
Sama dengan ACTION_NAME yang Anda gunakan di
skaffold.yaml
untuk menentukan tindakan kustom yang ingin Anda jalankan setelah men-deploy.
Mengonfigurasi canary otomatis kustom
Hal ini menggabungkan definisi fase kustom (nama, persentase, profil, verifikasi, hook) dengan pengelolaan traffic otomatis Cloud Deploy untuk Cloud Run. Anda menentukan fase, tetapi Cloud Deploy menangani pengalihan traffic ke Cloud Run berdasarkan persentase.
Untuk mengonfigurasi ini, sertakan setelan runtimeConfig.cloudRun.automaticTrafficControl: true
dan bagian customCanaryDeployment
(yang menentukan phaseConfigs
) dalam blok strategy.canary
. Cloud Deploy akan menggunakan profil Skaffold yang ditentukan untuk merender definisi layanan (yang tetap tidak boleh memiliki stanza traffic
), tetapi akan mengelola traffic secara otomatis sesuai dengan persentase fase.
serialPipeline:
stages:
- targetId: cloudrun-prod
profiles: []
strategy:
canary:
# Include runtimeConfig for automatic traffic management
runtimeConfig:
cloudRun:
automaticTrafficControl: true
# Include customCanaryDeployment for phase customization
customCanaryDeployment:
phaseConfigs:
- phaseId: "warmup-cr"
percentage: 10
profiles: ["base-config"] # Profile rendering service def (no traffic stanza)
verify: true
- phaseId: "scaling-cr"
percentage: 50
profiles: ["base-config"] # Can use the same profile
verify: true
- phaseId: "stable"
percentage: 100
profiles: ["base-config"]
verify: true
Jalankan canary Cloud Run
Daftarkan Pipeline dan Target: Terapkan file konfigurasi target Cloud Run dan pipeline pengiriman Anda.
gcloud deploy apply --file=delivery-pipeline.yaml --region=REGION gcloud deploy apply --file=cloudrun-targets.yaml --region=REGION
Pipeline pengiriman mencakup konfigurasi canary otomatis atau kustom, untuk runtime yang Anda pilih.
Buat Rilis: Mulai deployment, dengan memberikan nama image.
gcloud deploy releases create RELEASE_NAME \ --delivery-pipeline=PIPELINE_NAME \ --region=REGION
Pipeline pengiriman yang diidentifikasi oleh
PIPELINE_NAME
berisi konfigurasi canary otomatis atau kustom yang dijelaskan dalam dokumen ini.Memajukan canary:
gcloud CLI
gcloud deploy rollouts advance ROLLOUT_NAME \ --release=RELEASE_NAME \ --delivery-pipeline=PIPELINE_NAME \ --region=REGION
Dengan:
ROLLOUT_NAME
adalah nama peluncuran saat ini yang Anda lanjutkan ke fase berikutnya.RELEASE_NAME
adalah nama rilis yang menjadi bagian dari peluncuran ini.PIPELINE_NAME
adalah nama pipeline pengiriman yang Anda gunakan untuk mengelola deployment rilis ini.REGION
adalah nama region tempat rilis dibuat, misalnyaus-central1
. Wajib diisi.Lihat referensi Google Cloud SDK untuk mengetahui informasi selengkapnya tentang perintah
gcloud deploy rollouts advance
.Google Cloud console
Klik pipeline Anda yang ditampilkan dalam daftar pipeline pengiriman.
Halaman Detail pipeline pengiriman menampilkan representasi grafis progres pipeline pengiriman Anda.
Di tab Rollouts, di bagian Delivery pipeline details, klik nama peluncuran Anda.
Halaman detail peluncuran akan ditampilkan untuk peluncuran tersebut.
Perhatikan bahwa dalam contoh ini, peluncuran memiliki fase
canary-50
dan fasestable
. Peluncuran Anda mungkin memiliki lebih banyak fase atau fase yang berbeda.Klik Maju peluncuran.
Peluncuran dilanjutkan ke fase berikutnya.
Fase yang dilewati
Jika Anda men-deploy canary dan aplikasi Anda belum di-deploy ke runtime tersebut, Cloud Deploy akan melewati fase canary dan menjalankan fase stabil. Lihat Melewati fase untuk pertama kalinya untuk mengetahui penyebabnya.
Langkah berikutnya
Cari tahu cara mengelola siklus proses peluncuran canary Anda.
Pelajari lebih lanjut penyebaran paralel.
Pelajari lebih lanjut strategi deployment Cloud Deploy.
Pelajari lebih lanjut tentang Cloud Run