Máme v clusteru 30 mikroslužeb. Každá potřebuje TLS, retry logiku, circuit breaking, distributed tracing. Implementovat to v každé službě zvlášť? Istio slibuje řešení na infrastrukturní úrovni.
Co je service mesh¶
Service mesh je infrastrukturní vrstva, která řídí komunikaci mezi službami. Istio používá jako sidecar proxy Envoy od Lyft. Envoy zachycuje veškerý síťový provoz podu a aplikuje konfiguraci z Istio control plane.
Mutual TLS — šifrování bez práce¶
S Istio získáte mutual TLS mezi všemi službami „zadarmo”. Istio automaticky generuje certifikáty pro každý pod, rotuje je a zajišťuje šifrovanou a autentizovanou komunikaci.
Traffic management¶
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: api-server
spec:
hosts:
- api-server
http:
- route:
- destination:
host: api-server
subset: v1
weight: 95
- destination:
host: api-server
subset: v2
weight: 5
- Canary deployment — 5 % provozu na novou verzi
- Circuit breaking — automaticky odpojte nefunkční službu
- Fault injection — simulujte výpadky pro chaos testing
Resource overhead¶
Každý pod dostane Envoy sidecar, ~50 MB RAM a ~3 ms latence navíc. Pro 100 podů je to 5 GB RAM. Mixer je úzké hrdlo — zpracovává telemetrii synchronně.
Verdikt¶
Istio je verze 0.4 — pre-release. Nasadili jsme ho na staging. Pro produkci čekáme na stabilní 1.0 release plánovaný na léto 2018.
Service mesh je budoucnost mikroslužeb¶
Istio řeší reálné problémy — mutual TLS, canary deploymenty, observability bez změny kódu. Sledujeme vývoj k 1.0 s nadšením.