Rollback, peluncuran bertahap, dan migrasi traffic

Penayangan Knative memungkinkan Anda menentukan revisi mana yang harus menerima traffic dan menentukan persentase traffic yang diterima oleh revisi. Fitur ini memungkinkan Anda melakukan rollback ke revisi sebelumnya, meluncurkan revisi (juga dikenal sebagai blue-green deployment), dan membagi traffic antara beberapa revisi secara bertahap. Halaman ini menjelaskan cara menggunakan fitur ini untuk mengelola traffic ke revisi penayangan Knative Anda.

Melakukan roll back ke revisi sebelumnya

Untuk melakukan roll back ke revisi sebelumnya:

Konsol

  1. Buka penayangan Knative di konsol Google Cloud:

    Buka penayangan Knative

  2. Temukan layanan dalam daftar layanan, lalu klik pada layanan tersebut.

  3. Klik tab Revisi untuk menampilkan daftar revisi terbaru untuk layanan tersebut.

  4. Dalam daftar revisi, klik ikon elipsis di sebelah kanan revisi yang sedang Anda roll back:

  5. Klik Kelola Traffic untuk menampilkan formulir kelola traffic:

    1. Pilih revisi sebelumnya yang ingin Anda roll back dalam daftar dropdown.
    2. Setel persentase traffic pada revisi sebelumnya menjadi 100.
    3. Setel persentase revisi yang disajikan saat ini menjadi 0.
    4. Klik Save.

Command line

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

Anda dapat mendownload konfigurasi layanan yang ada ke dalam file YAML menggunakan perintah gcloud run services describe menggunakan flag --format=export. Anda kemudian dapat memodifikasi file YAML dan men-deploy perubahan tersebut dengan perintah gcloud run services replace. Anda harus memastikan bahwa Anda hanya mengubah atribut yang ditentukan.

  1. Download konfigurasi layanan Anda ke file bernama service.yaml di ruang kerja lokal:

    gcloud run services describe SERVICE --format export > service.yaml

    Ganti SERVICE dengan nama layanan penayangan Knative Anda.

  2. Dalam file lokal Anda, perbarui atribut traffic yang terletak di spec:

    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.
  3. Ganti layanan dengan konfigurasi baru menggunakan perintah berikut:

    gcloud run services replace service.yaml

Meluncurkan revisi secara bertahap

Untuk meluncurkan revisi baru secara bertahap (blue-green deployment):

Konsol

  1. Buka penayangan Knative di konsol Google Cloud:

    Buka penayangan Knative

  2. Temukan layanan dalam daftar layanan, lalu klik pada layanan tersebut.

  3. Klik Deploy Revisi Baru.

  4. Isi formulir deploy sesuai kebutuhan, tetapi pastikan kotak centangnya berlabel Segera sajikan revisi ini TIDAK DIPERIKSA.

  5. Klik Deploy.

  6. Klik Kelola Traffic.

  7. Revisi baru dicantumkan, tetapi dengan setelan persentase 0: Saat ini tidak menyalurkan traffic dari mana pun. Di dalam formulir:

    1. Atur persentase yang diinginkan, misalnya, 5. Perhatikan bahwa persentase versi saat ini yang disajikan akan otomatis dikurangi dengan jumlah yang sama.
    2. Klik Save.
    3. 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.

Command line

  1. Untuk men-deploy revisi yang ingin diluncurkan secara bertahap, dengan terlebih dahulu menetapkan revisi agar tidak menerima traffic, gunakan perintah update dengan parameter --no-traffic:

    gcloud run deploy --image IMAGE --no-traffic

    Ganti IMAGE dengan gambar yang sedang Anda deploy.

  2. 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.
  3. Setelah performa revisi memuaskan, ulangi langkah sebelumnya update-traffic, tetapi tingkatkan nilai persentase sesuai keinginan.

YAML

Anda dapat mendownload konfigurasi layanan yang ada ke dalam file YAML menggunakan perintah gcloud run services describe menggunakan flag --format=export. Anda kemudian dapat memodifikasi file YAML dan men-deploy perubahan tersebut dengan perintah gcloud run services replace. Anda harus memastikan bahwa Anda hanya mengubah atribut yang ditentukan.

  1. Download konfigurasi layanan Anda ke file bernama service.yaml di ruang kerja lokal:

    gcloud run services describe SERVICE --format export > service.yaml

    Ganti SERVICE dengan nama layanan penayangan Knative Anda.

  2. Buat perubahan konfigurasi yang diinginkan pada layanan seperti yang dijelaskan di berbagai halaman konfigurasi, dan tentukan nama revisi yang Anda inginkan untuk revisi baru:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    template:
      metadata:
        annotations:
          ...
        name: REVISION-NAME
     ```
    
    Replace
    
    • REVISION-NAME dengan nama yang Anda inginkan untuk revisi baru.
  3. Di bawah atribut spec, temukan dan perbarui atribut traffic 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

Memisahkan traffic di antara beberapa revisi

Untuk memisahkan traffic antara dua revisi atau lebih:

Konsol

  1. Buka penayangan Knative di konsol Google Cloud:

    Buka penayangan Knative

  2. Temukan layanan dalam daftar layanan, lalu klik pada layanan tersebut.

  3. Klik Kelola Traffic.

  4. Revisi baru yang saat ini disajikan telah tercantum. Di dalam formulir:

    1. Setel persentase revisi yang saat ini ditampilkan ke bagian yang diinginkan.
    2. Pilih salah satu revisi sebelumnya menggunakan daftar dropdown dan atur bagian persentase yang diinginkan.
    3. Untuk membagi traffic antara revisi satu dan lainnya Tambahkan Revisi, pilih revisi yang diinginkan, dan atur persentase ke bagian yang diinginkan.
    4. Klik Save.

Command line

Tentukan revisi dan persentase traffic untuk setiap revisi dalam daftar yang dipisahkan koma:

gcloud run services update-traffic SERVICE --to-revisions LIST

Ganti:

  • SERVICE dengan nama layanan.
  • LIST dengan daftar revisi yang dipisahkan koma yang Anda inginkan untuk menerima traffic dan persentase traffic yang sesuai, sehingga totalnya menjadi 100 persen:
    REVISION1=PERCENTAGE1,REVISION2=PERCENTAGE2,REVISIONn=PERCENTAGEn
    misalnya, hello2-00005-red=25,hello2-00001-bod=25,hello2-00002-nan=50.

YAML

Anda dapat mendownload konfigurasi layanan yang ada ke dalam file YAML menggunakan perintah gcloud run services describe menggunakan flag --format=export. Anda kemudian dapat memodifikasi file YAML dan men-deploy perubahan tersebut dengan perintah gcloud run services replace. Anda harus memastikan bahwa Anda hanya mengubah atribut yang ditentukan.

  1. Download konfigurasi layanan Anda ke file bernama service.yaml di ruang kerja lokal:

    gcloud run services describe SERVICE --format export > service.yaml

    Ganti SERVICE dengan nama layanan penayangan Knative Anda.

  2. Dalam file lokal Anda, perbarui atribut traffic sehingga revisi baru hanya akan menayangkan 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.
  3. Ganti layanan dengan konfigurasi baru menggunakan perintah berikut:

    gcloud run services replace service.yaml

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

  1. Buka penayangan Knative di konsol Google Cloud:

    Buka penayangan Knative

  2. Temukan layanan dalam daftar layanan, lalu klik pada layanan tersebut.

  3. Klik Deploy Revisi Baru.

  4. 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.

  5. Klik Deploy.

Command line

Untuk mengirim semua traffic ke revisi yang terakhir di-deploy:

gcloud run services update-traffic SERVICE --to-latest

Ganti SERVICE dengan nama layanan.

YAML

Anda dapat mendownload konfigurasi layanan yang ada ke dalam file YAML menggunakan perintah gcloud run services describe menggunakan flag --format=export. Anda kemudian dapat memodifikasi file YAML dan men-deploy perubahan tersebut dengan perintah gcloud run services replace. Anda harus memastikan bahwa Anda hanya mengubah atribut yang ditentukan.

  1. Download konfigurasi layanan Anda ke file bernama service.yaml di ruang kerja lokal:

    gcloud run services describe SERVICE --format export > service.yaml

    Ganti SERVICE dengan nama layanan penayangan Knative Anda.

  2. Dalam file lokal Anda, perbarui atribut traffic yang terletak di spec:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    spec:
    ...
      traffic:
      - latestRevision: true
        percent: 100
    
  3. Ganti layanan dengan konfigurasi baru menggunakan perintah berikut:

    gcloud run services replace service.yaml

Menggunakan tag untuk pengujian, migrasi traffic, dan rollback

Setelah men-deploy layanan, Anda dapat membuat revisi baru dan menetapkan tag aset yang memungkinkan Anda untuk mengakses revisi di URL tertentu tanpa menyalurkan traffic. Kemudian, Anda dapat menggunakan tag tersebut secara bertahap memindahkan traffic ke revisi yang diberi tag, dan untuk melakukan rollback revisi yang diberi tag.

Fitur ini sering digunakan untuk menguji dan memeriksa revisi layanan baru sebelum menyalurkan traffic apa pun, dalam urutan umum berikut:

  1. Menjalankan pengujian terintegrasi pada container selama pengembangan.
  2. Men-deploy container ke project Google Cloud yang hanya Anda gunakan untuk staging, tidak menyalurkan traffic, dan melakukan pengujian terhadap revisi yang diberi tag.
  3. Men-deploy ke produksi, tanpa menyalurkan traffic, dan melakukan pengujian terhadap revisi yang diberi tag dalam produksi.
  4. Memindahkan traffic ke revisi yang diberi tag.

Men-deploy revisi yang diberi tag baru

Untuk men-deploy revisi baru dari layanan yang tersedia ke produksi:

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 pengujian dimulai dengan nama tag yang Anda berikan: http://{TAG_NAME}---{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.nip.io

Misalnya, jika Anda menggunakan nama tag green pada layanan myservice, Anda akan menguji revisi yang diberi tag di URL: https://green---myservice.default.kuberun.11.111.11.111.nip.io

Memindahkan traffic ke revisi yang diberi tag

Setelah mengonfirmasi bahwa revisi baru berfungsi dengan baik, Anda dapat mulai memigrasikan traffic ke revisi tersebut menggunakan Konsol Google Cloud, command line gcloud, atau file YAML:

Konsol

  1. Buka penayangan Knative di konsol Google Cloud:

    Buka penayangan Knative

  2. Temukan layanan dalam daftar layanan, lalu klik layanan tersebut:

  3. Pilih revisi yang diberi tag yang ingin Anda kirimi traffic:

  4. Klik Kelola Traffic.

  5. 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*:

    1. Atur persentase yang diinginkan, misalnya, 5. Perhatikan bahwa persentase versi saat ini yang disajikan akan otomatis dikurangi dengan jumlah yang sama.
    2. Klik Save.
    3. 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.

Command line

Untuk memindahkan traffic ke tag revisi tertentu:

gcloud run deploy update-traffic myservice --tag 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

Anda dapat mendownload konfigurasi layanan yang ada ke dalam file YAML menggunakan perintah gcloud run services describe menggunakan flag --format=export. Anda kemudian dapat memodifikasi file YAML dan men-deploy perubahan tersebut dengan perintah gcloud run services replace. Anda harus memastikan bahwa Anda hanya mengubah atribut yang ditentukan.

  1. Download konfigurasi layanan Anda ke file bernama service.yaml di ruang kerja lokal:

    gcloud run services describe SERVICE --format export > service.yaml

    Ganti SERVICE dengan nama layanan penayangan Knative Anda.

  2. Buat perubahan konfigurasi yang diinginkan pada layanan seperti yang dijelaskan di berbagai halaman konfigurasi.

  3. Di bawah atribut spec, temukan dan perbarui atribut traffic 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
  4. Ganti layanan dengan konfigurasi baru menggunakan perintah berikut:

    gcloud run services replace service.yaml