Istio Egress Gateway: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya | Dewa234
Istio Egress Gateway: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya
Dalam arsitektur microservices modern, komunikasi aplikasi Dewa234 tidak hanya terjadi antar-service yang berada di dalam Kubernetes atau Service Mesh. Banyak aplikasi juga membutuhkan akses menuju layanan eksternal seperti API pihak ketiga, payment gateway, cloud service, database eksternal, sistem legacy, SaaS, dan berbagai layanan yang berada di luar cluster.
Traffic yang keluar dari Service Mesh tersebut dikenal sebagai egress traffic. Jika traffic keluar dibiarkan langsung dari masing-masing workload menuju internet atau jaringan eksternal, administrator dapat mengalami kesulitan dalam melakukan monitoring, pengamanan, logging, dan pengendalian akses.
Istio menyediakan Egress Gateway untuk membantu mengatasi kebutuhan tersebut. Egress Gateway menyediakan titik keluar khusus dari service mesh sehingga traffic menuju external service dapat diarahkan melalui gateway yang terkontrol.
Dengan pendekatan tersebut, organisasi dapat membangun arsitektur egress yang lebih terstruktur. Traffic dari berbagai microservices dapat diarahkan melalui satu atau beberapa gateway sebelum diteruskan ke external network.
Apa Itu Istio Egress Gateway?
Istio Egress Gateway adalah komponen Istio yang digunakan untuk menyediakan titik keluar khusus bagi traffic yang meninggalkan service mesh menuju jaringan atau service eksternal.
Berbeda dengan sidecar proxy yang berjalan bersama workload, Egress Gateway berjalan sebagai gateway khusus yang menjadi jalur keluar dari mesh.
Microservice
|
v
Envoy Sidecar
|
v
Istio Egress Gateway
|
v
External Network
|
v
External Service
Dengan model tersebut, workload tidak harus melakukan koneksi langsung ke external service. Traffic dapat terlebih dahulu diarahkan ke Egress Gateway sehingga organisasi mempunyai titik kontrol tambahan terhadap komunikasi keluar.
Egress Gateway sangat berguna pada lingkungan production yang membutuhkan kontrol terhadap external traffic, terutama ketika organisasi memiliki persyaratan keamanan, compliance, audit, dan observability yang ketat.
Mengapa Istio Egress Gateway Dibutuhkan?
Secara sederhana, microservice dapat saja melakukan koneksi langsung ke internet melalui sidecar proxy. Namun, pendekatan tersebut membuat setiap workload memiliki jalur keluar sendiri.
Internet
^
|
+------------+------------+
| | |
| | |
Service A Service B Service C
| | |
Proxy A Proxy B Proxy C
Pada arsitektur tersebut, administrator harus mengawasi banyak titik keluar.
Dengan Egress Gateway, traffic dapat dikonsolidasikan.
Service A ----\ Service B -----+----> Egress Gateway ----> Internet Service C ----/
Model ini memberikan satu titik kontrol yang dapat digunakan untuk routing, monitoring, logging, dan penerapan kebijakan jaringan keluar.
Konsep Egress Traffic pada Istio
Egress traffic adalah traffic yang bergerak dari workload di dalam service mesh menuju destination di luar mesh.
Contohnya:
- Microservice mengakses REST API eksternal.
- Service mengakses payment gateway.
- Aplikasi mengakses API cloud provider.
- Microservice mengakses layanan SaaS.
- Aplikasi mengakses database di jaringan lain.
- Workload mengakses sistem legacy di luar cluster.
Kubernetes / Service Mesh
|
| Egress Traffic
v
+-------------------------+
| Egress Gateway |
+-------------------------+
|
v
External Network
|
v
External Service
Cara Kerja Istio Egress Gateway
Cara kerja Egress Gateway melibatkan beberapa komponen Istio. Ketika aplikasi membuat request menuju external service, traffic terlebih dahulu diproses oleh Envoy sidecar pada workload.
- Aplikasi membuat request menuju external service.
- Request ditangkap oleh Envoy sidecar.
- Istio menentukan routing berdasarkan konfigurasi traffic management.
- Traffic diarahkan menuju Egress Gateway.
- Envoy pada Egress Gateway menerima request.
- Egress Gateway meneruskan traffic menuju external destination.
- Response dari external service kembali melalui gateway.
- Response diteruskan kembali ke workload pemanggil.
Application
|
v
Envoy Sidecar
|
v
VirtualService
|
v
Egress Gateway
|
v
External Service
|
v
Response
|
v
Application
Dengan alur tersebut, Egress Gateway dapat menjadi titik pengawasan khusus untuk komunikasi keluar dari mesh.
Arsitektur Istio Egress Gateway
+------------------------------------------------------+
| Kubernetes Cluster |
| |
| +-------------+ +-------------------------+ |
| | Microservice| ---> | Envoy Sidecar | |
| +-------------+ +------------+------------+ |
| | |
| v |
| +----------------------+ |
| | Egress Gateway | |
| | Envoy Proxy | |
| +----------+-----------+ |
+----------------------------------|-------------------+
|
v
+------------------+
| External Network |
+--------+---------+
|
v
+------------------+
| External Service |
+------------------+
Pada arsitektur tersebut terdapat dua proxy penting. Proxy pertama adalah sidecar yang berjalan bersama workload, sedangkan proxy kedua adalah Envoy yang berjalan pada Egress Gateway.
Sidecar bertugas mengirimkan traffic menuju gateway, sedangkan Egress Gateway menjadi titik keluar yang meneruskan traffic menuju external destination.
Komponen Istio Egress Gateway
| Komponen | Fungsi |
|---|---|
| Envoy Sidecar | Menangkap dan memproses traffic dari workload. |
| Egress Gateway | Menyediakan titik keluar dari service mesh. |
| Gateway | Mendefinisikan listener dan port yang digunakan gateway. |
| VirtualService | Mengatur routing traffic menuju gateway dan destination. |
| ServiceEntry | Mendaftarkan external service ke service registry Istio. |
| DestinationRule | Mendefinisikan kebijakan traffic untuk destination tertentu. |
Fungsi Istio Egress Gateway
- Menyediakan jalur keluar khusus dari service mesh.
- Mengontrol traffic menuju external service.
- Meningkatkan visibility terhadap outbound traffic.
- Menyediakan titik terpusat untuk logging.
- Mendukung kebutuhan audit traffic.
- Membantu menerapkan kebijakan keamanan egress.
- Mendukung routing menuju external service.
- Mengurangi koneksi langsung dari workload ke internet.
- Mendukung arsitektur network security berlapis.
- Membantu memenuhi kebutuhan compliance tertentu.
Hubungan Egress Gateway dengan ServiceEntry
ServiceEntry dan Egress Gateway sering digunakan bersama, tetapi keduanya mempunyai fungsi berbeda.
| Komponen | Fungsi |
|---|---|
| ServiceEntry | Mendaftarkan external service ke service registry Istio. |
| Egress Gateway | Menyediakan jalur keluar khusus menuju external service. |
Contohnya, sebuah perusahaan ingin mengizinkan microservice mengakses:
api.payment.example.com
ServiceEntry dapat digunakan untuk mendaftarkan hostname tersebut.
Kemudian Egress Gateway digunakan sebagai jalur keluar traffic.
Microservice
|
v
ServiceEntry
|
v
Egress Gateway
|
v
api.payment.example.com
Dengan kombinasi tersebut, external dependency dapat dikelola secara lebih terstruktur.
Istio Egress Gateway dan VirtualService
VirtualService digunakan untuk mengatur bagaimana traffic diarahkan.
Dalam implementasi Egress Gateway, VirtualService dapat digunakan untuk mengarahkan traffic dari workload menuju gateway.
Workload | v VirtualService | v Egress Gateway | v External Service
VirtualService juga dapat digunakan untuk menentukan destination berdasarkan hostname dan port.
Istio Egress Gateway dan DestinationRule
DestinationRule dapat digunakan untuk menerapkan traffic policy terhadap destination tertentu.
Contohnya adalah pengaturan TLS, connection pool, load balancing, atau outlier detection sesuai kebutuhan dan dukungan konfigurasi Istio.
ServiceEntry
|
v
External Destination
|
v
DestinationRule
|
v
Traffic Policy
Penggunaan ketiga resource tersebut dapat membentuk konfigurasi egress yang lebih lengkap.
Implementasi Istio Egress Gateway
Untuk implementasi sederhana, kita dapat membuat ServiceEntry terlebih dahulu untuk mendefinisikan external service.
1. Membuat ServiceEntry
apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
name: external-api
spec:
hosts:
- api.example.com
location: MESH_EXTERNAL
ports:
- number: 443
name: https
protocol: TLS
resolution: DNS
Konfigurasi tersebut mendaftarkan api.example.com sebagai external service.
2. Membuat Gateway untuk Egress
apiVersion: networking.istio.io/v1
kind: Gateway
metadata:
name: external-egress-gateway
spec:
selector:
istio: egressgateway
servers:
- port:
number: 443
name: tls
protocol: TLS
hosts:
- api.example.com
Gateway tersebut mendefinisikan listener untuk external destination.
Selector harus sesuai dengan label gateway deployment yang digunakan pada environment Istio.
3. Membuat VirtualService
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: external-api-routing
spec:
hosts:
- api.example.com
gateways:
- mesh
- external-egress-gateway
tls:
- match:
- gateways:
- mesh
port: 443
sniHosts:
- api.example.com
route:
- destination:
host: external-egress-gateway.istio-system.svc.cluster.local
port:
number: 443
- match:
- gateways:
- external-egress-gateway
port: 443
sniHosts:
- api.example.com
route:
- destination:
host: api.example.com
port:
number: 443
VirtualService tersebut menggambarkan pola routing dari workload menuju Egress Gateway kemudian menuju external service.
Konfigurasi aktual dapat berbeda berdasarkan mode TLS, namespace, service name, dan desain deployment yang digunakan.
4. Menerapkan Konfigurasi
Simpan konfigurasi pada file YAML kemudian jalankan:
kubectl apply -f service-entry.yaml kubectl apply -f egress-gateway.yaml kubectl apply -f virtual-service.yaml
Periksa resource:
kubectl get serviceentry kubectl get gateway kubectl get virtualservice
Pastikan seluruh konfigurasi berhasil dibuat sebelum melakukan pengujian traffic.
Contoh Alur Request Egress Gateway
Application
|
| HTTPS Request
v
Envoy Sidecar
|
| Routing
v
Egress Gateway
|
| HTTPS
v
api.example.com
|
v
External API
Response kemudian berjalan melalui jalur yang berlawanan:
External API
|
v
Egress Gateway
|
v
Envoy Sidecar
|
v
Application
Egress Gateway untuk External API
Salah satu penggunaan paling umum adalah membatasi external API yang boleh diakses oleh microservice.
Misalnya organisasi hanya mengizinkan:
- Payment API.
- Shipping API.
- Notification API.
- Cloud Storage API.
- Monitoring API.
Administrator dapat mendefinisikan destination tersebut melalui ServiceEntry dan mengatur jalur keluar menggunakan Egress Gateway.
Microservice
|
+---- Payment API
|
+---- Shipping API
|
+---- Notification API
|
v
Egress Gateway
Egress Gateway untuk Security
Salah satu alasan utama organisasi menggunakan Egress Gateway adalah kebutuhan keamanan.
Jika setiap workload dapat melakukan koneksi langsung ke internet, maka kontrol terhadap outbound traffic menjadi lebih kompleks.
Dengan Egress Gateway:
Workload | v Sidecar | v Egress Gateway | +---- Logging | +---- Monitoring | +---- Policy | +---- Network Control | v Internet
Administrator dapat memusatkan berbagai kebutuhan pengawasan pada gateway.
Namun, Egress Gateway sebaiknya tetap dipadukan dengan firewall, NetworkPolicy, cloud security group, dan kontrol jaringan lainnya jika diperlukan.
Egress Gateway dan REGISTRY_ONLY
Istio menyediakan pengaturan outbound traffic policy seperti ALLOW_ANY dan REGISTRY_ONLY.
| Mode | Penjelasan |
|---|---|
| ALLOW_ANY | Traffic menuju destination eksternal yang tidak terdaftar dapat diteruskan. |
| REGISTRY_ONLY | Destination eksternal harus dikenal oleh registry Istio. |
Dalam lingkungan yang membutuhkan kontrol lebih ketat, REGISTRY_ONLY dapat digunakan bersama ServiceEntry.
REGISTRY_ONLY
|
v
ServiceEntry
|
v
Egress Gateway
|
v
Allowed External Service
Pendekatan tersebut membantu membuat daftar external dependency menjadi lebih eksplisit.
Egress Gateway untuk Audit dan Monitoring
Egress Gateway juga dapat menjadi titik yang berguna untuk observability.
Karena traffic keluar melewati gateway, administrator dapat memusatkan pengumpulan informasi seperti:
- Destination host.
- Port.
- Protocol.
- Request traffic.
- Response status.
- Latency.
- Error.
- Traffic volume.
Applications
|
v
Egress Gateway
|
+---- Metrics
|
+---- Logs
|
+---- Tracing
|
v
External Service
Data tersebut dapat membantu proses troubleshooting dan audit komunikasi keluar.
Manfaat Istio Egress Gateway
- Memberikan titik keluar terpusat.
- Membantu mengontrol outbound traffic.
- Meningkatkan visibility terhadap external dependency.
- Mendukung kebutuhan audit.
- Mendukung logging terpusat.
- Mendukung monitoring traffic.
- Membantu mengurangi koneksi langsung workload ke internet.
- Dapat dikombinasikan dengan ServiceEntry.
- Dapat dikombinasikan dengan VirtualService.
- Dapat dikombinasikan dengan DestinationRule.
- Mendukung arsitektur keamanan berlapis.
Kelebihan Istio Egress Gateway
- Terintegrasi dengan Istio Service Mesh.
- Menyediakan titik kontrol egress.
- Mendukung external service.
- Dapat digunakan bersama ServiceEntry.
- Mendukung traffic management.
- Membantu meningkatkan observability.
- Mendukung centralized outbound traffic.
- Cocok untuk lingkungan enterprise.
- Dapat membantu kebutuhan compliance.
Kekurangan Istio Egress Gateway
- Menambah komponen pada arsitektur.
- Meningkatkan kompleksitas konfigurasi.
- Membutuhkan pemahaman mengenai Istio traffic management.
- Kesalahan konfigurasi routing dapat menyebabkan traffic gagal.
- Gateway menjadi komponen tambahan yang harus dimonitor.
- Membutuhkan resource CPU dan memory.
- Konfigurasi TLS dapat menjadi kompleks.
- Tidak menggantikan firewall atau network security secara keseluruhan.
Best Practice Istio Egress Gateway
- Gunakan Egress Gateway hanya jika memang membutuhkan kontrol egress terpusat.
- Daftarkan external service melalui ServiceEntry.
- Gunakan hostname yang spesifik.
- Hindari wildcard yang terlalu luas.
- Gunakan REGISTRY_ONLY untuk kebutuhan outbound control yang ketat.
- Monitor gateway secara berkala.
- Gunakan logging untuk troubleshooting.
- Gunakan NetworkPolicy sebagai lapisan tambahan jika diperlukan.
- Dokumentasikan external dependency.
- Batasi akses gateway sesuai kebutuhan.
- Uji perubahan routing sebelum diterapkan ke production.
Troubleshooting Istio Egress Gateway
1. External Service Tidak Bisa Diakses
Periksa apakah ServiceEntry sudah dibuat.
kubectl get serviceentry
Pastikan hostname dan port sesuai dengan external service.
2. Gateway Tidak Menerima Traffic
Periksa deployment dan service Egress Gateway.
kubectl get pods -n istio-system kubectl get svc -n istio-system
3. VirtualService Tidak Mengarahkan Traffic
Periksa hostname, gateway, port, dan protocol pada VirtualService.
4. Traffic Terblokir pada REGISTRY_ONLY
Pastikan external destination sudah terdaftar melalui ServiceEntry.
5. TLS Error
Periksa konfigurasi protocol, port, SNI, TLS mode, dan destination hostname.
6. Gateway Tidak Terpilih
Periksa selector pada resource Gateway.
selector: istio: egressgateway
Label tersebut harus sesuai dengan label deployment gateway yang digunakan.
7. Response Timeout
Periksa konektivitas dari gateway menuju external destination, firewall, DNS, routing, serta aturan jaringan.
Istio Egress Gateway pada Arsitektur Production
Internet
|
v
+-------------------+
| External Services |
+---------+---------+
|
|
+---------v---------+
| Egress Gateway |
| Envoy |
+---------+---------+
^
|
+---------+---------+
| Service Mesh |
| Envoy Sidecars |
+---------+---------+
^
|
+--------------+--------------+
| | |
v v v
Service A Service B Service C
Arsitektur tersebut memungkinkan berbagai microservice menggunakan jalur egress yang lebih terkontrol.
Dalam deployment production berskala besar, gateway juga dapat dibuat lebih dari satu instance untuk meningkatkan availability dan kemampuan menangani traffic.
Perbedaan Istio Ingress Gateway dan Egress Gateway
| Aspek | Ingress Gateway | Egress Gateway |
|---|---|---|
| Arah Traffic | Masuk ke mesh. | Keluar dari mesh. |
| Sumber | External client. | Workload dalam mesh. |
| Tujuan | Service dalam mesh. | External service. |
| Fokus | Inbound traffic. | Outbound traffic. |
| Contoh | Internet menuju API. | API menuju external payment gateway. |
Keduanya dapat digunakan secara bersamaan untuk membangun arsitektur traffic management dua arah.
Contoh Arsitektur Ingress dan Egress
Internet
|
v
Ingress Gateway
|
v
Internal Services
|
v
Application Logic
|
v
Egress Gateway
|
v
External APIs
Ingress Gateway menangani traffic yang masuk ke mesh, sedangkan Egress Gateway menangani traffic yang keluar dari mesh.
FAQ Istio Egress Gateway
1. Apa itu Istio Egress Gateway?
Istio Egress Gateway adalah gateway yang menyediakan jalur keluar khusus dari Service Mesh menuju external network atau external service.
2. Apa fungsi utama Egress Gateway?
Fungsi utamanya adalah menyediakan titik kontrol terpusat untuk outbound traffic dari service mesh.
3. Apakah Egress Gateway wajib digunakan?
Tidak. Istio dapat menangani outbound traffic tanpa Egress Gateway. Gateway digunakan ketika organisasi membutuhkan kontrol, routing, monitoring, atau keamanan egress yang lebih terpusat.
4. Apa hubungan ServiceEntry dengan Egress Gateway?
ServiceEntry digunakan untuk mendaftarkan external service, sedangkan Egress Gateway digunakan sebagai jalur keluar menuju service tersebut.
5. Apakah Egress Gateway bisa digunakan dengan VirtualService?
Ya. VirtualService dapat digunakan untuk mengatur routing traffic dari workload menuju Egress Gateway dan kemudian menuju external service.
6. Apakah Egress Gateway bisa digunakan dengan DestinationRule?
Ya. DestinationRule dapat digunakan untuk menerapkan kebijakan traffic terhadap destination sesuai kebutuhan.
7. Apakah Egress Gateway meningkatkan keamanan?
Egress Gateway dapat membantu meningkatkan kontrol terhadap outbound traffic, tetapi bukan pengganti firewall, NetworkPolicy, atau mekanisme keamanan jaringan lainnya.
8. Apa perbedaan Egress Gateway dan Ingress Gateway?
Ingress Gateway digunakan untuk traffic yang masuk ke mesh, sedangkan Egress Gateway digunakan untuk traffic yang keluar dari mesh.
9. Apakah Egress Gateway dapat digunakan untuk external API?
Ya. External API merupakan salah satu use case utama Egress Gateway.
10. Apakah Egress Gateway cocok untuk production?
Ya. Egress Gateway dapat digunakan pada production terutama ketika organisasi membutuhkan outbound traffic yang terkontrol, terpantau, dan terpusat.
Baca Juga
- Service Mesh: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya
- Ambient Mesh: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya
- Waypoint Proxy: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya
- Istio Traffic Management: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya
- Distributed Tracing: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya
- Istio Telemetry: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya
Artikel Selanjutnya
Setelah memahami Istio Egress Gateway, pembahasan berikutnya dapat dilanjutkan ke Istio Ingress Gateway.
Istio Ingress Gateway berfokus pada arah traffic yang berlawanan, yaitu bagaimana request dari luar jaringan atau internet dapat masuk ke Service Mesh dan diteruskan menuju service internal.
External Client
|
v
Ingress Gateway
|
v
Istio Service Mesh
|
v
Internal Service
Kesimpulan
Istio Egress Gateway merupakan komponen penting dalam Istio Service Mesh yang digunakan untuk menyediakan jalur keluar khusus bagi traffic yang meninggalkan mesh menuju external network.
Dengan Egress Gateway, organisasi dapat mengurangi ketergantungan pada koneksi langsung dari setiap workload menuju internet atau external service. Traffic dapat diarahkan melalui gateway khusus sehingga pengelolaan outbound communication menjadi lebih terstruktur.
Egress Gateway dapat digunakan bersama ServiceEntry untuk mendaftarkan external service, VirtualService untuk mengatur routing, dan DestinationRule untuk menerapkan traffic policy.
Kombinasi tersebut memungkinkan organisasi membangun arsitektur egress yang lebih terkontrol dan mudah dipantau.
Selain traffic management, Egress Gateway juga dapat membantu kebutuhan observability, logging, audit, dan security. Namun, gateway bukan pengganti seluruh mekanisme keamanan jaringan. Firewall, NetworkPolicy, security group, dan kontrol jaringan lainnya tetap dapat diperlukan sesuai dengan kebutuhan arsitektur.
Dalam lingkungan yang menggunakan REGISTRY_ONLY, ServiceEntry dapat digunakan untuk memastikan external destination yang diakses telah dikenal oleh service registry Istio. Selanjutnya, Egress Gateway dapat digunakan sebagai jalur keluar yang terkontrol.
Karena itu, Istio Egress Gateway sangat berguna untuk lingkungan microservices yang memiliki banyak external dependency dan membutuhkan kontrol outbound traffic yang lebih baik.
Setelah memahami Egress Gateway, pembahasan berikutnya adalah Istio Ingress Gateway, yaitu komponen yang menangani traffic dari luar menuju service yang berada di dalam Service Mesh.