Service Mesh menyediakan tiga metode untuk mengakses layanan eksternal: mengonfigurasi kebijakan traffic outbound, membuat service entry, dan mengonfigurasi Blok CIDR untuk intersepsi traffic. Topik ini menjelaskan cara mengelola akses ke layanan eksternal dari instans Service Mesh.
Tetapkan kebijakan traffic outbound
Di Service Mesh, Anda dapat menetapkan Outbound Traffic Policy untuk mengontrol akses ke layanan eksternal, yaitu layanan yang tidak didefinisikan dalam registrasi layanan internal Istio.
Login ke Konsol ASM, klik nama instans ASM yang dituju, lalu di panel navigasi kiri pilih Instance Information > Network Status untuk melihat layanan dalam registrasi layanan Istio.
-
Jika kebijakan ini diatur ke ALLOW_ANY, proxy sidecar mengizinkan permintaan passthrough ke layanan yang tidak dikenal. Hal ini memberikan akses langsung ke layanan eksternal tetapi mengorbankan pemantauan dan kontrol traffic tingkat mesh.
PentingKami sangat menyarankan untuk menghindari metode ini saat mengakses layanan eksternal seperti database guna mencegah konflik akses.
Definisikan service entry untuk setiap layanan eksternal guna mengontrol traffic secara eksplisit dan mencegah potensi masalah.
-
Jika kebijakan ini diatur ke REGISTRY_ONLY, proxy sidecar memblokir traffic ke host mana pun yang tidak didefinisikan sebagai layanan atau service entry dalam mesh.
-
Login ke Konsol ASM.
-
Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, temukan instans ASM yang ingin dikonfigurasi. Klik nama instans ASM tersebut atau klik Manage di kolom Actions.
-
Pada halaman detail instans ASM, di panel navigasi kiri pilih .
-
Pada halaman Configure the agent parameters of the injected Sidecar, di tab global, klik Outbound Traffic Policy, atur Outbound Traffic Policy ke ALLOW_ANY, lalu klik Update Settings.
Dalam kontainer aplikasi tempat proxy sidecar diinjeksikan, jalankan perintah curl untuk mengakses layanan HTTP atau HTTPS eksternal. Perintah tersebut akan mengembalikan respons sukses.
-
Akses layanan HTTP eksternal.
curl -I http://www.aliyun.com/Output yang diharapkan:
HTTP/1.1 301 Moved Permanently server: envoy date: Mon, 07 Sep 2020 09:28:54 GMT content-type: text/html content-length: 239 location: https://www.aliyun.com/ eagleeye-traceid: 0be3e0a615994709353116335ea5ea timing-allow-origin: * x-envoy-upstream-service-time: 67 -
Akses layanan HTTPS eksternal.
curl -I https://www.aliyun.com/Output yang diharapkan:
HTTP/2 200 server: Tengine date: Mon, 07 Sep 2020 09:16:31 GMT content-type: text/html; charset=utf-8 vary: Accept-Encoding vary: Accept-Encoding strict-transport-security: max-age=31536000 x-download-options: noopen x-content-type-options: nosniff x-xss-protection: 1; mode=block x-readtime: 0 eagleeye-traceid: 0b57ff8715994701916963132ec7ad strict-transport-security: max-age=0 timing-allow-origin: *
-
Konfigurasi service entry
Jika Anda menetapkan Outbound Traffic Policy ke REGISTRY_ONLY, menjalankan perintah curl dari kontainer aplikasi dengan proxy sidecar yang diinjeksikan untuk mengakses layanan HTTP atau HTTPS eksternal akan gagal.
-
Akses layanan HTTP eksternal.
curl -I http://www.aliyun.com/Output yang diharapkan:
HTTP/1.1 502 Bad Gateway date: Mon, 07 Sep 2020 09:25:58 GMT server: envoy transfer-encoding: chunked -
Akses layanan HTTPS eksternal.
curl -I https://www.aliyun.com/Output yang diharapkan:
curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to www.aliyun.com:443
Gunakan service entry untuk mengaktifkan akses terkontrol ke layanan publik eksternal. Pendekatan ini memungkinkan Anda mengakses layanan eksternal sekaligus mempertahankan kemampuan pemantauan dan kontrol traffic Istio.
-
Buat service entry.
-
Login ke Konsol ASM.
-
Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, temukan instans ASM yang ingin dikonfigurasi. Klik nama instans ASM tersebut atau klik Manage di kolom Actions.
-
Pada halaman detail instans ASM, di panel navigasi kiri pilih . Pada halaman yang muncul, klik Create from YAML.
-
Pilih namespace, tempel konten berikut ke dalam kotak teks, lalu klik Create.
Tetapkan bidang hosts sesuai kebutuhan Anda. Dalam contoh ini, hosts diatur ke www.aliyun.com.
apiVersion: networking.istio.io/v1alpha3 kind: ServiceEntry metadata: name: aliyun-com-ext spec: hosts: - 'www.aliyun.com' ports: - number: 80 name: http protocol: HTTP - number: 443 name: https protocol: HTTPS resolution: DNS location: MESH_EXTERNAL
-
-
Akses kembali layanan HTTP atau HTTPS eksternal. Perintah sekarang akan mengembalikan respons sukses.
-
Akses layanan HTTP eksternal.
curl -I http://www.aliyun.com/Output yang diharapkan:
HTTP/1.1 301 Moved Permanently server: envoy date: Mon, 07 Sep 2020 09:49:17 GMT content-type: text/html content-length: 239 location: https://www.aliyun.com/ eagleeye-traceid: 0be3e0a915994721583014504e7b31 timing-allow-origin: * x-envoy-upstream-service-time: 66 -
Akses layanan HTTPS eksternal.
curl -I https://www.aliyun.com/Output yang diharapkan:
HTTP/2 200 server: Tengine date: Mon, 07 Sep 2020 09:49:31 GMT content-type: text/html; charset=utf-8 vary: Accept-Encoding vary: Accept-Encoding strict-transport-security: max-age=31536000 x-download-options: noopen x-content-type-options: nosniff x-xss-protection: 1; mode=block x-readtime: 1 eagleeye-traceid: 0be3e0b115994721709577294ed9e8 strict-transport-security: max-age=0 timing-allow-origin: *
-
-
Buat virtual service.
-
Login ke Konsol ASM.
-
Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, temukan instans ASM yang ingin dikonfigurasi. Klik nama instans ASM tersebut atau klik Manage di kolom Actions.
-
Pada halaman detail instans ASM, di panel navigasi kiri pilih . Pada halaman yang muncul, klik Create from YAML.
-
Pilih namespace, tempel konten berikut ke dalam kotak teks, lalu klik Create.
Buat aturan routing untuk layanan eksternal yang didefinisikan oleh service entry. Contoh ini menambahkan aturan untuk menyisipkan fixedDelay pada panggilan ke layanan www.aliyun.com.
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: aliyun-com-ext spec: hosts: - 'www.aliyun.com' http: - fault: delay: percent: 100 fixedDelay: 5s route: - destination: host: www.aliyun.com weight: 100
-
-
Verifikasi bahwa aturan routing aktif.
Waktu real dalam output adalah 5,07 detik, yang menunjukkan bahwa aturan routing aktif.
time curl -o /dev/null -s -w "%{http_code}\n" http://www.aliyun.com/Output yang diharapkan:
301 real 0m 5.07s user 0m 0.00s sys 0m 0.00s
Tetapkan rentang IP untuk intersepsi traffic
Anda dapat menentukan rentang IP untuk intersepsi traffic oleh proxy sidecar. Traffic ke alamat IP di luar rentang tersebut melewati proxy sidecar dan langsung menuju tujuan.
Di Service Mesh, Anda dapat mengonfigurasi Addresses to Which External Access Is Redirected to Sidecar Proxy. Biasanya, Anda mengatur nilai ini ke CIDR layanan kluster Kubernetes Anda. Artinya, traffic ke layanan dalam kluster diintersepsi oleh Service Mesh, sedangkan traffic ke tujuan di luar kluster melewati Service Mesh.
-
Login ke Konsol ASM.
-
Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, temukan instans ASM yang ingin dikonfigurasi. Klik nama instans ASM tersebut atau klik Manage di kolom Actions.
-
Pada halaman detail instans ASM, di panel navigasi kiri pilih .
-
Pada tab global halaman Configure the agent parameters of the injected Sidecar, klik Enable/Disable Sidecar Proxy by Ports or IP Addresses. Di kotak teks Addresses to Which External Access Is Redirected to Sidecar Proxy, masukkan Blok CIDR yang akan diintersepsi, lalu klik Update Settings.
Sebagai alternatif, Anda dapat memasukkan Blok CIDR ke dalam kotak teks Addresses to Which External Access Is Not Redirected to Sidecar Proxy. Dalam kasus ini, proxy sidecar mengintersepsi traffic ke semua Blok CIDR lainnya.
CatatanSecara default, bidang Addresses to Which External Access Is Redirected to Sidecar Proxy diatur ke *, yang berarti proxy sidecar mengintersepsi seluruh traffic outbound. Anda dapat mengaturnya ke rentang IP tertentu sesuai kebutuhan. Praktik umum adalah mengaturnya ke CIDR layanan kluster Kubernetes Anda.