Memigrasikan ServiceEntry Istio ke GCPBackend untuk VM Compute Engine
Halaman ini menunjukkan cara bermigrasi dari ServiceEntry ke GCPBackend, yang menunjukkan bagaimana kemampuan pengelolaan traffic Istio dapat memastikan transisi yang lancar dan aman.
Bermigrasi ke GCPBackend memberikan manfaat berikut:
- Penemuan Endpoint - Endpoint VM di Layanan Backend otomatis diperbarui saat instance VM ditambahkan atau dihapus.
- Health Check Terpusat - Endpoint VM diperiksa kesehatannya dan traffic secara otomatis dialihkan dari backend yang tidak responsif ke backend yang responsif.
- Load balancing global dan algoritma load balancing lanjutan - Endpoint VM dapat di-deploy di beberapa region. Gunakan algoritma load balancing kami untuk mengonfigurasi perilaku load balancing di seluruh region ini. Lihat https://cloud.google.com/service-mesh/docs/service-routing/advanced-load-balancing-overview dan https://cloud.google.com/service-mesh/docs/service-routing/advanced-load-balancing-overview untuk mengetahui detail selengkapnya.
- Migrasi yang lancar: Manfaatkan pemisahan dan pencerminan traffic untuk memigrasikan traffic dengan aman tanpa mengganggu aplikasi.
- Pengelolaan yang ditingkatkan: Dapatkan manfaat dari konfigurasi dan pengelolaan yang disederhanakan.
Sebelum memulai
Bagian berikut mengasumsikan bahwa Anda telah:
- Cluster GKE dengan Cloud Service Mesh diaktifkan.
- Entri Layanan Istio.
- Resource GCPBackend yang dikonfigurasi untuk VM Compute Engine.
Buat atau ubah VirtualService yang ada untuk menyertakan ServiceEntry dan GCPBackend sebagai tujuan
Anda dapat menggunakan pemisahan traffic untuk secara bertahap mengalihkan traffic dari ServiceEntry ke GCPBackend. Anda harus memulai dengan persentase kecil traffic yang diarahkan ke GCPBackend dan meningkatkannya secara bertahap sambil memantau masalah apa pun.
Contoh berikut menjelaskan migrasi 10% permintaan ke GCPBackend.
cat <<EOF > virtual-service.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: gcpbackend-migration
namespace: NAMESPACE
spec:
hosts:
- service-entry.com
http:
- route:
- destination:
host: gcpbackend.com
weight: 10 # 10% traffic to gcp backend.
- destination:
host: service-entry.com
weight: 90 # 90% traffic to service entry
EOF
kubectl apply -f virtual-service.yaml
Dengan keterangan:
- NAMESPACE adalah nama namespace.
Dalam contoh ini:
- VIRTUAL_SERVICE adalah
gcpbackend-migration
. - SERVICE_ENTRY_HOSTNAME adalah
service-entry.com
. - GCP_BACKEND_HOSTNAME adalah
gcpbackend.com
.
(Opsional) Mengonfigurasi VirtualService untuk Pencerminan Traffic
Untuk lebih memastikan transisi yang lancar, Anda dapat mengonfigurasi duplikasi traffic untuk mengirim salinan traffic ke GCPBackend sambil tetap mengarahkan traffic ke ServiceEntry. Hal ini memungkinkan pengujian dan validasi konfigurasi GCPBackend tanpa memengaruhi alur traffic utama. Untuk informasi selengkapnya, lihat Istio Virtual Service API.
Memvalidasi fungsi
Lihat log aplikasi atau metrik Cloud Service Mesh untuk memeriksa rasio error permintaan ke $SERVICE_ENTRY_HOSTNAME. Tidak akan ada error.
Untuk menguji di luar aplikasi, Anda dapat men-deploy klien curl. Jika permintaan dirutekan untuk menggunakan GCPBackend API, permintaan tersebut tidak memerlukan token IAM yang secara eksplisit dilampirkan ke permintaan karena Cloud Service Mesh akan melampirkan token tersebut secara otomatis.
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: testcurl
namespace: default
spec:
containers:
- name: curl
image: curlimages/curl
command: ["sleep", "3000"]
EOF
kubectl exec testcurl -c curl -- curl "$SERVICE_ENTRY_HOSTNAME"
Output harus berupa respons HTTP 200 yang valid.