Dengan Cloud Run, Anda dapat menentukan revisi mana yang akan menerima traffic dan menentukan persentase traffic yang diterima oleh revisi. Dengan fitur ini, Anda dapat melakukan rollback ke revisi sebelumnya, men-deploy revisi secara bertahap, dan membagi traffic antara beberapa revisi. Halaman ini menjelaskan cara menggunakan fitur ini untuk mengelola traffic ke revisi Cloud Run Anda.
Perhatikan bahwa penyesuaian pemilihan rute traffic tidak dapat terjadi secara instan. Jika Anda mengubah traffic untuk revisi, semua permintaan yang sedang diproses akan tetap berlanjut hingga selesai. Permintaan yang sedang berlangsung tidak akan dihapus dan dapat dialihkan ke revisi baru atau revisi sebelumnya selama periode transisi.
Pemisahan traffic dan afinitas sesi
Jika Anda membagi traffic antara beberapa revisi dengan afinitas sesi yang diaktifkan, lihat Afinitas sesi dan pembagian traffic untuk mengetahui detail tentang pengaruh afinitas sesi terhadap pemisahan traffic.
Siklus proses pemisahan traffic
Jika Anda membagi traffic di antara beberapa revisi atau menetapkan traffic ke revisi sebelumnya, semua deployment berikutnya akan menggunakan pola pemisahan traffic tersebut ke depannya. Untuk kembali hanya menggunakan revisi terbaru tanpa pemisahan traffic, kirim semua traffic ke revisi terbaru.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna mengelola layanan dan revisi Cloud Run, minta administrator untuk memberi Anda peran IAM berikut:
-
Cloud Run Developer (
roles/run.developer
) di layanan Cloud Run Anda -
Service Account User (
roles/iam.serviceAccountUser
) di identitas layanan
Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat peran IAM Cloud Run dan izin IAM Cloud Run. Jika layanan Cloud Run Anda berinteraksi dengan Google Cloud API, seperti Library Klien Cloud, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat izin deployment dan mengelola akses.
Roll back ke revisi sebelumnya
Untuk melakukan roll back ke revisi sebelumnya:
Konsol
Di konsol Google Cloud, buka Cloud Run:
Temukan layanan dalam daftar layanan, lalu klik layanan tersebut.
Klik tab Revisi untuk menampilkan daftar revisi terbaru untuk layanan tersebut.
Dalam daftar revisi, klik ikon elipsis di sebelah kanan revisi yang sedang Anda roll back:
Klik Kelola Traffic untuk menampilkan formulir kelola traffic:
- Pilih revisi sebelumnya yang ingin Anda roll back dalam daftar drop-down.
- Setel persentase traffic pada revisi sebelumnya menjadi 100.
- Setel persentase revisi yang disajikan saat ini menjadi 0.
- Klik Simpan.
gcloud
Gunakan perintah berikut:
gcloud run services update-traffic SERVICE --to-revisions REVISION=100
- Ganti SERVICE dengan nama layanan.
- Ganti REVISION dengan nama revisi yang sedang Anda roll back.
YAML
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Di bawah atribut
spec
, temukan dan perbarui atributtraffic
menjadi seperti berikut:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION percent: 100
Ganti
- REVISION dengan nama revisi yang sedang Anda roll back.
Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:
gcloud run services replace service.yaml
Tunggu hingga pembaruan selesai: Anda akan melihat pesan bahwa revisi yang Anda roll back telah di-deploy dan sedang menyalurkan traffic
0
persen.
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Tambahkan kode berikut ke file .tf
Anda:
Peluncuran revisi secara bertahap
Untuk meluncurkan revisi baru secara bertahap:
Konsol
Di konsol Google Cloud, buka Cloud Run:
Pilih layanan dalam daftar layanan.
Klik Deploy Revisi Baru.
Isi formulir deploy sesuai kebutuhan, tetapi pastikan kotak centangnya berlabel Segera sajikan revisi ini TIDAK DIPERIKSA.
Klik Deploy.
Klik Kelola Traffic.
Revisi baru dicantumkan, tetapi dengan setelan persentase 0: Saat ini tidak menyalurkan traffic dari mana pun. Di dalam formulir:
- Atur persentase yang diinginkan, misalnya, 5. Perhatikan bahwa persentase versi saat ini yang disajikan akan otomatis dikurangi dengan jumlah yang sama.
- Klik Simpan.
- Ulangi langkah-langkah Kelola Traffic ini tetapi dengan persentase yang diubah, meningkatkan persentase sesuai yang diperlukan untuk revisi baru. Anda tidak perlu men-deploy ulang untuk mengubah persentase traffic.
gcloud
Deploy revisi yang ingin Anda luncurkan secara bertahap, dengan menyetelnya terlebih dahulu agar tidak menerima traffic:
gcloud run deploy --image IMAGE --no-traffic
Ganti IMAGE dengan gambar yang sedang Anda deploy.
Tentukan persentase traffic yang ingin ditangani oleh revisi baru, misalnya, 5 persen:
gcloud run services update-traffic SERVICE --to-revisions REVISION=PERCENTAGE
- Ganti SERVICE dengan nama layanan.
- Ganti REVISION dengan nama revisi yang Anda luncurkan secara bertahap. Untuk menentukan revisi terbaru, Anda dapat menggunakan
LATEST
, misalnya,LATEST=5
. - Ganti PERCENTAGE dengan persentase traffic yang ingin Anda
kirim ke revisi baru, misalnya,
5
untuk mengirim 5% ke traffic.
Setelah performa revisi memuaskan, ulangi langkah sebelumnya
update-traffic
, tetapi tingkatkan nilai persentase sesuai keinginan.
YAML
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Buat perubahan konfigurasi yang diinginkan pada layanan, lalu tentukan nama revisi yang Anda inginkan untuk revisi baru:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: ... name: REVISION-NAME
Ganti
- REVISION-NAME dengan nama yang Anda inginkan untuk revisi baru.
Di bawah atribut
spec
, temukan dan perbarui atributtraffic
sehingga revisi baru hanya menyalurkan traffic dalam jumlah kecil:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION-NEW percent: PERCENT-NEW - revisionName: REVISION-FORMER percent: PERCENT-FORMER
Perhatikan bahwa persentase harus berjumlah 100. Ganti
- REVISION-NEW dengan nama revisi yang Anda luncurkan secara bertahap.
- REVISION-FORMER dengan nama revisi yang saat ini disajikan.
- PERCENT-NEW dengan persentase traffic yang ingin Anda kirim ke revisi baru,
misalnya, gunakan
10
untuk mengirim 10% dari traffic ke revisi tersebut. - PERCENT-FORMER dengan persentase traffic yang ingin Anda kirim ke revisi lama
Tunggu hingga pembaruan selesai: Anda akan melihat pesan bahwa revisi baru yang Anda luncurkan secara bertahap telah di-deploy dan sedang menyalurkan nilai persentase traffic yang Anda gunakan.
Terraform
Tambahkan kode berikut ke file .tf
dan perbarui persentase traffic dari revisi sebelumnya ke revisi terbaru secara bertahap.
Perhatikan bahwa setiap perubahan traffic akan memerlukan terraform apply
lain untuk dijalankan.
Terapkan perubahan dengan memasukkan terraform apply
.
Memisahkan traffic di antara beberapa revisi
Untuk memisahkan traffic antara dua revisi atau lebih:
Konsol
Di konsol Google Cloud, buka Cloud Run:
Temukan layanan dalam daftar layanan, lalu klik pada layanan tersebut.
Klik Kelola Traffic.
Revisi baru yang saat ini disajikan telah tercantum. Di dalam formulir:
- Setel persentase revisi yang saat ini ditampilkan ke bagian yang diinginkan.
- Pilih salah satu revisi sebelumnya menggunakan daftar dropdown dan atur bagian persentase yang diinginkan.
- Untuk membagi traffic antara revisi satu dan lainnya Tambahkan Revisi, pilih revisi yang diinginkan, dan atur persentase ke bagian yang diinginkan.
- Klik Simpan.
gcloud
Tentukan revisi dan traffic persentase dari setiap revisi dalam daftar yang dipisahkan koma:
gcloud run services update-traffic SERVICE --to-revisions LIST
- Ganti SERVICE dengan nama layanan.
- Ganti LIST dengan daftar revisi dan persentase
yang dipisahkan oleh koma:
REVISION1=PERCENTAGE1,REVISION2=PERCENTAGE2,REVISIONn=PERCENTAGEx
misalnya,hello2-00005-red=25,hello2-00001-bod=25,hello2-00002-nan=50
.
YAML
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Di bawah atribut
spec
, temukan dan perbarui atributtraffic
sehingga revisi baru hanya menyalurkan traffic dalam jumlah kecil:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION-A percent: PERCENT-A - revisionName: REVISION-B percent: PERCENT-B - revisionName: REVISION-C percent: PERCENT-C
Perhatikan bahwa persentase harus berjumlah 100. Ganti
- REVISION-A, REVISION-B, REVISION-C dengan revisi yang Anda alokasikan pada traffic-nya.
- PERCENT-A, PERCENT-B, PERCENT-C dengan persentase untuk revisi yang sesuai.
Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:
gcloud run services replace service.yaml
Tunggu hingga pembaruan selesai: Anda akan melihat pesan bahwa revisi baru yang Anda luncurkan secara bertahap telah di-deploy dan sedang menyajikan
5
persen (atau nilai bertahap apa pun yang Anda gunakan) dari traffic.
Terraform
Tambahkan kode berikut ke file .tf
Anda:
Terapkan perubahan dengan memasukkan terraform apply
.
Mengirim semua traffic ke revisi terbaru
Saat Anda men-deploy revisi baru, Anda dapat membuat revisi ini dan revisi-revisi di masa depan menyajikan traffic dengan persentase 100% dengan segera, mengesampingkan pembagian traffic yang telah ditetapkan:
Konsol
Di konsol Google Cloud, buka Cloud Run:
Temukan layanan dalam daftar layanan, lalu klik layanan tersebut.
Klik Deploy Revisi Baru.
Isi formulir deploy sesuai kebutuhan, tetapi pastikan Anda mencentang kotak centang berlabel Sajikan revisi ini segera. Tindakan ini akan mengganti pembagian traffic yang ada, dengan revisi baru yang menyalurkan traffic 100 persen.
Klik Deploy.
gcloud
Untuk mengirim semua traffic ke revisi yang terakhir di-deploy:
gcloud run services update-traffic SERVICE --to-latest
Ganti SERVICE dengan nama layanan.
YAML
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Di bawah atribut
spec
, temukan dan perbarui atributtraffic
menjadi seperti berikutapiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - latestRevision: true percent: 100
Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:
gcloud run services replace service.yaml
Tunggu hingga pembaruan selesai: Anda akan melihat pesan bahwa revisi (terbaru) telah di-deploy dan sedang menyajikan traffic
100
persen.
Terraform
Tambahkan kode berikut ke file .tf
Anda:
Terapkan perubahan dengan memasukkan terraform apply
.
Menggunakan tag untuk pengujian, migrasi traffic, dan rollback
Untuk menghindari biaya penagihan revisi yang diberi tag, gunakan instance minimum tingkat layanan atau hapus tag pada revisi jika Anda tidak memerlukannya lagi.
Fitur ini sering digunakan untuk menguji dan memeriksa revisi layanan baru sebelum menyalurkan traffic apa pun, dalam urutan umum berikut:
- Menjalankan pengujian terintegrasi pada container selama pengembangan.
- Men-deploy container ke project Google Cloud yang hanya Anda gunakan untuk staging, tidak menyalurkan traffic, dan melakukan pengujian terhadap revisi yang diberi tag.
- Men-deploy ke produksi, tanpa menyalurkan traffic, dan melakukan pengujian terhadap revisi yang diberi tag dalam produksi.
- Memindahkan traffic ke revisi yang diberi tag.
Men-deploy revisi yang baru diberi tag
Untuk men-deploy revisi baru dari layanan yang tersedia ke produksi:
gcloud
Men-deploy revisi yang baru diberi tag:
gcloud run deploy myservice --image IMAGE_URL --no-traffic --tag TAG_NAME
Ganti
- IMAGE_URL dengan URL untuk gambar Anda
- TAG_NAME dengan nama tag dalam huruf kecil
Tag tersebut memungkinkan Anda menguji revisi baru secara langsung di URL tertentu, tanpa
menyalurkan traffic. URL dimulai dengan nama tag yang Anda berikan: misalnya,
jika menggunakan nama tag green
pada layanan myservice
, Anda akan
menguji revisi yang diberi tag di URL https://green---myservice-abcdef.a.run.app
Terraform
Tambahkan baris berikut ke file .tf
Anda dan secara bertahap perbarui persentase traffic dari revisi lama ke revisi terbaru dengan tag baru.
Perhatikan bahwa setiap perubahan traffic akan memerlukan terraform apply
lain untuk dijalankan.
Terapkan perubahan dengan memasukkan terraform apply
.
Menghapus tag
Untuk menghapus tag dari revisi:
Konsol
Di konsol Google Cloud, buka Cloud Run:
Pilih layanan dalam daftar layanan.
Buka bagian Revisi dalam layanan yang Anda inginkan, lalu pilih revisi dengan tag yang ingin Anda hapus.
Arahkan kursor ke kolom URL Revisi (tag), lalu klik ikon pensil:
Di menu dialog URL Revisi, klik ikon Tempat sampah untuk menghapus tag yang saat ini digunakan dalam revisi Anda.
Klik Simpan.
gcloud
Untuk menghapus tag revisi:
gcloud run services update-traffic SERVICE --remove-tags TAG_NAME
Ganti
- TAG_NAME dengan nama tag yang menjadi tujuan pemindahan traffic
- SERVICE dengan nama layanan tempat Anda menghapus tag
YAML
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Buat perubahan konfigurasi yang diinginkan pada layanan.
Di bawah atribut
spec
, temukan dan hapus atributtag
untuk revisi yang diberi tag:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION tag: TAG_NAME percent: PERCENT-NEW
Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:
gcloud run services replace service.yaml
Terraform
Tambahkan kode berikut ke file .tf
Anda:
Terapkan perubahan dengan memasukkan terraform apply
.
Memindahkan traffic ke revisi yang diberi tag
Setelah mengkonfirmasi bahwa revisi baru berfungsi dengan baik, Anda dapat mulai memindahkan traffic ke revisi tersebut menggunakan konsol Google Cloud, command line gcloud, Terraform, atau file YAML:
Konsol
Di konsol Google Cloud, buka Cloud Run:
Temukan layanan dalam daftar layanan, lalu klik layanan tersebut:
Pilih revisi yang diberi tag yang ingin Anda kirimi traffic:
Klik Kelola Traffic.
Temukan nama revisi yang diberi tag: nama tersebut tercantum, tetapi dengan setelan persentase 0: saat ini tidak menyalurkan traffic apa pun. Dalam formulir Kelola traffic*:
- Atur persentase yang diinginkan, misalnya, 5. Perhatikan bahwa persentase versi saat ini yang disajikan akan otomatis dikurangi dengan jumlah yang sama.
- Klik Simpan.
- Jika diperlukan, dalam jangka waktu beberapa jam atau hari, Anda dapat mengulangi langkah Kelola Traffic ini, tetapi dengan persentase yang telah berubah, meningkatkan persentase sesuai kebutuhan untuk revisi yang diberi tag. Anda tidak perlu men-deploy ulang untuk mengubah persentase traffic.
gcloud
Untuk memindahkan traffic ke tag revisi tertentu:
gcloud run services update-traffic myservice --to-tags TAG_NAME=TRAFFIC_PERCENT
Ganti
- TAG_NAME dengan nama tag yang menjadi tujuan pemindahan traffic
- TRAFFIC_PERCENT dengan persentase traffic yang Anda inginkan untuk oleh revisi yang diberi tag, misalnya,
1
.
YAML
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Buat perubahan konfigurasi yang dipilih pada layanan.
Di bawah atribut
spec
, temukan dan perbarui atributtraffic
untuk revisi yang diberi tag sehingga revisi tersebut hanya menyalurkan traffic dalam jumlah kecil:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION tag: TAG_NAME percent: PERCENT-NEW - revisionName: REVISION-FORMER percent: PERCENT-FORMER
Perhatikan bahwa persentase harus berjumlah 100. Ganti
- REVISION dengan nama revisi yang diberi tag.
- TAG_NAME dengan nama tag yang Anda luncurkan secara bertahap.
- PERCENT-NEW dengan persentase traffic yang ingin Anda kirim ke revisi yang diberi tag, misalnya, gunakan
10
untuk mengirim 10% traffic ke revisi tersebut. - REVISION-FORMER dengan nama revisi yang saat ini disajikan.
- PERCENT-FORMER dengan persentase traffic yang ingin Anda kirim ke revisi lama
Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:
gcloud run services replace service.yaml
Tunggu hingga pembaruan selesai: Anda akan melihat pesan bahwa revisi baru yang Anda luncurkan secara bertahap telah di-deploy dan sedang menyalurkan nilai persentase traffic yang Anda gunakan.
Terraform
Tambahkan kode berikut ke file .tf
Anda:
Jika diperlukan, dalam jangka waktu beberapa jam atau hari, Anda dapat secara bertahap memperbarui tag satu dan lainnya, meningkatkan persentase sesuai kebutuhan untuk revisi yang diberi tag.
Terapkan dengan memasukkan terraform apply
setelah melakukan setiap perubahan.
Langkah selanjutnya
- Pelajari cara menggunakan Cloud Deploy untuk menyiapkan pipeline continuous delivery guna melakukan deploy ke Cloud Run.