All Products
Search
Document Center

Alibaba Cloud Service Mesh:Akses timbal balik antara beban kerja bidang kontrol jarak jauh dan dikelola

Last Updated:Nov 11, 2025

Topik ini menjelaskan cara mencapai akses timbal balik antar kluster setelah menggunakan fitur bidang kontrol jarak jauh ASM.

Prasyarat

  • Anda telah menyelesaikan semua langkah dalam Mengurangi latensi dorong menggunakan lapisan kontrol jarak jauh ASM. Dalam topik ini, cluster-1 merepresentasikan kluster Alibaba Cloud Container Service for Kubernetes (ACK) yang dikelola oleh lapisan kontrol terkelola ASM, sedangkan cluster-2 merepresentasikan kluster non-ACK yang dikelola oleh lapisan kontrol jarak jauh ASM.

  • Langkah-langkah dalam topik ini mengharuskan Anda beralih antar file kubeconfig. Gabungkan file kubeconfig untuk cluster-1 dan cluster-2 ke dalam satu file konfigurasi yang sama, lalu gunakan perintah kubectl config use-context untuk beralih antar kluster. Anda juga dapat menggunakan kubecm atau kubectx untuk mengelola file kubeconfig dari beberapa kluster.

  • Anda telah mengonfigurasi jaringan kluster dan gerbang timur-barat, serta menerapkan aplikasi httpbin dan sleep di kedua kluster, yaitu cluster-1 dan cluster-2. Untuk informasi selengkapnya, lihat Mencapai interkoneksi lintas jaringan multi-kluster menggunakan gerbang timur-barat ASM.

Langkah 1: Uji akses dari cluster-1 ke cluster-2

  1. Gunakan file kubeconfig untuk cluster-1 untuk menjalankan perintah berikut. Perintah ini mengubah skala aplikasi httpbin di cluster-1 menjadi 0 replika untuk tujuan pengujian.

    kubectl scale deployment httpbin --replicas 0
  2. Gunakan file kubeconfig untuk cluster-1 untuk menjalankan perintah berikut guna mengakses aplikasi httpbin dari aplikasi sleep di cluster-1.

    kubectl exec deployment/sleep -it -- curl httpbin:8000/status/418

    Output yang Diharapkan:

        -=[ teapot ]=-
    
           _...._
         .'  _ _ `.
        | ."` ^ `". _,
        \_;`"---"`|//
          |       ;/
          \_     _/
            `"""`

    Keluaran tersebut menunjukkan bahwa akses berhasil. Permintaan diproses oleh aplikasi httpbin di cluster-2, dan komunikasi dienkripsi menggunakan mutual Transport Layer Security (mTLS).

Langkah 2: Uji akses cluster-1 dari cluster-2

  1. Gunakan file YAML berikut untuk membuat sumber daya ClusterRole dan ClusterRoleBinding di cluster-1. Lapisan kontrol jarak jauh cluster-2 menggunakan ClusterRole ini untuk memperoleh informasi layanan dari cluster-1.

    Perluas untuk melihat file YAML

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      labels:
        app: istio-reader
      name: istio-reader-clusterrole-istio-system
    rules:
    - apiGroups:
      - config.istio.io
      - security.istio.io
      - networking.istio.io
      - authentication.istio.io
      - rbac.istio.io
      - telemetry.istio.io
      - extensions.istio.io
      resources:
      - '*'
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - ""
      resources:
      - endpoints
      - pods
      - services
      - nodes
      - replicationcontrollers
      - namespaces
      - secrets
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - networking.istio.io
      resources:
      - workloadentries
      verbs:
      - get
      - watch
      - list
    - apiGroups:
      - networking.x-k8s.io
      - gateway.networking.k8s.io
      resources:
      - gateways
      - gatewayclasses
      verbs:
      - get
      - watch
      - list
    - apiGroups:
      - apiextensions.k8s.io
      resources:
      - customresourcedefinitions
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - discovery.k8s.io
      resources:
      - endpointslices
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - multicluster.x-k8s.io
      resources:
      - serviceexports
      verbs:
      - get
      - list
      - watch
      - create
      - delete
    - apiGroups:
      - multicluster.x-k8s.io
      resources:
      - serviceimports
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - apps
      resources:
      - replicasets
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - authentication.k8s.io
      resources:
      - tokenreviews
      verbs:
      - create
    - apiGroups:
      - authorization.k8s.io
      resources:
      - subjectaccessreviews
      verbs:
      - create
    - apiGroups: [""]
      resources: ["configmaps"]
      verbs: ["create", "get", "list", "watch", "update"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      labels:
        app: istio-reader
      name: istio-reader-clusterrole-istio-system
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: istio-reader-clusterrole-istio-system
    subjects:
    - kind: ServiceAccount
      name: istio-reader-service-account
      namespace: istio-system
  2. Pastikan Anda telah mengonfigurasi konteks kubectl. Konteks untuk cluster-1 harus diberi nama cluster-1, dan konteks untuk cluster-2 harus diberi nama cluster-2.

  3. Instal alat istioctl. Pastikan versi istioctl kompatibel dengan versi ASM Anda. Alihkan direktori kerja Anda ke folder istio yang telah diekstrak dan jalankan perintah berikut.

    # Ganti <YOUR_CLUSTER1_ID> dengan ID cluster-1.
    bin/istioctl create-remote-secret \
    --context=cluster-1 \
    --name=<YOUR_CLUSTER1_ID> | \
    kubectl apply -f - --context=cluster-2
    Setelah menyelesaikan langkah ini, sebuah rahasia (secret) dibuat di namespace istio-system cluster-2. Rahasia tersebut berisi kredensial akses yang digunakan untuk terhubung ke cluster-1. Kelola izin pada rahasia ini untuk mencegah kebocoran.
  4. Gunakan file kubeconfig untuk cluster-1 untuk menjalankan perintah berikut guna mengubah jumlah replika aplikasi httpbin menjadi 1.

    kubectl scale deployment httpbin --replicas 1
  5. Gunakan file kubeconfig untuk cluster-2 untuk menjalankan perintah berikut guna mengubah jumlah replika aplikasi httpbin menjadi 0.

    kubectl scale deployment httpbin --replicas 0
  6. Gunakan file kubeconfig untuk cluster-2 untuk menjalankan perintah berikut guna menguji akses dari cluster-2 ke aplikasi httpbin di cluster-1.

    kubectl exec deployment/sleep -it -- curl httpbin:8000/status/418

    Keluaran yang diharapkan:

        -=[ teapot ]=-
    
           _...._
         .'  _ _ `.
        | ."` ^ `". _,
        \_;`"---"`|//
          |       ;/
          \_     _/
            `"""`