Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud Service Mesh:Implement blue-green and canary release with ASM

Son Güncelleme:Oct 07, 2026

Service Mesh (ASM), trafik yönlendirmeyi pod ölçeklendirmeden ayırarak her uygulama sürümüne giden trafiği çoğaltma sayısından bağımsız olarak yüzdelik bazda kontrol etmenizi sağlar.

Bu kılavuz, Bookinfo örnek uygulamasını kullanarak sanal hizmetler ve hedef kurallarıyla üç dağıtım stratejisini adım adım açıklar:

  • Blue-green dağıtımı -- tüm trafiği tek bir adımda bir sürümden diğerine aktarın.

  • Ağırlık tabanlı canary dağıtımı -- trafiği iki sürüm arasında yüzdelik olarak bölün.

  • Üst bilgi tabanlı canary dağıtımı -- belirli kullanıcıları istek üst bilgilerine göre yeni bir sürüme yönlendirin.

Ön Koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

Nasıl Çalışır

Hedef kuralları, pod'larınızdaki sürüm etiketleriyle eşlenen adlandırılmış alt kümeleri tanımlar. Sanal hizmetler, hangi sürümün ne oranda trafik alacağını kontrol etmek için bu alt kümelere başvurur.

Bu kılavuz gerçekçi bir ilerleme sırası izler:

  1. Tüm Bookinfo mikroservis sürümleri için alt kümeleri tanımlayın (hedef kuralları).

  2. Tüm trafiği v1'e yönlendirin (temel çizgi).

  3. Blue-green dağıtımı: reviews hizmetini v1'den v2'ye geçirin.

  4. Ağırlık tabanlı canary dağıtımı: trafiği reviews v2 ve v3 arasında bölün.

  5. Üst bilgi tabanlı canary dağıtımı: belirli bir kullanıcıyı reviews v3'e yönlendirin.

Adım 1: Hedef Kuralları Oluşturma

Sanal hizmetlerin bu alt kümeleri adlarıyla referans alabilmesi için her Bookinfo mikroservisi için alt kümeler tanımlayın. Daha fazla bilgi için bkz. Hedef kurallarını yönetme.

Aşağıdaki hedef kurallarını ASM örneğinize uygulayın:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: productpage
spec:
  host: productpage
  subsets:
  - name: v1
    labels:
      version: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: reviews
spec:
  host: reviews
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
  - name: v3
    labels:
      version: v3
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: ratings
spec:
  host: ratings
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
  - name: v2-mysql
    labels:
      version: v2-mysql
  - name: v2-mysql-vm
    labels:
      version: v2-mysql-vm
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: details
spec:
  host: details
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2

Hedef kurallarının oluşturulduğunu doğrulayın:

kubectl get destinationrules -o name

Beklenen çıktı:

destinationrule.networking.istio.io/productpage
destinationrule.networking.istio.io/reviews
destinationrule.networking.istio.io/ratings
destinationrule.networking.istio.io/details

Adım 2: Tüm Trafiği v1'e Yönlendirme (Temel Çizgi)

Her Bookinfo mikroservisinin v1 alt kümesine tüm trafiği yönlendirmek için sanal hizmetler oluşturun. Bu işlem, trafiği kaydırmadan önce kararlı bir temel çizgi oluşturur. Daha fazla bilgi için bkz. Sanal hizmetleri yönetme.

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: productpage
spec:
  hosts:
  - productpage
  http:
  - route:
    - destination:
        host: productpage
        subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: ratings
spec:
  hosts:
  - ratings
  http:
  - route:
    - destination:
        host: ratings
        subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: details
spec:
  hosts:
  - details
  http:
  - route:
    - destination:
        host: details
        subset: v1

Temel Çizgiyi Doğrulama

Tarayıcınızda Bookinfo ürün sayfasını yenileyin. Reviews bölümü yıldız derecelendirmeleri olmadan görüntülenir çünkü reviews v1, ratings hizmetini çağırmaz.

Yönlendirme kuralını onaylayın:

kubectl get virtualservice reviews -o yaml

Çıktı, reviews hizmeti için tek hedef olarak subset: v1 değerini göstermelidir.

Bu noktada, reviews v2 ve v3 için pod'lar çalışır durumdadır ancak trafik almaz.

Adım 3: Blue-Green Dağıtımı -- reviews v2'ye Geçiş

Blue-green dağıtımı, tüm trafiği tek bir adımda bir sürümden diğerine aktarır. Trafiğin %100'ünü v2 alt kümesine yönlendirmek için reviews sanal hizmetini güncelleyin:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v2

Blue-Green Dağıtımını Doğrulama

Bookinfo ürün sayfasını yenileyin. Reviews bölümü artık siyah yıldız derecelendirmelerini gösterir; bu, tüm trafiğin reviews v2'ye ulaştığını doğrular.

Yönlendirme kuralını onaylayın:

kubectl get virtualservice reviews -o yaml

Çıktı, tek hedef olarak subset: v2 değerini göstermelidir.

Not: Geri almak için, trafiği v1 alt kümesine yönlendiren Adım 2'deki sanal hizmeti yeniden uygulayın.

Adım 4: Ağırlık Tabanlı Canary Dağıtımı -- Trafiği v2 ve v3 Arasında Bölme

Tüm trafiği bir anda değiştirmek yerine, yeni sürüme yavaş yavaş belirli bir yüzde kaydırın. Aşağıdaki sanal hizmet, trafiği reviews v2 ve v3 arasında %50/%50 oranında böler:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v2
      weight: 50
    - destination:
        host: reviews
        subset: v3
      weight: 50

weight değerleri, her sürüm için trafik yüzdesini kontrol eder. Ağırlıkların toplamı 100 olmalıdır.

Canary Dağıtımını Doğrulama

Bookinfo ürün sayfasını birkaç kez yenileyin. Reviews bölümü, yaklaşık olarak eşit sıklıkta siyah yıldızlar (v2) ve kırmızı yıldızlar (v3) arasında değişir.

Not: Geri almak için, v2 hedefinde weight: 100 ve v3'te weight: 0 olarak ayarlayın veya v3 hedefini tamamen kaldırın.

Adım 5: Üst Bilgi Tabanlı Canary Dağıtımı -- Kullanıcı Kimliğine Göre Yönlendirme

HTTP üst bilgilerine dayanarak belirli kullanıcıları yeni sürüme yönlendirirken diğer tüm kullanıcıları mevcut sürümde tutun. Bu yaklaşım, daha geniş bir yayından önce dahili testler için kullanışlıdır.

Bookinfo uygulaması, oturum açmış kullanıcı adını end-user HTTP üst bilgisi olarak iletir. Aşağıdaki sanal hizmet, jason kullanıcısını reviews v3'e ve diğer tüm kullanıcıları reviews v2'ye yönlendirir:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - match:
    - headers:
        end-user:
          exact: jason
    route:
    - destination:
        host: reviews
        subset: v3
  - route:
    - destination:
        host: reviews
        subset: v2

Üst Bilgi Tabanlı Dağıtımı Doğrulama

  1. Oturum açmadan Bookinfo ürün sayfasını yenileyin. Reviews bölümü siyah yıldızları (v2) gösterir.

  2. Sağ üst köşedeki Sign in seçeneğine tıklayın. Kullanıcı adı olarak jason girin. Parola gerekmez.

  3. Oturum açtıktan sonra sayfayı yenileyin. Reviews bölümü artık kırmızı yıldızları (v3) gösterir.

Bu işlem, Bookinfo ürün sayfasının arka uç mikroservislerine yapılan isteklere bir end-user üst bilgisi dahil etmesi nedeniyle çalışır. end-user değeri jason ile eşleştiğinde, sanal hizmet isteği reviews v3'e yönlendirir.

Temizleme

Bu kılavuzda oluşturulan yönlendirme kurallarını kaldırmak için sanal hizmetleri ve hedef kurallarını silin:

kubectl delete virtualservice productpage reviews ratings details
kubectl delete destinationrule productpage reviews ratings details

Sonraki Adımlar