Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud Service Mesh:ASM'de VirtualService yetki devri

Son Güncelleme:Oct 07, 2026

Çok sayıda mikroservis veya yoğun yönlendirme kuralı içeren uygulamalarda tek bir VirtualService büyüyebilir ve bakımı zorlaşabilir. Bu sorunu çözmek için Service Mesh (ASM), yönlendirme kurallarını birden çok VirtualService kaynağı arasında bölmenize olanak tanıyan bir delegate mekanizması sunar. Bu yaklaşım, yönlendirme yapılandırmalarında değişiklik yaparken ortaya çıkan riskleri azaltır. Bu konuda, Bookinfo uygulaması örnek alınarak birden çok VirtualService kullanılarak uygulama için yönlendirme kurallarının nasıl tanımlanacağı gösterilmektedir.

Ön koşullar

Arka plan bilgileri

Service Mesh (ASM) ortamında, trafiğin hizmetlere nasıl yönlendirileceğini kontrol eden yönlendirme kurallarını tanımlamak için VirtualService kullanırsınız. Pratikte, tek ve büyük bir VirtualService'in yönetimi zor olabilir. Her yönlendirme güncellemesi bu VirtualService üzerinde değişiklik yapılmasını gerektirir; bu durum genellikle güncelleme çakışmalarına, yinelenen yapılandırmalara ve sıkı bağımlılıklara yol açar. Kurallardaki herhangi bir yanlış yapılandırma, veri düzlemi kümesindeki hizmetleri etkileyebilir ve hatta tüm hizmet erişimini kesintiye uğratabilir.

ASM, yönlendirme kurallarının birbirinden ayrıştırılmasını sağlamak amacıyla VirtualService kaynağını bir delegate mekanizmasıyla genişletir. Bir VirtualService'i birincil bir VirtualService ve bir veya daha fazla ikincil VirtualService olarak bölebilirsiniz. Birincil VirtualService genel kuralları tanımlarken, ikincil VirtualService'ler uygulamanın belirli bölümleri için ayrıntılı yönlendirme kurallarını belirler. Birincil VirtualService genellikle merkezi bir yönetici tarafından yönetilir; ikincil VirtualService'ler ise ilgili hizmet sahipleri tarafından yönetilir. Bu sorumluluk ayrımı, yönlendirme kurallarında değişiklik yapılırken oluşabilecek riskleri önemli ölçüde azaltır ve bağımsız hizmet dağıtımları ile güncellemelerin verimliliğini artırır.

Notlar

  • ASM iç içe geçmiş Delegate yapılarını desteklemez. Delegate parametresi yalnızca birincil bir VirtualService içinde ayarlanabilir. Örneğin, hem birincil hem de ikincil bir VirtualService'te Delegate parametresi ayarlanırsa, ne birincil ne de ikincil VirtualService etkin hale gelir.

  • İkincil bir VirtualService içindeki HTTPMatchRequest değeri, birincil VirtualService'teki karşılık gelen eşleşme koşulunun bir alt kümesi olmalıdır. Aksi takdirde bir çakışma oluşur ve HTTPRoute etkin olmaz.

  • Birincil VirtualService'in HTTP rotasındaki route ve redirect alanları boş olduğunda yalnızca delegate alanını belirtebilirsiniz. İkincil bir VirtualService'in hosts alanı boş olmalıdır. İkincil VirtualService'ten gelen yönlendirme kuralları, birincil VirtualService'teki kurallarla birleştirilir.

Adım 1: Gateway yapılandırma

  1. ASM konsolu üzerinde oturum açın.

  2. Sol gezinme bölmesinde Service Mesh > Mesh Management seçeneklerini seçin.

  3. Mesh Management sayfasında yapılandırmak istediğiniz ASM örneğini bulun. ASM örneğinin adına tıklayın veya Actions sütunundaki Manage öğesine tıklayın.

  4. ASM örneği ayrıntılar sayfasında sol gezinme bölmesinden ASM Gateways > Gateway seçeneğine gidin. Açılan sayfada Create from YAML düğmesine tıklayın.

  5. Bir Namespaces seçin, aşağıdaki YAML içeriğini düzenleyiciye yapıştırın ve Create düğmesine tıklayın. Bu konuda örnek olarak default ad alanı kullanılmaktadır.

    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: bookinfo-gateway
    spec:
      selector:
        istio: ingressgateway # use istio default controller
      servers:
      - port:
          number: 80
          name: http
          protocol: HTTP
        hosts:
        - "*"

    Bookinfo hizmetinin 80 numaralı bağlantı noktasından gelen veya giden HTTP bağlantılarını alabilmesi için number değerini 80 olarak ayarlayın.

Adım 2: Birincil VirtualService yapılandırma

  1. ASM konsolu üzerinde oturum açın.

  2. Sol gezinme bölmesinde Service Mesh > Mesh Management seçeneklerini seçin.

  3. Mesh Management sayfasında yapılandırmak istediğiniz ASM örneğini bulun. ASM örneğinin adına tıklayın veya Actions sütunundaki Manage öğesine tıklayın.

  4. ASM örneği ayrıntılar sayfasında sol gezinme bölmesinden Traffic Management Center > VirtualService seçeneğine gidin. Açılan sayfada Create from YAML düğmesine tıklayın.

  5. Bir Namespaces seçin, aşağıdaki YAML içeriğini düzenleyiciye yapıştırın ve Create düğmesine tıklayın. Bu konuda örnek olarak default ad alanı kullanılmaktadır.

    Aşağıdaki yapılandırma, vs-1 ve vs-2 için delegate tanımlar. Burada vs-1, Bookinfo hizmetine erişmek için isteklerin /log içermesini gerektirir; vs-2 ise Bookinfo hizmetine erişmek için isteklerin / içermesini gerektirir.

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: bookinfo
      namespace: default
    spec:
      gateways:
        - bookinfo-gateway
      hosts:
        - '*'
      http:
        - delegate:
            name: vs-1
            namespace: ns1
          match:
            - uri:
                prefix: /log
        - delegate:
            name: vs-2
            namespace: ns1
          match:
            - uri:
                prefix: /

    delegate alanındaki parametreler:

    • name: Yetki devrinin adı.

    • namespace: Yetki devrinin ad alanı.

Adım 3: Alt VirtualService yapılandırma

  1. ASM konsolu üzerinde oturum açın.

  2. Sol gezinme bölmesinde Service Mesh > Mesh Management seçeneklerini seçin.

  3. Mesh Management sayfasında yapılandırmak istediğiniz ASM örneğini bulun. ASM örneğinin adına tıklayın veya Actions sütunundaki Manage öğesine tıklayın.

  4. ASM örneği ayrıntılar sayfasında sol gezinme bölmesinden Traffic Management Center > VirtualService seçeneğine gidin. Açılan sayfada Create from YAML düğmesine tıklayın.

  5. Bir Namespaces seçin, aşağıdaki içeriği düzenleyiciye yapıştırın ve Create düğmesine tıklayın.

    Bu konuda örnek olarak ns1 ad alanı kullanılmaktadır. Ad alanı oluşturma hakkında daha fazla bilgi için bkz. Genel ad alanlarını yönetme.

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: vs-1
      namespace: ns1
    spec:
      http:
        - match:
            - uri:
                exact: /login
            - uri:
                exact: /logout
          route:
            - destination:
                host: productpage.default.svc.cluster.local
                port:
                  number: 9080
    • metadata: delegate parametresine bağlanmak için birincil VirtualService'in delegate parametresiyle tutarlı olmalıdır. Bu örnekte meta veriler, vs-1'in delegate parametresiyle tutarlıdır; bu da vs-1'in delegate parametresine bağlandığı anlamına gelir.

    • match: İstekler için filtreleme koşullarını belirtir. Bu örnekte uri değeri exact: /login ve exact: /logout olarak ayarlanmıştır. Bu sayede Bookinfo hizmetinde oturum açıp çıkabilirsiniz.

  6. Yine ns1 Namespaces seçin, aşağıdaki YAML içeriğini düzenleyiciye yapıştırın ve Create düğmesine tıklayın.

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: vs-2
      namespace: ns1
    spec:
      http:
        - match:
            - uri:
                exact: /productpage
            - uri:
                prefix: /static
            - uri:
                prefix: /api/v1/products
          route:
            - destination:
                host: productpage.default.svc.cluster.local
                port:
                  number: 9080
    • metadata: Değer, birincil VirtualService'in delegate parametresiyle tutarlı olmalıdır. Bu parametre delegate parametresine bağlamak için kullanılır. Bu örnekte değer, vs-2'nin delegate parametresiyle tutarlıdır; yani vs-2'nin delegate parametresine bağlıdır.

    • match: Bir istek için filtreleme koşullarını belirtir. Bu örnekte istek /productpage, /static veya /api/v1/products içermelidir.

Sonuçları doğrulama

  1. Web tarayıcınızda http://<giriş ağ geçidi IP adresi>/productpage adresine gidin.

    Aşağıdaki sayfa görüntülenir. Bu durum, /productpage parametresini içeren Bookinfo hizmetine yönelik isteğin başarılı olduğunu ve vs-2 için VirtualService'in başarıyla yapılandırıldığını gösterir. ASM ağ geçidi adresini elde etme hakkında bilgi için bkz. Giriş ağ geçidi IP adresini alma. Sayfa BookInfo Sample uygulamasını başarıyla yükler ve The Comedy of Errors adlı kitabın ürün sayfasını görüntüler. Sol taraftaki Book Details bölümünde Type, Pages, Publisher, Language ve ISBN gibi alanlar listelenir. Sağ taraftaki Book Reviews bölümünde ise birden çok kullanıcı yorumu ve yıldız derecelendirmesi görüntülenir. Bu durum, hizmet ağı uygulamasının ASM ağ geçidi üzerinden erişilebilir olduğunu doğrular.

  2. Sayfanın sağ üst köşesindeki Sign in öğesine tıklayın. Açılan iletişim kutusunda Bookinfo hizmetinde oturum açmak için bir kullanıcı adı ve parola girin.

    Sayfa oturum açılmış duruma güncellenir. Bu durum, vs-1 VirtualService'in doğru yapılandırıldığını doğrular. Oturum açtıktan sonra sağ üst köşede kullanıcı adınız (örneğin jason) ve bir sign out bağlantısı görünür; bu da başarılı bir şekilde oturum açıldığını gösterir.