Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud Service Mesh:Use lanes to manage traffic

Son Güncelleme:Oct 16, 2026

Service Mesh (ASM), trafik etiketlerini kullanarak bir uygulamanın ilgili sürümlerini veya diğer özelliklerini bağımsız çalışma ortamlarına (lane) ayırmanıza olanak tanır. Yapılandırdığınız lane kurallarıyla eşleşen istekler, hedef sürümlere veya özelliklere sahip uygulamalara yönlendirilir.

Ön Koşullar

  • Sürümü 1.17.2.22 veya üzeri olan Enterprise Edition ya da Ultimate Edition bir ASM örneği oluşturmuş olmanız gerekir. Daha fazla bilgi için bkz. ASM Örneği Oluşturma veya ASM Örneğini Yükseltme.

  • Kümeyi ASM örneğine ekleme işlemi tamamlanmıştır.

  • ingressgateway adlı bir ASM ağ geçidi oluşturulmuştur. Daha fazla bilgi için bkz. Giriş Ağ Geçidi Oluşturma.

  • istio-system ad alanında ingressgateway adlı bir ağ geçidi kuralı oluşturulmuştur. Daha fazla bilgi için bkz. Istio Ağ Geçitlerini Yönetme.

    Örnek ağ geçidi kuralı YAML dosyası

    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
      name: ingressgateway
      namespace: istio-system
    spec:
      selector:
        istio: ingressgateway
      servers:
        - port:
            number: 80
            name: http
            protocol: HTTP
          hosts:
            - '*'
    

Çalışma Mantığı

Canary yayını, istek içeriğine veya trafik oranına göre üretim trafiğinin küçük bir bölümünü yeni bir sürüme yönlendirir. Canary yayını doğrulamadan başarıyla geçtikten sonra, yeni sürüme yönlendirilen trafik kademeli olarak artırılır. Bu, aşamalı bir yayın yöntemidir.

Uçtan uca canary yayını ilkesi, isteklerin geçtiği belirli mikro hizmetlerden ziyade tüm çağrı zincirine odaklanır. Trafik kontrolünün bakış açısını hizmetlerden istek zincirlerine kaydırır. Ağ geçidinden arka uç hizmetlerine kadar birden çok trafik yalıtım ortamı oluşturmak için yalnızca birkaç yönetim kuralına ihtiyacınız vardır. Bu sayede birden çok hizmetin kararlı ve güvenli bir şekilde yayınlanması ile birden çok hizmet sürümünün paralel geliştirilmesi sağlanır. Daha fazla bilgi için bkz. Trafik Etiketleme.

Bu konudaki örnek senaryo aşağıdaki şekilde gösterilmektedir. Şekilde, her biri mocka, mockb ve mockc olmak üzere üç hizmeti içeren s1, s2 ve s3 olmak üzere üç lane gösterilmektedir. Lane'leri ASM konsolu içinde dağıttıktan sonra, her bir lane'in trafik dağılımının beklentileri karşılayıp karşılamadığını kontrol edebilirsiniz.End-to-end canary release in lane mode

Adım 1: Örnek Hizmetleri Dağıtma

  1. Otomatik sidecar proxy enjeksiyonunu etkinleştirin default ad alanı için.

    Otomatik sidecar proxy enjeksiyonu hakkında daha fazla bilgi için bkz. Sidecar Enjeksiyon İlkelerini Yapılandırma.

  2. Container Service for Kubernetes (ACK) kümesinde örnek hizmetleri dağıtın.

    kubectl apply -f https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/asm-labs/swimlane/v1/application-v1.yaml
    kubectl apply -f https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/asm-labs/swimlane/v2/application-v2.yaml
    kubectl apply -f https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/asm-labs/swimlane/v3/application-v3.yaml

Adım 2: Lane Grubu ve İlgili Lane'leri Oluşturma

  1. Bir lane grubu oluşturun.

    1. ASM konsoluna giriş yapın. Sol gezinme bölmesinde Service Mesh > Mesh Management seçeneklerini seçin.

    2. Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde Traffic Management Center > Traffic Lane seçeneklerini seçin.

    3. Traffic Lane sayfasında Create Swimlane Group seçeneğini tıklayın. Create Swimlane Group panelinde ilgili parametreleri yapılandırın ve ardından OK seçeneğini tıklayın.


      Parametre


      Açıklama


      Name of swim lane group


      Bu örnekte değeri test olarak ayarlayın.


      Entrance gateway


      ingressgateway seçeneğini seçin.


      Swimlane Services


      Hedef Kubernetes Clusters ve default ad alanını seçin. Aşağıdaki listede mocka, mockb ve mockc hizmetlerini seçin ve ardından hedef hizmetleri selected bölümüne eklemek için Move simgesini tıklayın.

      Yapılandırma tamamlandığında, karşılık gelen TrafficLabel trafik etiketi otomatik olarak oluşturulur.

      Örnek TrafficLabel YAML dosyası

      apiVersion: istio.alibabacloud.com/v1beta1
      kind: TrafficLabel
      metadata:
        labels:
          asm-system: 'true'
          provider: asm
        name: asm-trafficlabel-global
        namespace: istio-system
      spec:
        rules:
          - labels:
              - name: asm-label
                valueFrom:
                  - $getLabel(ASM_TRAFFIC_TAG)
      
  2. s1, s2 ve s3 lane'lerini oluşturun ve bunları sırasıyla v1, v2 ve v3 sürümlerine bağlayın.

    Aşağıdaki adımlarda s1 lane'i örnek olarak kullanılmıştır. s2 ve s3 lane'lerini aynı şekilde oluşturun.

    1. Traffic Rule Definition sayfasının Traffic Lane bölümünde Create swimlanes seçeneğini tıklayın.

    2. Create swimlanes iletişim kutusunda ilgili parametreleri yapılandırın ve ardından OK seçeneğini tıklayın.

      Parametre

      Açıklama

      Swimlane Name

      Bu örnekte değeri s1 olarak ayarlayın.

      Bir hizmete erişirken, 'x-asm-prefer-tag: LANE_NAME' başlığını taşıyan bir istek ilgili sürüme yönlendirilir.

      Configure Service Tag

      Bu örnekte değeri v1 olarak ayarlayın.

      Add Service

      mocka(default), mockb(default) ve mockc(default) seçeneklerini seçin.

      Create a lane

      Üç lane oluşturulduktan sonraki sonuç aşağıdaki şekilde gösterilmektedir:Lanes created

      Oluşturduğunuz her lane, karşılık gelen DestinationRule hedef kuralını otomatik olarak oluşturur. Örneğin, s1 lane'i oluşturulduktan sonra aşağıdaki DestinationRule otomatik olarak oluşturulur.

      Örnek DestinationRule YAML dosyası

      apiVersion: networking.istio.io/v1beta1
      kind: DestinationRule
      metadata:
        creationTimestamp: '2023-05-29T09:06:09Z'
        generation: 3
        labels:
          asm-system: 'true'
          provider: asm
          swimlane-group: test
        name: trafficlabel-dr-test-default-mocka
        namespace: istio-system
        resourceVersion: '1310364657'
        uid: 7112ce64-0176-4ff3-b5f3-66263085****
      spec:
        host: mocka.default.svc.cluster.local
        subsets:
          - labels:
              ASM_TRAFFIC_TAG: v1
            name: s1
          - labels:
              ASM_TRAFFIC_TAG: v1
            name: v1
          - labels:
              ASM_TRAFFIC_TAG: v2
            name: v2
          - labels:
              ASM_TRAFFIC_TAG: v2
            name: s2
          - labels:
              ASM_TRAFFIC_TAG: v3
            name: v3
          - labels:
              ASM_TRAFFIC_TAG: v3
            name: s3
      
  3. Her lane ile eşleşen giriş trafik kuralını oluşturun.

    Aşağıdaki adımlarda s1 lane'inin giriş trafik kuralı örnek olarak kullanılmıştır. s2 ve s3 lane'lerinin giriş trafik kurallarını aynı şekilde oluşturun.

    1. Traffic Rule Definition sayfasının Traffic Lane bölümünde, hedef lane'in sağ tarafındaki Ingress traffic rules sütununda Actions seçeneğini tıklayın.

    2. Add drainage rule iletişim kutusunda ilgili parametreleri yapılandırın ve ardından OK seçeneğini tıklayın.

      Bu konuda, her lane hizmetinin gelen API işlemi /mock şeklindedir. Her lane için aynı giriş trafik kuralını yapılandırın.


      Parametre


      Açıklama


      Ingress service


      mocka.default.svc.cluster.local seçeneğini seçin.


      Ingress traffic rules


      Name değerini r1, realm name değerini * olarak ayarlayın.


      Matching request URI


      Method değerini Exact, Content değerini /mock olarak ayarlayın.

      Üç lane'in giriş trafik kuralları oluşturulduktan sonraki sonuç aşağıdaki şekilde gösterilmektedir:Ingress traffic rules

      Kurallar oluşturulduktan sonra aşağıdaki VirtualService sanal hizmet örneği otomatik olarak oluşturulur.

      Örnek VirtualService YAML dosyası

      apiVersion: networking.istio.io/v1beta1
      kind: VirtualService
      metadata:
        creationTimestamp: '2023-05-29T09:13:00Z'
        generation: 3
        labels:
          asm-system: 'true'
          istioGateway: ingressgateway
          provider: asm
        name: ingressgateway
        namespace: istio-system
        resourceVersion: '1310388638'
        uid: d60baa2f-3a12-472f-881a-15d21004****
      spec:
        gateways:
          - istio-system/ingressgateway
        hosts:
          - '*'
        http:
          - match:
              - headers:
                  x-asm-prefer-tag:
                    exact: s2
                uri:
                  exact: /mock
            name: swimelane-ingress-route-test-s2-rule2
            route:
              - destination:
                  host: mocka.default.svc.cluster.local
                  subset: s2
          - match:
              - headers:
                  x-asm-prefer-tag:
                    exact: s3
                uri:
                  exact: /mock
            name: swimelane-ingress-route-test-s3-rule3
            route:
              - destination:
                  host: mocka.default.svc.cluster.local
                  subset: s3
          - match:
              - headers:
                  x-asm-prefer-tag:
                    exact: s1
                uri:
                  exact: /mock
            name: swimelane-ingress-route-test-s1-rule1
            route:
              - destination:
                  host: mocka.default.svc.cluster.local
                  subset: s1
      

Adım 3: Uçtan Uca Canary Yayınının Etkili Olduğunu Doğrulama

  1. ASM ağ geçidinin genel IP adresini alın. Daha fazla bilgi için bkz. ASM Ağ Geçidi Adresini Alma.

  2. Bir ortam değişkeni ayarlamak için aşağıdaki komutu çalıştırın.

    xxx.xxx.xxx.xxx önceki adımda alınan IP adresidir.

    export ASM_GATEWAY_IP=xxx.xxx.xxx.xxx
  3. Uçtan uca canary yayınının etkili olduğunu doğrulayın.

    1. s1 lane'inin erişim sonucunu görüntülemek için aşağıdaki komutu çalıştırın.

      s1 değerinin x-asm-prefer-tag olması, Adım 2 sırasında s1 lane'ini oluştururken yapılandırdığınız lane adıdır.

      for i in {1..100};  do curl   -H 'x-asm-prefer-tag: s1' http://${ASM_GATEWAY_IP}/mock ;  echo ''; sleep 1; done;

      Beklenen çıktı:

      -> mocka(version: v1, ip: 172.17.0.54)-> mockb(version: v1, ip: 172.17.0.129)-> mockc(version: v1, ip: 172.17.0.130)

      Beklenen çıktı, HTTP başlığı x-asm-prefer-tag: s1 ile belirtilen trafiğin s1 lane'indeki ilgili hizmetlere aktığını göstermektedir; bu da beklentilerle uyumludur.

    2. s2 lane'inin erişim sonucunu görüntülemek için aşağıdaki komutu çalıştırın.

      s2 değerinin x-asm-prefer-tag olması, Adım 2 sırasında s2 lane'ini oluştururken yapılandırdığınız lane adıdır.

      for i in {1..100};  do curl   -H 'x-asm-prefer-tag: s2' http://${ASM_GATEWAY_IP}/mock ;  echo ''; sleep 1; done;

      Beklenen çıktı:

      -> mocka(version: v2, ip: 172.17.0.9)-> mockb(version: v2, ip: 172.17.0.126)-> mockc(version: v2, ip: 172.17.0.128)

      Beklenen çıktı, HTTP başlığı x-asm-prefer-tag: s2 ile belirtilen trafiğin s2 lane'indeki ilgili hizmetlere aktığını göstermektedir; bu da beklentilerle uyumludur.

    3. s3 lane'inin erişim sonucunu görüntülemek için aşağıdaki komutu çalıştırın.

      s3 değerinin x-asm-prefer-tag olması, Adım 2 sırasında s3 lane'ini oluştururken yapılandırdığınız lane adıdır.

      for i in {1..100};  do curl   -H 'x-asm-prefer-tag: s3' http://${ASM_GATEWAY_IP}/mock ;  echo ''; sleep 1; done;

      Beklenen çıktı:

      -> mocka(version: v3, ip: 172.17.0.132)-> mockb(version: v3, ip: 172.17.0.127)-> mockc(version: v3, ip: 172.17.0.69)

      Beklenen çıktı, HTTP başlığı x-asm-prefer-tag: s3 ile belirtilen trafiğin s3 lane'indeki ilgili hizmetlere aktığını göstermektedir; bu da beklentilerle uyumludur.

(İsteğe Bağlı) Adım 4: Mesh Topolojisini Görüntüleme

ASM konsolunda mesh topolojisinin gözlemlenebilirliğini etkinleştirdiyseniz, önceki isteklerin mesh topolojisini görüntüleyebilirsiniz. Daha fazla bilgi için bkz. Gözlemlenebilirliği Artırmak İçin Mesh Topolojisini Etkinleştirme.