Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud Service Mesh:Route traffic to multiple clusters through an ASM serverless ingress gateway

Son Güncelleme:Oct 07, 2026

Alibaba Cloud Service Mesh (ASM), gelen trafiği tek bir sunucusuz giriş ağ geçidi üzerinden aynı Virtual Private Cloud (VPC) içindeki birden çok Kubernetes kümesine dağıtılmış uygulama hizmetlerine yönlendirir. Bu mimari hizmet kullanılabilirliğini artırır ve bilişim kaynağı maliyetlerini düşürür.

Ön koşullar

  • Aynı VPC içinde iki Container Service for Kubernetes (ACK) kümesi oluşturun. Bu öğreticide m1c1 ve m1c2 adlı kümeler kullanılır. Daha fazla bilgi için bkz. ACK özel kümesi oluşturma (kullanımdan kaldırıldı) veya ACK yönetilen kümesi oluşturma.

    Not

    Küme oluştururken basitleştirilmiş küme arası iletişim için gelişmiş güvenlik gruplarını kullanın.

  • v1.18.0.139 veya sonraki bir sürüme sahip bir ASM örneğine sahip olun. Bu öğreticide mesh1 adlı bir ASM örneği kullanılır. Daha fazla bilgi için bkz. ASM örneği oluşturma.

Adım 1: Küme arası iletişimi doğrulayın

Her ikisi de gelişmiş güvenlik grupları kullandığında aynı VPC içindeki iki küme varsayılan olarak birbirleriyle iletişim kurar. Kümelerden biri temel bir güvenlik grubu kullanıyorsa veya iki güvenlik grubu arasında iletişim sağlanamıyorsa aralarında trafiğe izin vermek için güvenlik grubu kurallarını yapılandırın. Daha fazla bilgi için bkz. Güvenlik grubu kurallarını yönetme.

Adım 2: Kümeleri ASM örneğine ekleyin ve sunucusuz bir giriş ağ geçidi oluşturun

Her iki kümeyi de ASM örneğine ekleyin ardından sunucusuz bir giriş ağ geçidi oluşturun.

  1. İki kümeyi ASM örneğine ekleyin. Daha fazla bilgi için bkz. ASM örneğine küme ekleme.

  2. Aşağıdaki YAML yapılandırmasını kullanarak sunucusuz bir giriş ağ geçidi oluşturun. Daha fazla bilgi için bkz. Giriş ağ geçidi oluşturma.

    Sunucusuz giriş ağ geçidi YAML

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: IstioGateway
    metadata:
      annotations:
        asm.alibabacloud.com/managed-by-asm: 'true'
      name: ingressgateway
      namespace: istio-system
    spec:
      gatewayType: ingress
      dnsPolicy: ClusterFirst
      externalTrafficPolicy: Local
      hostNetwork: false
      ports:
        - name: http
          port: 80
          protocol: TCP
          targetPort: 80
        - name: https
          port: 443
          protocol: TCP
          targetPort: 443
      replicaCount: 1
      resources:
        limits:
          cpu: '2'
          memory: 2G
        requests:
          cpu: 200m
          memory: 256Mi
      rollingMaxSurge: 100%
      rollingMaxUnavailable: 25%
      runAsRoot: true
      serviceType: LoadBalancer

Adım 3: Bookinfo uygulamasını kümeler arasında dağıtın

Bookinfo mikro hizmetlerini her iki kümeye de dağıtın. m1c2 kümesi çoğu hizmeti (details, ratings, reviews v1/v2 ve productpage) çalıştırırken m1c1 kümesi reviews mikro hizmetinin v3 sürümünü ve ratings hizmetini çalıştırır.

  1. Aşağıdaki içeriği bookinfo-m1c2.yaml adlı bir dosyaya kaydedin.

    Not

    reviews mikro hizmetinin v3 sürümü derecelendirmeleri kırmızı yıldızlar olarak gösterir.

    bookinfo-m1c2.yaml

    # Details service
    apiVersion: v1
    kind: Service
    metadata:
      name: details
      labels:
        app: details
        service: details
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: details
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: bookinfo-details
      labels:
        account: details
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: details-v1
      labels:
        app: details
        version: v1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: details
          version: v1
      template:
        metadata:
          labels:
            app: details
            version: v1
        spec:
          serviceAccountName: bookinfo-details
          containers:
          - name: details
            image: docker.io/istio/examples-bookinfo-details-v1:1.15.0
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 9080
    ---
    # Ratings service
    apiVersion: v1
    kind: Service
    metadata:
      name: ratings
      labels:
        app: ratings
        service: ratings
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: ratings
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: bookinfo-ratings
      labels:
        account: ratings
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ratings-v1
      labels:
        app: ratings
        version: v1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: ratings
          version: v1
      template:
        metadata:
          labels:
            app: ratings
            version: v1
        spec:
          serviceAccountName: bookinfo-ratings
          containers:
          - name: ratings
            image: docker.io/istio/examples-bookinfo-ratings-v1:1.15.0
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 9080
    ---
    # Reviews service
    apiVersion: v1
    kind: Service
    metadata:
      name: reviews
      labels:
        app: reviews
        service: reviews
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: reviews
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: bookinfo-reviews
      labels:
        account: reviews
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: reviews-v1
      labels:
        app: reviews
        version: v1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: reviews
          version: v1
      template:
        metadata:
          labels:
            app: reviews
            version: v1
        spec:
          serviceAccountName: bookinfo-reviews
          containers:
          - name: reviews
            image: docker.io/istio/examples-bookinfo-reviews-v1:1.15.0
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 9080
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: reviews-v2
      labels:
        app: reviews
        version: v2
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: reviews
          version: v2
      template:
        metadata:
          labels:
            app: reviews
            version: v2
        spec:
          serviceAccountName: bookinfo-reviews
          containers:
          - name: reviews
            image: docker.io/istio/examples-bookinfo-reviews-v2:1.15.0
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 9080
    ---
    # Productpage services
    apiVersion: v1
    kind: Service
    metadata:
      name: productpage
      labels:
        app: productpage
        service: productpage
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: productpage
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: bookinfo-productpage
      labels:
        account: productpage
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: productpage-v1
      labels:
        app: productpage
        version: v1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: productpage
          version: v1
      template:
        metadata:
          labels:
            app: productpage
            version: v1
        spec:
          serviceAccountName: bookinfo-productpage
          containers:
          - name: productpage
            image: docker.io/istio/examples-bookinfo-productpage-v1:1.15.0
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 9080
    ---
  2. Bookinfo uygulamasını (v3 reviews mikro hizmeti olmadan) m1c2 kümesine dağıtın:

    kubectl apply -f bookinfo-m1c2.yaml
  3. Aşağıdaki içeriği bookinfo-m1c1.yaml adlı bir dosyaya kaydedin.

    bookinfo-m1c1.yaml

    # Reviews service
    apiVersion: v1
    kind: Service
    metadata:
      name: reviews
      labels:
        app: reviews
        service: reviews
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: reviews
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: bookinfo-reviews
      labels:
        account: reviews
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: reviews-v3
      labels:
        app: reviews
        version: v3
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: reviews
          version: v3
      template:
        metadata:
          labels:
            app: reviews
            version: v3
        spec:
          serviceAccountName: bookinfo-reviews
          containers:
          - name: reviews
            image: docker.io/istio/examples-bookinfo-reviews-v3:1.15.0
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 9080
    ---
    # Ratings service
    apiVersion: v1
    kind: Service
    metadata:
      name: ratings
      labels:
        app: ratings
        service: ratings
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: ratings
  4. v3 reviews mikro hizmetini ve ratings hizmetini m1c1 kümesine dağıtın:

    kubectl apply -f bookinfo-m1c1.yaml

Adım 4: Sanal hizmet ve Istio ağ geçidi ekleyin

  1. ASM örneğinin default ad alanında bookinfo adlı bir sanal hizmet oluşturun. Daha fazla bilgi için bkz. Sanal hizmetleri yönetme.

    Sanal hizmet YAML

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: bookinfo
    spec:
      hosts:
      - "*"
      gateways:
      - bookinfo-gateway
      http:
      - match:
        - uri:
            exact: /productpage
        - uri:
            prefix: /static
        - uri:
            exact: /login
        - uri:
            exact: /logout
        - uri:
            prefix: /api/v1/products
        route:
        - destination:
            host: productpage
            port:
              number: 9080
  2. ASM örneğinin default ad alanında bookinfo-gateway adlı bir Istio ağ geçidi oluşturun. Daha fazla bilgi için bkz. Istio ağ geçitlerini yönetme.

    Istio ağ geçidi YAML

    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:
        - "*"
  3. Bir tarayıcı açın ve http://{sunucusuz giriş ağ geçidinin IP adresi}/productpage adresine gidin. Sayfayı birkaç kez yenileyin. Trafik reviews mikro hizmetinin üç sürümü (v1, v2 ve v3) arasında yaklaşık 1:1:1 oranında dağıtılır. v3 sürümü diğer mikro hizmetlerden farklı bir kümede çalışsa da normal şekilde çalışır.

(İsteğe bağlı) Adım 5: Tüm trafiği v3 reviews mikro hizmetine yönlendirin

Tüm istekleri reviews mikro hizmetinin v3 sürümüne yönlendirmek için bir hedef kuralı ve bir sanal hizmet tanımlayın.

  1. ASM örneğinin default ad alanında reviews adlı bir hedef kuralı oluşturun. Daha fazla bilgi için bkz. Hedef kurallarını yönetme.

    Hedef kuralı YAML

    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
  2. ASM örneğinin default ad alanında reviews adlı bir sanal hizmet oluşturun. Daha fazla bilgi için bkz. Sanal hizmetleri yönetme.

    Sanal hizmet YAML

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: reviews
    spec:
      hosts:
        - reviews
      http:
      - route:
        - destination:
            host: reviews
            subset: v3
  3. Bir tarayıcı açın ve http://{sunucusuz giriş ağ geçidinin IP adresi}/productpage adresine gidin. Sayfayı birkaç kez yenileyin. Artık tüm istekler reviews mikro hizmetinin v3 sürümüne yönlendirilir. Derecelendirmeler kırmızı yıldızlar olarak görünür.

    Reviews with red star ratings