According to Wikipedia, it is
"In software architecture, a service mesh is a dedicated infrastructure layer for facilitating service-to-service communications between microservices, often using a sidecar proxy."
"Ingress exposes HTTP and HTTPS routes from outside the cluster to services within the cluster. Traffic routing is controlled by rules defined on the Ingress resource."
Istio is all about traffic. Whether that traffic is between the Microservices within a Kubernetes* cluster (East-West) or traffic entering/leaving the Kubernetes* Cluster (Ingress traffic or North-South).
*"(Istio can be used in other Orchestration platforms also besides Kubernetes)."
- Service Mesh (E-W) & Ingress Gateway (N-S)
- Open Sourced by Google, IBM & Lyft in May 2017
- Service Mesh designed to connect, secure and monitor microservices
- Traffic Management
- Load balancing
- Rate limiting
- Failure recovery
- Fault Injection
- Circuit Breaker
- Monitoring & Alerts
- Canary rollouts
- Feature Flag Deployment
- Access control
- End-to-end authentication
- Security in transit- mTLS
- Ingress Gateway
- Prefix based traffic routing
For this article, I came up with a Made up use case. I have created 4 Microservice. Each is written in .NET Core and packaged as Docker.
The Healthcare microservice internally depends on benefits which depend on Insurance.
The Hospital microservice does not talk to any other microservice.
The Healthcare and Hospital microservice needs to be invoked from the outside world.
Below is the diagram of the microservices and their interaction.
So I installed Istio in my cluster. Enabled the namespace to inject Istio pods.
The installation had also installed Kiali.
- Which microservices are part of my service mesh?
- How are they connected?
- How are they performing?
- How can I operate on them?
Couple of things you can do with Kiali is do Routing
- Weighted Routing between different version of your Microservice
- A more interesting and more useful part is the ability to Feature Flag release based on HTTP Header Routing.
Below are the configurations.