|
| 1 | +--- |
| 2 | +title: What is Istio? |
| 3 | +headline: What is Istio? |
| 4 | +sidenav: doc-side-concepts-nav.html |
| 5 | +bodyclass: docs |
| 6 | +layout: docs |
| 7 | +type: markdown |
| 8 | +--- |
| 9 | + |
| 10 | +{% capture overview %} |
| 11 | +This page presents an architectural overview for the Istio service mesh. |
| 12 | +{% endcapture %} |
| 13 | + |
| 14 | +{% capture body %} |
| 15 | + |
| 16 | +## High-level architecture |
| 17 | + |
| 18 | +<img src="./arch.svg" alt="The overall architecture of an Istio-based application." /> |
| 19 | + |
| 20 | +### The sidecar model |
| 21 | + |
| 22 | +As monolithic applications are decomposed into a distributed system of microservices that scale dynamically, classic distributed system problems such as |
| 23 | +service discovery, load balancing, and failure recovery become increasingly import to solve uniformly. As the application gains more agility, it transitions |
| 24 | +towards a process wherein updates are made to different parts of the application at different times. Developers need the ability to experiment with |
| 25 | +different features in production, or deploy canary releases, without impacting the system as a whole. Operators need to enforce organization-wide policies, |
| 26 | +such as global rate limits, ACLs, etc., without requiring updates to each microservice. |
| 27 | + |
| 28 | +Today, these problems are tackled piecemeal within the industry. Language-specific libraries, such as Ribbon/Hystrix from Netflix’s OSS stack, are used to |
| 29 | +satisfy basic necessities such as discovery, load balancing and circuit breaking. In a polyglot application, organizations need to maintain |
| 30 | +language-specific libraries for every language being used, dramatically increasing the maintenance cost. |
| 31 | + |
| 32 | +A host of API management tools are typically bolted onto the edge of the infrastructure to provide subscription, metering, API metrics monitoring, rate |
| 33 | +limiting, etc. Continuous delivery and experimentation of new features in production is restricted to edge services using an edge proxy (e.g., Zuul/Nginx). |
| 34 | +Policy enforcement between mid-tier services is difficult or impossible as libraries provide little control over how traffic flows between microservices. |
| 35 | + |
| 36 | +Compared to using language-specific libraries, the out-of-process transparent proxy approach has a much lower maintenance overhead. A single proxy |
| 37 | +implementation can be shared across all services in an organization. This single implementation can be optimized for performance while providing a variety |
| 38 | +of functions beneficial to all services in the application. It eliminates the need for applications to be rebuilt whenever new functionality is available. |
| 39 | +Support for continuous delivery, policy enforcement, and in-depth monitoring of service health can be engineered into the proxy and leveraged across |
| 40 | +different services (edge & middle-tier) with minimal effort on behalf of the application developer. As the proxy can act as both an edge proxy as well as a |
| 41 | +middle-tier router, middle-tier services can also take advantage of the continuous delivery and policy enforcement features provided. By offloading all |
| 42 | +aspects of communication, failure recovery, and policy enforcement to the proxy, the application logic is dramatically simplified. |
| 43 | + |
| 44 | +### Envoy |
| 45 | + |
| 46 | +Istio uses the Envoy proxy, a high-performance proxy developed in C++, to mediate all inbound and outbound traffic for all services in the service mesh. |
| 47 | +Istio leverages Envoy’s many built-in features such as dynamic service discovery, load balancing, TLS termination, HTTP/2 & gRPC proxying, circuit breakers, |
| 48 | +health checks, staged rollouts with %-based traffic split, fault injection, and rich metrics. In addition, Istio extends Envoy to interact with Mixer to |
| 49 | +enable policy enforcement and to report telemetry. |
| 50 | + |
| 51 | +### Mixer |
| 52 | + |
| 53 | +Mixer is responsible for enforcing access control and usage policies across the service mesh and collects telemetry data from the Envoy proxy and other |
| 54 | +services. The proxy extracts request level attributes which are sent to Mixer for evaluation. More information on the attribute extraction and policy |
| 55 | +evaluation can be found here. Mixer includes a flexible plugin model enabling it to interface with a variety of host environments and backends, abstracting |
| 56 | +the Envoy proxy and Istio-managed services from these details. |
| 57 | + |
| 58 | +### Istio-Manager |
| 59 | + |
| 60 | +Istio-Manager serves as an interface between the user and Istio, collecting and validating configuration and propagating it to the various Istio components. |
| 61 | +It abstracts environment-specific implementation details from the Mixer and Envoy, providing them with an abstract representation of the user’s services |
| 62 | +that is independent of the underlying platform. In addition, traffic management rules (i.e. generic layer-4 rules and layer-7 HTTP/gRPC routing rules) can |
| 63 | +be programmed at runtime via Istio-Manager. |
| 64 | + |
| 65 | +### Istio-Auth |
| 66 | + |
| 67 | +Istio-Auth provides strong service-to-service and end-user authentication using mutual TLS, with built-in identity and credential management. |
| 68 | +It can be used to upgrade unencrypted traffic in the service mesh, and provides operators the ability to enforce policy based |
| 69 | +on service identity rather than network controls. Future releases of Istio will add fine-grained access control and auditing to control |
| 70 | +and monitor who accesses your service, API, or resource, using a variety of access control mechanisms, including attribute and |
| 71 | +role-based access control as well as authorization hooks. |
| 72 | + |
| 73 | +{% endcapture %} |
| 74 | + |
| 75 | +{% include templates/concept.md %} |
0 commit comments