All Products
Search
Document Center

Container Service for Kubernetes:Rutekan traffic ke beberapa kluster melalui gerbang masuk serverless ASM

Last Updated:Mar 01, 2026

Service Mesh (ASM) Alibaba Cloud merutekan traffic inbound melalui satu gerbang masuk serverless ke layanan aplikasi yang tersebar di beberapa kluster Kubernetes dalam Virtual Private Cloud (VPC) yang sama. Arsitektur ini meningkatkan ketersediaan layanan dan mengurangi biaya sumber daya komputasi.

Prasyarat

  • Dua kluster Container Service for Kubernetes (ACK) telah dibuat dalam VPC yang sama. Tutorial ini menggunakan kluster bernama m1c1 dan m1c2. Untuk informasi selengkapnya, lihat Create an ACK dedicated cluster (discontinued) atau Create an ACK managed cluster.

    Catatan

    Saat membuat kluster, gunakan advanced security groups untuk menyederhanakan komunikasi antar-kluster.

  • Instans ASM versi v1.18.0.139 atau yang lebih baru. Tutorial ini menggunakan instans ASM bernama mesh1. Untuk informasi selengkapnya, lihat Create an ASM instance.

Langkah 1: Verifikasi komunikasi antar-kluster

Dua kluster dalam VPC yang sama dapat berkomunikasi secara default jika keduanya menggunakan advanced security groups. Jika salah satu kluster menggunakan basic security group atau kedua security group tidak dapat berkomunikasi, konfigurasikan aturan security group untuk mengizinkan traffic di antara keduanya. Untuk informasi selengkapnya, lihat Manage security group rules.

Langkah 2: Tambahkan kluster ke instans ASM dan buat gerbang masuk serverless

Tambahkan kedua kluster ke instans ASM, lalu buat gerbang masuk serverless.

  1. Tambahkan kedua kluster ke instans ASM. Untuk informasi selengkapnya, lihat Add a cluster to an ASM instance.

  2. Buat gerbang masuk serverless dengan konfigurasi YAML berikut. Untuk informasi selengkapnya, lihat Create an ingress gateway.

    YAML gerbang masuk serverless

    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

Langkah 3: Deploy aplikasi Bookinfo di beberapa kluster

Deploy layanan mikro Bookinfo di kedua kluster. Kluster m1c2 menjalankan sebagian besar layanan (details, ratings, reviews v1/v2, dan productpage), sedangkan kluster m1c1 menjalankan versi v3 dari layanan mikro reviews dan layanan ratings.

  1. Simpan konten berikut ke file bernama bookinfo-m1c2.yaml.

    Catatan

    Versi v3 dari layanan mikro reviews menampilkan rating sebagai bintang berwarna merah.

    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. Deploy aplikasi Bookinfo (tanpa layanan mikro reviews versi v3) ke kluster m1c2:

    kubectl apply -f bookinfo-m1c2.yaml
  3. Simpan konten berikut ke file bernama bookinfo-m1c1.yaml.

    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. Deploy layanan mikro reviews versi v3 dan layanan ratings ke kluster m1c1:

    kubectl apply -f bookinfo-m1c1.yaml

Langkah 4: Tambahkan virtual service dan Istio gateway

  1. Buat virtual service bernama bookinfo di namespace default instans ASM. Untuk informasi selengkapnya, lihat Manage virtual services.

    Virtual Service 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. Buat Istio gateway bernama bookinfo-gateway di namespace default instans ASM. Untuk informasi selengkapnya, lihat Manage Istio gateways.

    YAML Istio gateway

    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. Buka browser dan akses http://{IP address of the serverless ingress gateway}/productpage. Refresh halaman beberapa kali. Traffic didistribusikan kira-kira dengan rasio 1:1:1 ke tiga versi layanan mikro reviews (v1, v2, dan v3). Versi v3 berfungsi normal meskipun dijalankan di kluster yang berbeda dari layanan mikro lainnya.

(Opsional) Langkah 5: Rutekan seluruh traffic ke layanan mikro reviews versi v3

Definisikan destination rule dan virtual service untuk merutekan semua permintaan ke versi v3 dari layanan mikro reviews.

  1. Buat destination rule bernama reviews di namespace default instans ASM. Untuk informasi selengkapnya, lihat Manage destination rules.

    Destination Rule 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. Buat virtual service bernama reviews di namespace default instans ASM. Untuk informasi selengkapnya, lihat Manage virtual services.

    YAML virtual service

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: reviews
    spec:
      hosts:
        - reviews
      http:
      - route:
        - destination:
            host: reviews
            subset: v3
  3. Buka browser dan akses http://{IP address of the serverless ingress gateway}/productpage. Refresh halaman beberapa kali. Semua permintaan kini dirutekan ke versi v3 dari layanan mikro reviews. Rating ditampilkan sebagai bintang berwarna merah.

    Reviews with red star ratings