Istio je nejrozšířenější service mesh pro Kubernetes. Vkládá sidecar proxy (Envoy) ke každému podu a tím přebírá kontrolu nad veškerou síťovou komunikací mezi službami. Získáte tak mTLS šifrování, pokročilé traffic management (canary, circuit breaker, retry), detailní observability a bezpečnostní politiky — to vše bez změny aplikačního kódu. Pro enterprise prostředí s desítkami mikroslužeb je to zásadní infrastrukturní vrstva.
Instalace¶
curl -L https://istio.io/downloadIstio | sh -
istioctl install --set profile=demo
kubectl label namespace default istio-injection=enabled
Po povolení injection Istio automaticky přidá Envoy sidecar kontejner ke každému novému podu v namespace. Profil demo je vhodný pro testování, pro produkci použijte profil default nebo custom s optimalizovanými resource limity.
Traffic management¶
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
spec:
hosts: [myapp]
http:
- route:
- destination: { host: myapp, subset: v2 }
weight: 20
- destination: { host: myapp, subset: v1 }
weight: 80
Canary deployment na úrovni service mesh — 20 % provozu jde na novou verzi, 80 % na stávající. Istio podporuje routing podle HTTP headers, cookies nebo query parametrů, což umožňuje směrovat specifické uživatele nebo testovací provoz na novou verzi. Circuit breaker chrání služby před kaskádovými selháními a automatické retry zvyšují resilience.
mTLS¶
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
spec:
mtls: { mode: STRICT }
Mutual TLS šifruje veškerou komunikaci mezi pody a zároveň autentizuje obě strany. V STRICT módu je nešifrovaná komunikace odmítnuta. Istio automaticky rotuje certifikáty a spravuje celý PKI lifecycle bez zásahu administrátora.
Observability¶
- Kiali — vizuální dashboard zobrazující topologii služeb a health
- Jaeger — distribuovaný tracing pro sledování requestů napříč službami
- Grafana — metriky latence, error rate a throughput per služba
istioctl dashboard kiali
Istio pro enterprise¶
Začněte s traffic management a mTLS — to přinese největší hodnotu. Observability přidávejte postupně. Istio má vyšší resource overhead (sidecar per pod), proto vyhodnoťte i lehčí alternativy jako Linkerd pro jednodušší prostředí.