A service mesh is a dedicated and configurable infrastructure layer that handles the communication between services without having to change the code in a microservice architecture.
Using service mesh, it’s easy to handle security, manage traffic, control observability, and discover services.
Istio is a service mesh — a modernized service networking layer that provides a transparent and language-independent way to flexibly and easily automate application network functions.
Istio manages traffic flows between services, enforces access policies, and aggregates telemetry data, all without requiring changes to the application code.
Istio provides a uniform way to connect, manage, and secure microservices and enables developers to focus on delivering business value.
Istio simplifies service-to-service network operations like traffic management, authorization, and encryption, as well as auditing and observability.
An Istio service mesh can be logically split into two components, a data plane and a control plane.
- Data Plane — The Istio data plane is typically composed of Envoy proxies that are deployed as sidecars within each container on the Kubernetes pod.
- Control Plane — The control plane manages and configures the proxies to route traffic. It also stores and manages the Istio configuration.
Istio has 2 core component -
- Envoy - Proxy Component, deployed as sidecar to interact with interact with data plane traffic.
- Istiod - Istiod converts high level routing rules that control traffic behaviour into Envoy-specific configurations and propagates them to the sidecars at runtime.
Istio Control plane functionality is consolidated into a single binary called Istiod. This contains a few components.
- Pilot - Responsible for configuring the data plane and communicating with the Envoy sidecars.
- Citadel - Allows developers to build zero-trust environments based on service identity rather than network controls. It helps you in securing communication between k8s components.
- Galley - Provides configuration management services for Istio. It’s the interface for the underlying APIs with which the Istio control plane interacts. If new policies come in picture then Galley validates, process and deploy them.
Istio Data plane components are made of Envoy Proxies. These are layer 7 proxy. All traffic moves through these Envoy proxies. Istio provides few addons for monitoring and visualising this data. Responsible for :
- Service Discovery
- Health Checks
- Routing
- Load balancing
- Authentication
- Authorisation
- Observability
Follow this guide to install and configure an Istio mesh using Helm.
The Helm charts used in this guide are the same underlying charts used when installing Istio via Istioctl.
Istio Installation with Helm is currently considered alpha.
Reference: Istio Helm Chart
- Create a namespace istio-system for Istio components using namespace.yaml
- Install the Istio base chart which contains cluster-wide resources used by the Istio control plane.
- Install the Istio discovery chart which contains the Istio control plane components.
- Install the Istio ingress gateway chart which contains the Istio ingress gateway components.
-
Status of the installation can be verified using Helm:
helm status istiod -n istio-system
-
Verify that the Istio control plane components are deployed using the following command:
kubectl get pods -n istio-system
The output should be similar to the following:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-5c8b4f4c4c-7z2jg 1/1 Running 0 2m istiod-7f9b9f4d9c-6x7x7 1/1 Running 0 2m
-
Watch for the Helm releases being installed:
watch flux get helmreleases --all-namespaces