全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Gunakan gateway serverless ASM sebagai titik masuk tunggal untuk mengakses beberapa klaster

更新时间:Jul 02, 2025

Service Mesh (ASM) memungkinkan Anda menerapkan layanan aplikasi di beberapa klaster Kubernetes dalam virtual private cloud (VPC) yang sama dan mengonfigurasi gateway ingress serverless sebagai proxy untuk trafik arah masuk dari klaster tersebut. Hal ini meningkatkan ketersediaan layanan secara keseluruhan serta mengurangi biaya sumber daya komputasi.

Prasyarat

  • Dua klaster Container Service for Kubernetes (ACK), yaitu m1c1 dan m1c2 dalam contoh ini, telah dibuat dalam VPC yang sama. Untuk informasi lebih lanjut, lihat Buat klaster ACK khusus (tidak berlaku lagi) atau Buat klaster ACK dikelola.

    Catatan

    Saat membuat klaster, disarankan untuk mengonfigurasi kelompok keamanan tingkat lanjut untuk klaster tersebut.

  • Sebuah instance ASM versi 1.18.0.139 atau lebih baru telah dibuat. Instance ASM mesh1 digunakan dalam contoh ini. Untuk informasi lebih lanjut tentang cara membuat instance ASM, lihat Buat instance ASM.

Langkah 1: Pastikan bahwa kedua klaster dapat berkomunikasi satu sama lain

Secara default, dua klaster dalam VPC yang sama dapat berkomunikasi satu sama lain jika terkait dengan kelompok keamanan tingkat lanjut. Jika salah satu klaster terkait dengan kelompok keamanan dasar atau kedua kelompok keamanan tidak dapat berkomunikasi satu sama lain, konfigurasikan aturan kelompok keamanan untuk klaster tersebut. Untuk informasi lebih lanjut, lihat Kelola aturan kelompok keamanan.

Langkah 2: Tambahkan klaster ke instance ASM dan buat gateway ingress serverless

Setelah menambahkan kedua klaster ke instance ASM, buat gateway ingress serverless.

  1. Tambahkan kedua klaster ke instance ASM. Untuk informasi lebih lanjut, lihat Tambahkan klaster ke instance ASM.

  2. Gunakan file YAML berikut untuk membuat gateway ingress serverless. Untuk informasi lebih lanjut, lihat Buat gateway ingress.

    Perluas untuk melihat file YAML gateway ingress 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: Terapkan aplikasi Bookinfo

ASM memungkinkan Anda menerapkan aplikasi lintas klaster. Anda dapat menerapkan mikro-layanan aplikasi Bookinfo di kedua klaster.

  1. Gunakan konten berikut untuk membuat sumber daya yang dikonfigurasi dalam file bookinfo-m1c2.yaml di klaster m1c2:

    Catatan

    Versi v3 dari mikro-layanan reviews menampilkan peringkat sebagai bintang merah.

    Tampilkan file YAML aplikasi Bookinfo

    # Layanan Details
    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
    ---
    # Layanan Ratings
    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
    ---
    # Layanan Reviews
    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
    ---
    # Layanan Productpage
    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. Jalankan perintah berikut untuk menerapkan aplikasi Bookinfo yang tidak mengandung versi v3 dari mikro-layanan reviews di klaster m1c2:

    kubectl apply -f bookinfo-m1c2.yaml
  3. Gunakan konten berikut untuk membuat sumber daya yang dikonfigurasi dalam file bookinfo-m1c1.yaml di klaster m1c1:

    Tampilkan file YAML

    # Layanan Reviews
    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
    ---
    # Layanan Ratings
    apiVersion: v1
    kind: Service
    metadata:
      name: ratings
      labels:
        app: ratings
        service: ratings
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: ratings
  4. Jalankan perintah berikut untuk menerapkan versi v3 dari mikro-layanan reviews dan mikro-layanan ratings di klaster m1c1:

    kubectl apply -f bookinfo-m1c1.yaml

Langkah 4: Tambahkan layanan virtual dan gateway Istio

  1. Buat layanan virtual bernama bookinfo di namespace default instance ASM. Untuk informasi lebih lanjut, lihat Kelola layanan virtual.

    Perluas untuk melihat file YAML layanan virtual

    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 gateway Istio bernama bookinfo-gateway di namespace default instance ASM. Untuk informasi lebih lanjut, lihat Kelola gateway Istio.

    Perluas untuk melihat file YAML gateway Istio

    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: bookinfo-gateway
    spec:
      selector:
        istio: ingressgateway # gunakan pengontrol default istio
      servers:
      - port:
          number: 80
          name: http
          protocol: HTTP
        hosts:
        - "*"
  3. Di bilah alamat browser Anda, masukkan http://{alamat IP gateway ingress serverless}/productpage dan segarkan halaman beberapa kali.

    Anda dapat melihat bahwa rasio permintaan yang dirutekan ke tiga versi mikro-layanan reviews mendekati 1:1:1. Versi v3 dari mikro-layanan reviews dapat berfungsi normal meskipun tidak diterapkan di klaster yang sama dengan mikro-layanan lainnya.

(Opsional) Langkah 5: Tentukan bahwa permintaan selalu dirutekan ke versi v3 mikro-layanan reviews

Anda dapat mendefinisikan aturan tujuan dan layanan virtual untuk menetapkan kebijakan penerapan mikro-layanan aplikasi Bookinfo. Contoh berikut menentukan bahwa permintaan selalu dirutekan ke versi v3 mikro-layanan reviews.

  1. Buat aturan tujuan bernama reviews di namespace default instance ASM. Untuk informasi lebih lanjut, lihat Kelola layanan virtual.

    Perluas untuk melihat file YAML aturan tujuan

    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 layanan virtual bernama reviews di namespace default instance ASM. Untuk informasi lebih lanjut, lihat Kelola layanan virtual.

    Perluas untuk melihat file YAML layanan virtual

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: reviews
    spec:
      hosts:
        - reviews
      http:
      - route:
        - destination:
            host: reviews
            subset: v3
  3. Di bilah alamat browser Anda, masukkan http://{alamat IP gateway ingress serverless}/productpage dan segarkan halaman beberapa kali.

    Anda dapat melihat bahwa permintaan selalu dirutekan ke versi v3 mikro-layanan reviews. Dalam hal ini, peringkat ditampilkan sebagai bintang merah.书评用红星