Episode 10 memperluas mesh ke luar Kubernetes: ServiceEntry dengan strategi resolusi DNS, STATIC, dan NONE, WorkloadEntry untuk endpoint individual, WorkloadGroup untuk auto-registration, serta mesh expansion untuk menghubungkan VM.

Sejauh ini mesh kita berisi service Kubernetes. Namun dunia nyata tidak serumit itu saja: ada API eksternal, database legacy, dan mesin virtual yang belum mau pindah ke container. Episode 10 ini membahas bagaimana Istio menemukan layanan di luar Kubernetes dan cara menariknya menjadi bagian dari mesh dengan ServiceEntry, WorkloadEntry, dan WorkloadGroup.
Resolusi NONE membuat Envoy meneruskan traffic ke alamat tujuan tanpa melakukan discovery. Cocok saat nama sudah menunjuk ke alamat tetap yang pasti:
apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
name: external-direct
spec:
hosts:
- ext.example.com
ports:
- number: 443
name: https
protocol: TLS
resolution: NONE
location: MESH_EXTERNALresolution: NONE membuat Envoy tidak menanyakan DNS — nama diteruskan langsung sebagai tujuan koneksi. Paling sederhana, tetapi kalian tidak mendapat kontrol endpoint dari Istio.
Dengan STATIC, daftar endpoint ditulis langsung di ServiceEntry:
apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
name: external-payment
spec:
hosts:
- api.payment.internal
addresses:
- 10.99.0.10
ports:
- number: 443
name: https
protocol: TLS
resolution: STATIC
endpoints:
- address: 192.168.50.21
- address: 192.168.50.22
location: MESH_EXTERNALendpoints memberi dua alamat backend yang bisa dipakai Envoy untuk load balancing dan outlier detection. addresses opsional adalah IP virtual yang dipakai untuk memilih ServiceEntry ini.
Dengan DNS, Envoy menanyakan DNS secara berkala:
spec:
hosts:
- api.payment.example.com
ports:
- number: 443
name: https
protocol: TLS
resolution: DNS
location: MESH_EXTERNALresolution: DNS adalah pilihan paling umum: nama di-resolve, IP berubah mengikuti jawaban DNS, dan TTL dikelola Envoy. Perhatikan bahwa di sini Envoy yang melakukan resolusi, bukan aplikasi.
ServiceEntry menghubungkan mesh ke layanan eksternal. Untuk workload (VM, bare-metal) yang ingin menjadi bagian mesh dan diatur kebijakannya, gunakan WorkloadEntry:
apiVersion: networking.istio.io/v1
kind: WorkloadEntry
metadata:
name: vm-legacy-1
namespace: legacy
spec:
address: 10.0.3.15
labels:
app: legacy-app
version: v1
serviceAccount: legacy-sa
network: network-legacyaddress adalah IP VM yang akan menerima traffic. Field labels di sini istimewa: label ini menjadi label workload yang bisa dipakai subset di DestinationRule, persis seperti label Pod Kubernetes.
Mendefinisikan WorkloadEntry satu per satu tidak skala. WorkloadGroup memungkinkan VM mendaftarkan dirinya otomatis:
apiVersion: networking.istio.io/v1
kind: WorkloadGroup
metadata:
name: vm-pool
namespace: legacy
spec:
template:
serviceAccount: legacy-sa
network: network-legacy
metadata:
labels:
app: legacy-appVM yang menjalankan agent Istio akan membuat WorkloadEntry sendiri dari template ini saat terhubung. Setiap VM baru otomatis masuk mesh tanpa edit YAML manual.
Mesh expansion menghubungkan VM ke control plane dengan langkah besar:
istioctl proxy-status.istioctl install --set values.global.meshID=mesh1
ssh vm-legacy "curl -fsSL https://istio.io/downloadIstio | sh -"
scp istio-1.22.1/tools/istioctl.bash vm-legacy:istioctl proxy di VM terhubung ke istiod dan memproses traffic dengan aturan yang sama seperti sidecar di cluster. Perbedaan utamanya: karena VM tidak punya Kubernetes, identitasnya bersumber dari ServiceAccount yang di-embed saat setup.
Info
Untuk produksi, jalankan VM dengan workload identity yang dipisahkan dan jaringan yang jelas. Field network pada WorkloadEntry dan WorkloadGroup menentukan zona jaringan yang dipakai untuk routing multi-network (episode 16).
Episode 10 memperluas jangkauan mesh: ServiceEntry dengan tiga strategi resolusi, WorkloadEntry untuk endpoint non-Kubernetes, WorkloadGroup untuk auto-registration, dan proses mesh expansion untuk membawa VM masuk ke dalam pengaturan traffic dan security yang sama.
Inti yang harus dibawa pulang:
addresses membedakan pemilihan ServiceEntry; endpoints adalah target nyata.network penting untuk arsitektur multi-network.Di episode 11 selanjutnya kita masuk fase security: security basics dengan mTLS, authentication, dan authorization — PeerAuthentication untuk mTLS otomatis, RequestAuthentication untuk JWT, dan AuthorizationPolicy untuk kontrol akses berbasis identitas.