Menyiapkan konfigurasi lanjutan
Dokumen ini berisi catatan yang mungkin berguna saat mengonfigurasi Cloud Service Mesh.
Mengonfigurasi satu VM Compute Engine untuk Cloud Service Mesh
Gunakan prosedur ini sebagai contoh cara deployment proxy sidecar dan intersepsi traffic dapat diterapkan untuk memberi VM akses ke layanan Cloud Service Mesh.
Untuk menggunakan prosedur ini, Anda harus menginstal Docker. Ikuti petunjuk Docker untuk menginstal Docker Engine.
Jika Anda mengikuti proses ini untuk mengonfigurasi Cloud Service Mesh di VM tunggal, beberapa tugas penyiapan mengharuskan Anda memiliki akses ke host Linux. Host dapat berupa mesin lokal atau VM yang berjalan di jaringan Virtual Private Cloud Anda.
Pertama, download dan siapkan file konfigurasi dan contoh skrip.
Login ke host Linux yang Anda gunakan selama proses penyiapan.
Download arsip file yang diperlukan ke host Linux dan ekstrak arsip tersebut:
wget https://storage.googleapis.com/traffic-director/traffic-director-xdsv3.tar.gz tar -xzvf traffic-director-xdsv3.tar.gz; cd traffic-director-xdsv3
Arsip berisi file berikut:
- sidecar.env – File konfigurasi dengan variabel lingkungan.
- iptables.sh – Skrip untuk menyiapkan aturan netfilter.
- bootstrap_template.yaml – File template bootstrap untuk Envoy.
- run.sh – Skrip tingkat teratas yang menggunakan file konfigurasi
sidecar.env
untuk menyiapkaniptables
guna melakukan intersepsi dan menjalankan proxy sidecar Envoy.
Di setiap host yang menjalankan proxy file bantuan, buat pengguna sistem untuk menjalankan proses proxy Envoy. Ini adalah pengguna proxy Envoy. Login dinonaktifkan untuk pengguna proxy Envoy.
sudo adduser --system --disabled-login envoy
Edit file
sidecar.env
untuk mengubah konfigurasi. Baca komentar inline dalam file konfigurasi untuk mengetahui deskripsi mendetail dari setiap variabel.- Dalam file
sidecar.env
, tetapkan variabelENVOY_USER
ke nama pengguna yang Anda pilih sebagai pengguna proxy Envoy.
- Dalam file
Selanjutnya, untuk setiap host VM yang menjalankan aplikasi menggunakan Cloud Service Mesh, lakukan langkah-langkah berikut:
- Salin seluruh direktori
traffic-director-xdsv3
dengan filesidecar.env
yang diubah ke setiap host VM yang menjalankan aplikasi yang Anda harapkan akan menggunakan Cloud Service Mesh. - Tambahkan skrip
run.sh
ke skrip startup sistem Anda, yang memastikan bahwa skrip dijalankan setelah setiap VM dimulai ulang. Di setiap host VM, jalankan skrip
run.sh
:cd traffic-director-xdsv3 sudo ./run.sh start
Pastikan proxy Envoy dimulai dengan benar.
sudo ./run.sh status
Anda akan melihat output berikut:
OK: Envoy seems to be running. OK: Traffic interception seems to be enabled.
Anda dapat memverifikasi arah intersepsi traffic menggunakan hal berikut:
sudo iptables -S -t nat | grep ISTIO_REDIRECT
Berikut adalah output yang diinginkan:
-N ISTIO_REDIRECT -A ISTIO_OUTPUT -j ISTIO_REDIRECT -A ISTIO_REDIRECT -p tcp -j REDIRECT --to-ports 15001`
Peta aturan perutean
Ada dua cara untuk mengonfigurasi pemilihan rute di peta aturan pemilihan rute.
Anda dapat mengaktifkan pemilihan rute berdasarkan VIP tujuan dan port layanan
yang sebenarnya. Jika Anda mengonfigurasi VIP layanan sebagai parameter IPAddress
dari aturan penerusan, hanya traffic yang dituju ke alamat ini, dan port terkait, yang dicocokkan, dan dirutekan, berdasarkan parameter host dan jalur yang ditentukan dalam peta URL.
Atau, Anda dapat menetapkan alamat aturan penerusan ke 0.0.0.0
.
Tindakan ini akan mengonfigurasi proxy agar hanya mencocokkan traffic berdasarkan port tujuan, terlepas dari alamat IP tujuan permintaan. Traffic kemudian
diarahkan berdasarkan parameter host dan jalur yang ditentukan di peta URL.
Berdasarkan kedua pendekatan ini, nama host, seperti yang dikonfigurasi dalam aturan host,
yang terkait dengan VIP tujuan dan pasangan port, atau dengan port tujuan
(jika VIP adalah 0.0.0.0
), harus unik dalam konfigurasi mesh layanan Anda.
Artinya, Anda tidak dapat memiliki dua layanan yang berbeda, dengan kumpulan backend yang berbeda, yang keduanya menggunakan nama host yang sama.
Terlepas dari metode yang dipilih, traffic ke VIP yang di-resolve oleh nama host/FQDN layanan Anda, dan port yang di-listen oleh layanan Anda, harus di-intercept dan dialihkan ke proxy sidecar. Lihat Mengonfigurasi satu VM Compute Engine untuk Cloud Service Mesh guna mengetahui detail konfigurasi host lengkap.
Setiap aturan penerusan di jaringan VPC harus memiliki kombinasi alamat IP dan port yang unik per jaringan VPC, termasuk alamat 0.0.0.0
. Jika Anda membuat lebih dari satu aturan penerusan dengan alamat IP dan port yang sama di jaringan VPC tertentu, hanya aturan penerusan pertama yang valid. Yang lainnya akan
diabaikan.
Agar tidak kehilangan traffic, ikuti bagian Konfigurasi intersepsi traffic lanjutan di bawah.
Konfigurasi intersepsi traffic lanjutan
Jika VM Anda menjalankan aplikasi yang memerlukan akses ke layanan yang dikonfigurasi oleh Cloud Service Mesh, Anda harus menginstal proxy sidecar dan mengonfigurasi intersepsi traffic di VM untuk mengizinkan proxy sidecar mengelola pemilihan rute traffic ke backend layanan tersebut.
Jika mencegat semua traffic VM keluar tidak dapat diterima untuk deployment, Anda dapat mengalihkan traffic tertentu ke proxy sidecar, sementara traffic lainnya akan mengikuti rute reguler yang ditentukan oleh konfigurasi jaringan host.
Untuk melakukannya, ubah penyiapan host VM Compute Engine dalam prosedur Penyiapan Cloud Service Mesh dengan VM dan deployment Envoy manual sebagai berikut:
Tentukan rentang alamat IP yang harus di-resolve oleh layanan yang dikontrol Cloud Service Mesh. Traffic yang dituju ke alamat IP ini dicegat dan dialihkan ke proxy sidecar. Rentang ini khusus untuk deployment Anda.
Di file
sidecar.env
, tetapkan nilaiSERVICE_CIDR
ke rentang ini. Traffic ke alamat IP ini dialihkan oleh netfilter ke proxy sidecar dan di-load balancing sesuai dengan konfigurasi yang disediakan oleh Cloud Service Mesh.Proxy sidecar tidak sepenuhnya diperlukan untuk berjalan sebagai pengguna khusus yang dikecualikan dari intersepsi traffic. Namun, hal ini tetap direkomendasikan.
Setelah Anda menjalankan skrip
run.sh
, seperti yang diarahkan dalam prosedur utama,iptables
dikonfigurasi hanya untuk intersepsi dan pengalihan rentang tertentu ini.Jalankan perintah berikut untuk memverifikasi bahwa netfilter dikonfigurasi dengan benar. Untuk ${SERVICE_CIDR}, ganti nilai yang Anda konfigurasi sebagai rentang alamat IP yang dicegat.
sudo iptables -L -t nat | grep -E "(ISTIO_REDIRECT).+${SERVICE_CIDR})"