全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Lakukan peningkatan canary pada gateway ASM

更新时间:Jul 02, 2025

Service Mesh (ASM) memungkinkan Anda melakukan peningkatan canary pada gateway ASM untuk memberikan pengalaman peningkatan yang lancar. Topik ini menjelaskan cara melaksanakan peningkatan canary pada gateway ASM menggunakan metode peningkatan in-place.

Prasyarat

Informasi latar belakang

Gateway ASM mengelola ingress dan egress lalu lintas layanan dengan ketersediaan tinggi. Untuk memastikan kontinuitas bisnis selama peningkatan, Anda dapat menerapkan peningkatan canary pada gateway ASM. Metode ini memungkinkan Anda memverifikasi bahwa trafik dapat diteruskan dengan benar dari pod baru sebelum sepenuhnya meningkatkan gateway. Jika terjadi masalah, Anda dapat menghapus pod baru kapan saja dan melanjutkan setelah masalah diselesaikan.

Catatan

Peningkatan canary pada gateway ASM berbeda dari peningkatan canary pada instance ASM. Peningkatan canary pada gateway ASM tersedia terlepas dari apakah Anda menggunakan peningkatan in-place atau peningkatan canary pada instance ASM.

Pengenalan peningkatan canary pada gateway ASM

Peningkatan bidang kontrol dan bidang data dalam instance ASM bersifat independen. Setelah peningkatan bidang kontrol selesai, Anda dapat meningkatkan bidang data. Berikut adalah cara kerja peningkatan canary pada gateway ASM:

Buat Deployment yang hanya menyediakan satu pod di bidang data sesuai dengan bidang kontrol. Deployment ini disebut Canary Deployment dan termasuk dalam Service yang sama dengan Deployment asli gateway ASM, tetapi namanya memiliki akhiran -canary.

Penting

Jika terdapat Deployment dengan nama yang sama dengan Canary Deployment di namespace tempat gateway ASM berada, Deployment tersebut tidak akan ditimpa. Sebelum melakukan peningkatan canary pada gateway ASM, pastikan tidak ada Deployment dengan nama yang sama dengan Canary Deployment. Sebagai contoh, jika nama gateway ASM adalah ingressgateway, pastikan tidak ada Deployment bernama istio-ingressgateway-canary di namespace istio-system.

  • Peningkatan In-Place pada Instance ASM

    Setelah bidang kontrol instance ASM ditingkatkan, gateway ASM tetap berada di versi aslinya. Buat Canary Deployment terlebih dahulu. Setelah Canary Deployment siap, alihkan sebagian trafik ke pod yang dibuat oleh Canary Deployment. Amati apakah trafik diteruskan dengan benar. Jika tidak, simpan log kesalahan dan hapus Canary Deployment. Selesaikan masalah dan redeploy Canary Deployment untuk verifikasi distribusi trafik. Setelah memastikan trafik dapat diteruskan dengan benar, tingkatkan gateway ASM ke versi yang diinginkan.

  • Peningkatan Canary pada Instance ASM

    Jika Anda melakukan peningkatan canary pada instance ASM, Anda juga dapat menerapkan peningkatan canary pada gateway ASM. Selama peningkatan canary pada instance ASM, gateway ASM memasuki status menunggu untuk ditingkatkan setelah bidang kontrol versi baru digunakan secara default. Terapkan Canary Deployment untuk verifikasi distribusi trafik. Setelah memastikan trafik dapat diteruskan dengan benar, tingkatkan gateway ASM.

    Setelah gateway ASM ditingkatkan ke versi baru, modifikasi konfigurasi untuk menghapus Canary Deployment yang telah diterapkan.

Langkah 1: Tingkatkan bidang kontrol

Untuk meminimalkan risiko kehilangan trafik selama peningkatan, aktifkan fitur graceful shutdown untuk gateway ASM sebelum meningkatkan gateway ASM. Untuk informasi lebih lanjut, lihat Aktifkan Graceful Shutdown untuk Mencegah Kehilangan Trafik.

  1. Masuk ke Konsol ASM. Di panel navigasi sisi kiri, pilih Service Mesh > Mesh Management.

  2. Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi sisi kiri, pilih ASM Instance > Upgrade Management.

  3. Di tab In-place Upgrades pada halaman Upgrade Management, klik Perform Upgrade Precheck. Di pesan Note, klik OK.

    Catatan

    Jika pesan Currently, it is the latest version and does not need to be upgraded muncul di halaman, instance ASM sudah dalam versi terbaru dan tidak dapat ditingkatkan.

  4. Setelah pemeriksaan pra-peningkatan berhasil, klik Upgrade. Di pesan Note, klik OK.

Langkah 2: Terapkan Canary Deployment untuk gateway ASM

Anda dapat menambahkan anotasi untuk menerapkan Canary Deployment.

  1. Gunakan salah satu metode berikut untuk menambahkan anotasi asm.alibabacloud.com/enable-canary-deployment: "true" ke file YAML gateway ASM guna menerapkan Canary Deployment:

    Metode 1: Gunakan Konsol ASM

    1. Masuk ke Konsol ASM. Di panel navigasi sisi kiri, pilih Service Mesh > Mesh Management.

    2. Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi sisi kiri, pilih ASM Gateways > Ingress Gateway.

    3. Di halaman Ingress Gateway, temukan gateway ingress yang diinginkan dan klik YAML di kolom Aksi. Di kotak dialog Edit, tambahkan anotasi asm.alibabacloud.com/enable-canary-deployment: "true" ke bidang annotations di bagian metadata dan klik OK.

    Metode 2: Jalankan perintah kubectl

    1. Jalankan perintah berikut untuk membuka file YAML gateway ASM:

      kubectl edit IstioGateway <YOUR-INGRESSGATEWAY-NAME> -n istio-system
    2. Modifikasi file YAML untuk menambahkan anotasi asm.alibabacloud.com/enable-canary-deployment: "true" ke bidang annotations di bagian metadata, lalu simpan file tersebut.

    Tampilkan Kode YAML Sampel yang Telah Ditambahkan Anotasi

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: IstioGateway
    metadata:
      labels:
        asm-gateway-type: ingress
      annotations:
        asm.alibabacloud.com/enable-canary-deployment: "true" # Tambahkan anotasi ini. 
      name: ingressgateway
      namespace: istio-system
    spec:
      clusterIds:
        - xxxxxxxxxxxxxx
      disableContainerPortExposed: true
      dnsPolicy: ClusterFirst
      externalTrafficPolicy: Local
      gatewayType: ingress
      ports:
        - name: http-0
          port: 80
          protocol: HTTP
          targetPort: 80
      replicaCount: 1
      resources:
        limits:
          cpu: '2'
          memory: 4G
        requests:
          cpu: 200m
          memory: 256Mi
      rollingMaxSurge: 25%
      rollingMaxUnavailable: 25%
      serviceAnnotations:
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain: 'on'
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: '10'
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: PayByCLCU
        service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet
      serviceType: LoadBalancer
  2. Gunakan kubectl untuk terhubung ke bidang data berdasarkan informasi di file kubeconfig, dan jalankan perintah berikut untuk melihat Canary Deployment yang telah diterapkan.

    Dalam contoh ini, nama gateway ASM adalah ingressgateway. Gantilah dengan nama gateway Anda.

    kubectl -n istio-system get deployment | grep ingressgateway

    Keluaran yang Diharapkan:

    istio-ingressgateway                1/1     1            1           10m
    istio-ingressgateway-canary         1/1     1            1           55s

    Deployment dengan akhiran -canary adalah Canary Deployment.

    Setelah Canary Deployment siap, amati apakah sebagian trafik mengalir ke pod yang dibuat oleh Canary Deployment. Jika terjadi pengecualian, simpan log gateway ASM dan hapus anotasi yang ditambahkan. Canary Deployment akan dihapus dan semua trafik mengalir ke pod yang dibuat oleh Deployment asli yang namanya tidak memiliki akhiran -canary. Setelah masalah diselesaikan, redeploy Canary Deployment untuk verifikasi distribusi trafik.

Langkah 3: Tingkatkan gateway ASM setelah verifikasi distribusi trafik berhasil

  1. Masuk ke Konsol ASM. Di panel navigasi sisi kiri, pilih Service Mesh > Mesh Management.

  2. Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi sisi kiri, pilih ASM Instance > Upgrade Management.

  3. Di kolom Upgrade bagian Data Plane, pilih gateway ASM yang ingin Anda tingkatkan dan klik Upgrade Gateway. Di pesan Note, klik OK.

Langkah 4: Hapus Canary Deployment

Setelah gateway ASM ditingkatkan, hapus anotasi yang ditambahkan di Langkah 2. Canary Deployment akan dihapus secara otomatis.

Penting

Versi Canary Deployment selalu sama dengan versi bidang kontrol. Jika Anda tidak menghapus Canary Deployment, Canary Deployment akan ditingkatkan secara bersamaan ketika Anda meningkatkan bidang kontrol lain kali.