Skip to main content

Data Flow: Istio Service Mesh

Purpose: For platform engineers and app developers, shows how Istio service mesh augments the base openCenter cluster architecture with mTLS, traffic control, and enhanced observability.

Simplified Overview

Namespace Layout

NamespaceServicesPurpose
istio-systemistiod, Istio GatewayService mesh control plane and ingress
flux-systemSource, Kustomize, Helm, Notification controllersGitOps reconciliation engine
olmOperator Lifecycle Manager, OLM CatalogInstalls and manages operators (Kafka, Keycloak, etc.)
cert-managercert-manager, ClusterIssuersAutomated TLS certificate lifecycle
kyvernoKyverno engine, admission webhookPolicy enforcement (17 baseline policies)
keycloakKeycloak, PostgreSQLIdentity and access management via OIDC
rbac-managerRBAC ManagerDeclarative RBAC from Keycloak group claims
metallb-systemMetalLB speakers, controllerBare-metal load balancer (L2/BGP)
kube-systemkube-vipVirtual IP for control-plane HA (stable API server endpoint)
observabilityPrometheus, Grafana, Alertmanager, Loki, Promtail, Tempo, OTel Collector, Kafka, KialiMetrics, logs, traces, event streaming, alerting, and mesh visualization
longhorn-systemLonghorn Manager, CSI driverDistributed block storage
harborHarbor Core, Registry, TrivyPrivate container registry with vulnerability scanning
headlampHeadlamp UI, branding pluginKubernetes web dashboard with OIDC authentication
veleroVelero serverCluster backup and disaster recovery
customer-appsCustomer deployments + istio-proxy sidecarsApplication workloads with mesh traffic

Data Flow Summary

  • Ingress path: External traffic → MetalLB → Istio Gateway → VirtualService → Application Pod (via sidecar)
  • Service-to-service: Pod A sidecar →|mTLS| Pod B sidecar (certificates issued by istiod)
  • Control-plane HA path: kube-vip elects leader on control-plane nodes → advertises virtual IP → all clients/nodes reach Kubernetes API via stable VIP
  • GitOps path: Git push → FluxCD Source Controller → Kustomize/Helm Controller → Kubernetes API → Resources deployed (including Istio CRDs)
  • Secrets path: SOPS-encrypted YAML in Git → FluxCD decrypts with Age key → Kubernetes Secret created
  • Observability path: Sidecars emit metrics/logs/traces automatically → OpenTelemetry Collector → Kafka → Prometheus + Loki + Tempo → Grafana + Kiali
  • Policy path: Resource admission → Kyverno webhook → validate against ClusterPolicies → admit or reject
  • Auth path: User login → Keycloak OIDC → JWT with group claims → RBAC Manager → RoleBindings → API Server authorization
  • Headlamp path: Operator browser → MetalLB → Istio Gateway → Headlamp UI → Keycloak OIDC login → Kubernetes API (scoped by RBAC)
  • OLM path: FluxCD deploys OLM → OLM installs operators from catalog → operators provision Kafka, Keycloak, and other stateful services
  • Traffic management: VirtualService weight-based routing → canary deployments, traffic shifting, fault injection

Istio-Specific Components

ResourcePurpose
VirtualServiceL7 routing rules (host, path, headers, traffic weights)
DestinationRuleLoad balancing, circuit breaking, connection pool settings
PeerAuthenticationmTLS mode per namespace or workload (STRICT / PERMISSIVE)
AuthorizationPolicyL7 access control (allow/deny by source, path, method)
Gateway (Istio)Ingress listener configuration (ports, TLS, hosts)
ServiceEntryRegister external services into the mesh

Differences from Base Architecture

ConcernBase ClusterWith Istio
Ingress controllerGateway API (Kubernetes-native)Istio Gateway + VirtualService
Service-to-service authNetworkPolicy (L3/L4 only)mTLS with SPIFFE identity (L7)
Traffic shiftingNot supportedVirtualService weights
Circuit breakingNot supportedDestinationRule outlier detection
ObservabilityManual instrumentation for tracesAutomatic trace injection by sidecar
Resource overheadNone~50MB memory + ~2ms latency per sidecar
Mesh visualizationN/AKiali service graph

Alternative Deployment: Istio Gateway Alongside openCenter Gateway API

In this model, the openCenter-managed Gateway API handles platform and non-mesh traffic, while Istio deploys its own gateway for mesh-managed workloads. Both gateways sit behind MetalLB.

Key Differences from Primary Deployment

ConcernPrimary (Istio replaces Gateway API)Alternative (side-by-side)
Platform traffic routingIstio GatewayopenCenter Gateway API (unchanged)
Mesh app traffic routingIstio GatewayIstio Gateway
Headlamp, Grafana, HarborRouted through Istio GatewayRouted through openCenter Gateway API
Sidecars on platform servicesYesNo (only on customer workloads)
Blast radiusFull cluster in meshOnly labeled namespaces in mesh
Migration pathBig-bang (all traffic via Istio)Incremental (opt-in per namespace)

This model is preferred when migrating incrementally — platform services remain on the proven Gateway API path while customer workloads opt into the mesh namespace by namespace.