Deployment Canary Kustom

Dokumen ini menjelaskan cara mengonfigurasi dan menggunakan deployment canary kustom untuk men-deploy aplikasi Anda ke semua jenis target menggunakan Cloud Deploy.

Cara kerja deployment canary kustom

Saat Anda men-deploy menggunakan strategi deployment canary kustom, Cloud Deploy tidak akan mengubah manifes Anda untuk memfasilitasi konfigurasi penyeimbangan traffic yang dipilih. Sebagai gantinya, Anda bertanggung jawab untuk menyediakan manifes yang diterapkan ke runtime target untuk setiap fase canary.

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 manifes Anda dirender dan di-deploy. Untuk deployment canary kustom, Anda bertanggung jawab untuk menentukan profil yang terkait dengan setiap fase canary guna memfasilitasi konfigurasi penyeimbangan traffic yang dipilih. Profil ini dipetakan ke fase dalam konfigurasi strategi pipeline pengiriman.

Berikut adalah contoh konfigurasi skaffold.yaml yang digunakan oleh canary kustom:

apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: canary-25
  manifests:
    rawYaml:
    - canary-25-resources.yaml
- name: canary-50
  manifests:
    rawYaml:
    - canary-50-resources.yaml
- name: stable
  manifests:
    rawYaml:
    - stable-resources.yaml

Mengonfigurasi canary kustom

Dengan konfigurasi canary kustom, Anda menentukan hal berikut dalam definisi pipeline pengiriman:

  • Nama fase peluncuran

    Dalam canary yang sepenuhnya otomatis, Cloud Deploy akan memberi nama fase untuk Anda (misalnya, canary-25, canary-75, stable). Namun, dengan canary kustom, Anda dapat memberi setiap fase nama apa pun, asalkan unik di antara semua fase untuk tahap canary ini, dan mematuhi batasan ID resource. Namun, nama fase akhir (100%) harus stable.

  • Sasaran persentase untuk setiap fase

    Tentukan persentase secara terpisah, per fase.

  • Profil Skaffold yang akan digunakan untuk fase

    Anda dapat menggunakan profil Skaffold terpisah untuk setiap fase, atau profil yang sama, atau kombinasi apa pun. Setiap profil dapat menggunakan definisi layanan Cloud Run yang berbeda. Anda juga dapat menggunakan lebih dari satu profil untuk fase tertentu. Cloud Deploy menggabungkannya.

  • Apakah ada tugas verifikasi untuk fase tersebut

    Ingatlah bahwa jika Anda mengaktifkan verifikasi, Anda juga perlu mengonfigurasi skaffold.yaml untuk verifikasi.

  • Apakah ada tugas pra-deployment atau pasca-deployment untuk fase tersebut

    Jika mengaktifkan tugas pra-deployment atau pasca-deployment, Anda perlu mengonfigurasi skaffold.yaml untuk tugas tersebut.

Elemen konfigurasi canary kustom

YAML berikut menunjukkan konfigurasi untuk fase deployment canary yang sepenuhnya kustom:

strategy:
  canary:
    # Custom configuration for each canary phase
    customCanaryDeployment:
      phaseConfigs:
      - phaseId: "PHASE1_NAME"
        percentage: PERCENTAGE1
        profiles: [ "PROFILE_NAME" ]
        verify: true | false
        predeploy:
          actions: "PREDEPLOY_ACTION"
        postdeploy:
          actions: "POSTDEPLOY_ACTION"
      - 
      - phaseId: "stable"
        percentage: 100
        profiles: [ "LAST_PROFILE_NAME" ]
        verify: true|false
        predeploy:
          actions: "PREDEPLOY_ACTION"
        postdeploy:
          actions: "POSTDEPLOY_ACTION"

Dalam YAML ini

  • PHASE1_NAME

    Adalah nama fase. Setiap nama fase harus unik.

  • [ "PROFILE_NAME" ]

    Adalah nama profil yang akan digunakan untuk fase. Anda dapat menggunakan profil yang sama untuk setiap fase, atau profil yang berbeda untuk setiap fase, atau kombinasi apa pun. Selain itu, Anda dapat menentukan lebih dari satu profil. Cloud Deploy menggunakan semua profil yang Anda tentukan, plus profil atau manifes yang digunakan oleh tahap keseluruhan.

  • stable

    Fase akhir harus diberi nama stable.

  • PERCENTAGE1

    Adalah persentase yang akan di-deploy untuk fase pertama. Setiap fase harus memiliki nilai persentase yang unik, dan nilai tersebut harus berupa persentase bilangan bulat (bukan 10.5, misalnya), dan fase harus dalam urutan menaik.

  • verify: true|false

    Memberi tahu Cloud Deploy apakah akan menyertakan tugas verifikasi untuk fase tersebut. Perhatikan bahwa agar setiap fase menggunakan verifikasi, Skaffold menggunakan profil yang sama untuk verifikasi yang ditentukan untuk render dan deployment untuk fase tersebut.

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

Persentase untuk fase terakhir harus 100. Fase dijalankan sesuai urutan yang Anda konfigurasi dalam stanza customCanaryDeployment ini, tetapi jika nilai persentase tidak dalam urutan menaik, perintah untuk mendaftarkan pipeline pengiriman akan gagal dengan error.

Perhatikan bahwa konfigurasi untuk canary kustom tidak menyertakan stanza runtimeConfig. Jika Anda menyertakan runtimeConfig, maka akan dianggap sebagai canary otomatis kustom.

Langkah berikutnya