Menyiapkan mesh multi-cluster di luar Google Cloud

Panduan ini menjelaskan cara menyiapkan mesh multi-cluster untuk platform berikut:

  • GKE on VMware
  • Google Distributed Cloud Virtual untuk Bare Metal
  • GKE on AWS
  • Amazon EKS

Panduan ini menunjukkan cara menyiapkan dua cluster, tetapi Anda dapat memperluas proses ini untuk menggabungkan sejumlah cluster ke dalam mesh Anda.

Sebelum memulai

Panduan ini mengasumsikan bahwa Anda telah menginstal Anthos Service Mesh menggunakan asmcli install. Anda memerlukan asmcli dan paket konfigurasi yang didownload oleh asmcli ke direktori yang Anda tentukan di --output_dir saat menjalankan asmcli install. Jika perlu melakukan penyiapan, ikuti langkah-langkah di Memulai untuk:

Anda memerlukan akses ke file kubeconfig untuk semua cluster yang Anda siapkan di mesh.

Menyiapkan variabel dan placeholder lingkungan

Anda memerlukan variabel lingkungan berikut saat menginstal gateway east-west.

  1. Buat variabel lingkungan untuk nomor project. Dalam perintah berikut, ganti FLEET_PROJECT_ID dengan project ID dari project host armada.

    export PROJECT_NUMBER=$(gcloud projects describe FLEET_PROJECT_ID --format="value(projectNumber)")
    
  2. Buat variabel lingkungan untuk ID mesh.

    export MESH_ID="proj-${PROJECT_NUMBER}"
    
  3. Buat variabel lingkungan untuk nama cluster dalam format yang diperlukan asmcli:

    export CLUSTER_1="cn-FLEET_PROJECT_ID-global-CLUSTER_NAME_1"
    export CLUSTER_2="cn-FLEET_PROJECT_ID-global-CLUSTER_NAME_2"
    

Menginstal gateway timur-barat

Dalam perintah berikut:

  • Ganti CLUSTER_NAME_1 dan CLUSTER_NAME_2 dengan nama cluster Anda.

  • Ganti PATH_TO_KUBECONFIG_1 dan PATH_TO_KUBECONFIG_2 dengan file kubeconfig untuk cluster Anda.

Mesh CA

  1. Instal gateway di cluster1 yang dikhususkan untuk traffic timur-barat ke $CLUSTER_2. Secara default, gateway ini akan bersifat publik di Internet. Untuk mencegah serangan eksternal, sistem produksi mungkin memerlukan pembatasan akses tambahan, misalnya aturan firewall.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_1} \
        --network default \
        --revision asm-1118-4 | \
        istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y --set spec.values.global.pilotCertProvider=kubernetes -f -
    
  2. Instal gateway di $CLUSTER_2 yang dikhususkan untuk traffic timur-barat untuk $CLUSTER_1.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_2} \
        --network default \
        --revision asm-1118-4 | \
        istioctl install --kubeconfig=PATH_TO_KUBECONFIG_2 -y --set spec.values.global.pilotCertProvider=kubernetes -f -
    

Istio CA

  1. Instal gateway di cluster1 yang dikhususkan untuk traffic timur-barat ke $CLUSTER_2. Secara default, gateway ini akan bersifat publik di Internet. Untuk mencegah serangan eksternal, sistem produksi mungkin memerlukan pembatasan akses tambahan, misalnya aturan firewall.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_1} \
        --network default \
        --revision asm-1118-4 | \
        istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y -f -
    
  2. Instal gateway di $CLUSTER_2 yang dikhususkan untuk traffic timur-barat untuk $CLUSTER_1.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_2} \
        --network default \
        --revision asm-1118-4 | \
        istioctl --kubeconfig=PATH_TO_KUBECONFIG_2 install -y -f -
    

Layanan yang menampakkan

Karena cluster berada di jaringan terpisah, Anda harus mengekspos semua layanan (*.local) di gateway timur-barat pada kedua cluster. Meskipun gateway ini bersifat publik di Internet, layanan di belakangnya hanya dapat diakses oleh layanan yang memiliki sertifikat mTLS dan ID workload tepercaya, seolah-olah berada di jaringan yang sama.

  1. Mengekspos layanan melalui gateway timur-barat untuk CLUSTER_NAME_1.

    kubectl --kubeconfig=PATH_TO_KUBECONFIG_1 apply -n istio-system -f \
        asm/istio/expansion/expose-services.yaml
    
  2. Mengekspos layanan melalui gateway timur-barat untuk CLUSTER_NAME_2.

    kubectl --kubeconfig=PATH_TO_KUBECONFIG_2 apply -n istio-system -f \
        asm/istio/expansion/expose-services.yaml
    

Aktifkan penemuan endpoint

Jalankan perintah asmcli create-mesh untuk mengaktifkan penemuan endpoint. Contoh ini hanya menampilkan dua cluster, tetapi Anda dapat menjalankan perintah untuk mengaktifkan penemuan endpoint pada cluster tambahan, sesuai dengan jumlah maksimum cluster yang diizinkan yang dapat Anda tambahkan ke fleet.

  ./asmcli create-mesh \
      FLEET_PROJECT_ID \
      PATH_TO_KUBECONFIG_1 \
      PATH_TO_KUBECONFIG_2