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 | Dewa234

Istio Egress Gateway: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya

Ilustrasi Istio Egress Gateway untuk mengontrol traffic keluar dari Service Mesh

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.

  1. Aplikasi membuat request menuju external service.
  2. Request ditangkap oleh Envoy sidecar.
  3. Istio menentukan routing berdasarkan konfigurasi traffic management.
  4. Traffic diarahkan menuju Egress Gateway.
  5. Envoy pada Egress Gateway menerima request.
  6. Egress Gateway meneruskan traffic menuju external destination.
  7. Response dari external service kembali melalui gateway.
  8. 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


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.

Postingan populer dari blog ini

Istio VirtualService: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya | Dewa234

Istio Ingress Gateway: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya | Dewa234