Service Mesh (ASM) memungkinkan Anda mengintegrasikan beberapa kluster Container Service for Kubernetes (ACK) ke dalam satu instance ASM untuk menyediakan platform manajemen dan operasi terpusat bagi layanan yang tersebar secara jarang. Proxy mesh antar-cluster ASM memberikan solusi interkoneksi yang lebih fleksibel untuk jaringan multi-cluster. Topik ini menjelaskan cara menggunakan proxy mesh antar-cluster ASM untuk mengonfigurasi komunikasi antar-jaringan untuk beberapa kluster.
Informasi latar belakang
ASM mendukung mode multi-cluster, yang memungkinkan Anda menambahkan beberapa kluster ACK ke instance ASM yang sama. Mode multi-cluster ASM memungkinkan Anda menambahkan beberapa kluster ACK yang berada di jaringan berbeda ke instance ASM yang sama. Jika komunikasi antar-jaringan tidak dapat dibentuk pada Lapisan 3 untuk kluster-kluster ini karena pembatasan fasilitas, konflik blok CIDR, atau biaya, Anda dapat menggunakan proxy mesh antar-cluster ASM untuk menghubungkan kluster tersebut. Proxy mesh antar-cluster ASM memungkinkan Anda menghubungkan kluster-kluster ini secara fleksibel dengan menggunakan jaringan publik dan pribadi. Dengan cara ini, konflik blok CIDR dapat diselesaikan tanpa memodifikasi kode layanan Anda, serta tata kelola lalu lintas terpusat, perlindungan keamanan, dan pengamatan ujung-ke-ujung untuk beberapa kluster dilaksanakan. Topik ini menjelaskan cara menggunakan proxy mesh antar-cluster ASM untuk mengonfigurasi komunikasi antar-jaringan untuk beberapa kluster yang ditambahkan ke instance ASM yang sama. Dalam contoh ini, aplikasi sleep digunakan untuk mengakses aplikasi HTTPBin di seluruh kluster.
Manfaat
Proxy mesh antar-cluster yang disediakan oleh instance ASM versi V1.22 dan yang lebih baru sepenuhnya menerapkan load balancing lapisan 7. Kemampuan routing gateway ASM timur-barat dalam skenario komunikasi antar-cluster sama dengan yang ada dalam skenario komunikasi non-antar-cluster.
Prasyarat
Instance ASM dengan versi 1.22 atau yang lebih baru telah dibuat. Untuk informasi lebih lanjut, lihat Buat instance ASM.
Beberapa kluster telah ditambahkan ke instance ASM. Untuk informasi lebih lanjut, lihat Tambahkan kluster ke instance ASM. (Dalam contoh ini, dua kluster ditambahkan.)
Injeksi proxy sidecar otomatis diaktifkan untuk instance ASM. Untuk informasi lebih lanjut, lihat bagian "Aktifkan injeksi proxy sidecar otomatis" dari topik Kelola namespace global.
Akses antar-cluster antar layanan hanya tersedia jika salah satu dari dua kondisi berikut terpenuhi:
Fitur proxy DNS diaktifkan dalam instance ASM. Untuk informasi lebih lanjut, lihat Gunakan fitur proxy DNS dalam instance ASM. Metode ini direkomendasikan.
Layanan tujuan yang sama dengan yang ada di kluster yang melayani server dibuat secara manual di kluster yang melayani klien.
Langkah 1: Asosiasikan alamat IP elastis (EIP) ke bidang kontrol instance ASM
Jika kluster Anda di bidang data tidak dapat berkomunikasi dengan virtual private cloud (VPC) tempat instance ASM berada dan Anda ingin menghubungkan bidang data dan bidang kontrol instance ASM melalui Internet, Anda dapat mengasosiasikan EIP dengan instance SLB untuk titik akhir Istio Pilot dari bidang kontrol instance ASM untuk mengekspos titik akhir Istio Pilot ke Internet.
Masuk ke Konsol ASM. Di panel navigasi di sebelah kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi di sebelah kiri, pilih .
Di sisi kanan halaman Basic Information, pilih Istio Pilot Endpoint dan klik Bind EIP.
Dalam kasus ini, jika instance ASM dilepaskan, EIP juga akan dilepaskan.
Langkah 2: Konfigurasikan pengaturan jaringan untuk kluster dan aktifkan proxy mesh antar-cluster
Anda dapat menentukan jaringan logis untuk setiap kluster. Layanan pada jaringan logis yang sama dapat langsung mengakses satu sama lain. Layanan pada jaringan logis yang berbeda harus menggunakan proxy mesh antar-cluster untuk saling mengakses.
Masuk ke Konsol ASM. Di panel navigasi di sebelah kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi di sebelah kiri, pilih .
Klik Multi-cluster Network Configurations dan lengkapi konfigurasi dengan menggunakan metode berikut:
Atur Homing Logical Network Name menjadi network1 untuk ACK 1.
Atur Homing Logical Network Name menjadi network2 untuk ACK 2 dan nyalakan Enable Access Through Cross-cluster Mesh Proxy di ACK 2.

Setelah Anda menerapkan konfigurasi di atas, ASM membuat proxy mesh antar-cluster default di ACK 2. Proxy mesh ini dikaitkan dengan EIP. Layanan di ACK 1 secara otomatis menggunakan proxy mesh antar-cluster ini untuk mengakses layanan di ACK 2, dan enkripsi mutual transport layer security (mTLS) diaktifkan secara default untuk jalur komunikasi ini.
Anda dapat melihat definisi proxy mesh antar-cluster di file kubeconfig kluster yang sesuai. Sebuah proxy mesh antar-cluster diberi nama dalam format berikut: asm-cross-network-${ACK ID}. Anda dapat menyesuaikan konfigurasi proxy mesh antar-cluster seperti sumber daya dan jumlah replika berdasarkan kebutuhan bisnis Anda.
Sebuah proxy mesh antar-cluster adalah proxy TCP dan tidak dapat melakukan load balancing lapisan 7. Ketidakseimbangan beban mungkin terjadi dalam beberapa kasus.
Langkah 3: Periksa akses antar-cluster
Konfigurasi jaringan di atas mulai berlaku ketika pod aplikasi yang sesuai dimulai. Jika sebuah pod aplikasi sudah dimulai sebelum Anda memodifikasi konfigurasi jaringan, Anda perlu memulai ulang pod aplikasi tersebut.
Buat aplikasi sleep di ACK 1. Contoh konten YAML:
Buat aplikasi HTTPBin di ACK 2. Contoh konten YAML:
Akses aplikasi HTTPBin dari pod yang menjalankan aplikasi sleep. (Hubungkan ke pod berdasarkan informasi di file kubeconfig ACK 1.)
Dapatkan nama pod yang menjalankan aplikasi sleep.
kubectl get pod | grep sleepJalankan perintah curl untuk mengakses aplikasi HTTPBin dari aplikasi sleep.
kubectl exec ${Nama pod yang menjalankan aplikasi sleep} -- curl httpbin:8000/status/418Keluaran berikut menunjukkan bahwa akses berhasil:
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 135 100 135 0 0 16075 0 --:--:-- --:--:-- --:--:-- 16875 -=[ teapot ]=- _...._ .' _ _ `. | ."` ^ `". _, \_;`"---"`|// | ;/ \_ _/ `"""`
Verifikasi bahwa aplikasi sleep menggunakan proxy mesh antar-cluster untuk mengakses aplikasi HTTPBin.
Periksa log pod yang menjalankan aplikasi sleep. (Hubungkan ke pod berdasarkan informasi di file kubeconfig ACK 1.)
kubectl logs ${Nama pod yang menjalankan aplikasi sleep} -c istio-proxy | tail -1Keluaran perintah berikut dikembalikan:
{"authority_for":"httpbin:8000","bytes_received":"0","bytes_sent":"135","downstream_local_address":"xxx.xxx.xxx.xx:8000","downstream_remote_address":"xx.x.xxx.xxx:xxxxx","duration":"7","istio_policy_status":"-","method":"GET","path":"/status/418","protocol":"HTTP/1.1","request_id":"08dc43e9-60c8-4f2f-910a-b727172ce311","requested_server_name":"-","response_code":"418","response_flags":"-","route_name":"default","start_time":"2024-05-23T10:06:27.289Z","trace_id":"-","upstream_cluster":"outbound|8000||httpbin.default.svc.cluster.local","upstream_host":"xxx.xx.xxx.xxx:15443","upstream_local_address":"xx.x.xxx.xxx:60248","upstream_response_time":"7","upstream_service_time":"7","upstream_transport_failure_reason":"-","user_agent":"curl/8.1.2","x_forwarded_for":"-"}Bidang
upstream_hostmengidentifikasi layanan tujuan yang diakses langsung oleh pod yang menjalankan aplikasi sleep. Keluaran menunjukkan bahwa akses dilakukan pada port15443. Port15443adalah port khusus untuk proxy mesh antar-cluster.Periksa log proxy mesh antar-cluster. (Hubungkan ke pod berdasarkan informasi di file kubeconfig ACK 2.)
Pertama, dapatkan pod yang menjalankan proxy mesh antar-cluster.
kubectl -n istio-system get pod | grep asm-cross-network istio-asm-cross-network-c0859be51XXX 1/1 Running 0 20h istio-asm-cross-network-c0859be51XXX 1/1 Running 0 20hKeluaran menunjukkan bahwa dua pod menjalankan proxy mesh antar-cluster secara default. Anda dapat memeriksa log kedua pod tersebut secara terpisah. Log mereka serupa.
kubectl logs istio-asm-cross-network-c0859be51XXX -n istio-system | tail -1 {"authority_for":"-","bytes_received":"xxxx","bytes_sent":"xxxx","downstream_local_address":"xx.xx.x.xx:15443","downstream_remote_address":"xx.xx.xx.xx:xxxxx","duration":"1568569","istio_policy_status":"-","method":"-","path":"-","protocol":"-","request_id":"-","requested_server_name":"outbound_.8000_._.httpbin.default.svc.cluster.local","response_code":"0","response_flags":"-","route_name":"-","start_time":"2024-05-23T08:41:16.618Z","trace_id":"-","upstream_cluster":"outbound_.8000_._.httpbin.default.svc.cluster.local","upstream_host":"xx.xx.xx.xxx:80","upstream_local_address":"xx.x.xx.xx:xxxxx","upstream_response_time":"-","upstream_service_time":"-","upstream_transport_failure_reason":"-","user_agent":"-","x_forwarded_for":"-"}