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.
Ç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.
Adım 1: Örnek Hizmetleri Dağıtma
-
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.
-
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
-
Bir lane grubu oluşturun.
ASM konsoluna giriş yapın. Sol gezinme bölmesinde seçeneklerini seçin.
Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde seçeneklerini seçin.
-
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
simgesini tıklayın.Yapılandırma tamamlandığında, karşılık gelen TrafficLabel trafik etiketi otomatik olarak oluşturulur.
-
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.
Traffic Rule Definition sayfasının Traffic Lane bölümünde Create swimlanes seçeneğini tıklayın.
-
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.

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

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

Kurallar oluşturulduktan sonra aşağıdaki VirtualService sanal hizmet örneği otomatik olarak oluşturulur.
Adım 3: Uçtan Uca Canary Yayınının Etkili Olduğunu Doğrulama
ASM ağ geçidinin genel IP adresini alın. Daha fazla bilgi için bkz. ASM Ağ Geçidi Adresini Alma.
-
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 -
Uçtan uca canary yayınının etkili olduğunu doğrulayın.
-
s1 lane'inin erişim sonucunu görüntülemek için aşağıdaki komutu çalıştırın.
s1değerininx-asm-prefer-tagolması, 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: s1ile belirtilen trafiğin s1 lane'indeki ilgili hizmetlere aktığını göstermektedir; bu da beklentilerle uyumludur. -
s2 lane'inin erişim sonucunu görüntülemek için aşağıdaki komutu çalıştırın.
s2değerininx-asm-prefer-tagolması, 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: s2ile belirtilen trafiğin s2 lane'indeki ilgili hizmetlere aktığını göstermektedir; bu da beklentilerle uyumludur. -
s3 lane'inin erişim sonucunu görüntülemek için aşağıdaki komutu çalıştırın.
s3değerininx-asm-prefer-tagolması, 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: s3ile 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.