1. 程式人生 > >ISTIO SERVICE MESH – Part 2

ISTIO SERVICE MESH – Part 2

Introduction

In cloud era, many organizations are starting journey towards adopting microservice architecture to enable organizations to grow fast, where & when needed. This article has been divided into multiple parts.

In part 2, focus on what is Service Mesh, why do need to use Istio Service Mesh

In part 3, will be focusing on quick comparison between Spring Cloud and Istio service mesh.

In part 4, will be focusing on key benefits of Istio service mesh like how Istio helps developer, operators, etc.

In part 5, will be focusing on additional features of Istio service mesh

ISTIO Service Mesh

This section covers, what is Istio service mesh, how it helps to resolve complexity in microservice approach.

By implementing a common microservices fabric, Istio addresses many of the challenges faced by developers and operators as monolithic applications transition to a distributed microservices architecture.

Applications are getting decoupled internally as microservices, and the responsibility of maintaining coupling between these microservices is passed to the service mesh.

  • PaaS platforms like Cloud Foundry are great for deploying microservices, and they were created with a view of simplifying application deployment across multiple runtimes.
  • Kubernetes can handle multiple container-based workloads, including microservices.
  • Istio comes with more sophisticated features like traffic management, failure handling and resiliency.

Istio achieves this, by using “proxies” to intercept all incoming and outgoing network traffic. Proxies in a service mesh architecture are implemented using the sidecar pattern: a sidecar is conceptually attached to the main (or parent) application and complements that parent by providing platform features.

For more information, refer here.

What is Istio

Istio an open platform to connect, secure, manage and monitor microservices. It provides an easy way to create network of deployed services with load balancing, service-to-service communication, authentication, monitoring, and more, without requiring any changes in service code. By deploying a special sidecar proxy to intercept and act on traffic between microservices throughout the environment, Istio provides a straightforward way to create a network of deployed services, often referred to as a “service mesh.”

Also, Istio automatically collects service metrics, logs and call traces for all traffic within a cluster, including cluster ingress and egress. The use of sidecar proxies enables a gradual and transparent introduction without architectural or application code changes. So, developers can focus on business logic and quickly integrate new features.

Note: Istio is not targeted at any specific deployment environment. During the initial stages of development, and as it currently stands, Istio supports Kubernetes-based deployments. However, it is being built to enable rapid and easy adaptation to other environments, such as VMs and Cloud Foundry.

Why should we use Istio

Imagine an application that is broken down into multiple microservices; each microservice has multiple instances, and each deployed instance has multiple versions. Typically, even a simple application deployment with this kind of model can span with multiple microservices.

When number of services grows, it become harder to manage. Its requirements can include discovery, load balancing, failure recovery, metrics, and monitoring, and often more complex operational requirements such as A/B testing, canary releases, rate limiting, access control, and end-to-end authentication.

Istio provides a complete solution to satisfy the diverse requirements of microservice applications by providing behavioral insights and operational control over the service mesh as a whole. It provides a number of key capabilities uniformly across a network of services:

Connect and Communicate

  • Dynamic routing based on weights and HTTP headers
  • Fault Injection like inject delays, useful to test the resiliency
  • Set Timeouts

Monitoring

  • Collects metrics and logs
  • Tracing using Zipkin
  • Traffic monitoring using Grafana
  • Service Graph – shows service’s runtime relationship

Security

  • Basic access control using Kubernetes label
  • Apply/Enforce operational policy
  • Local TCP connections between the service and Envoy
  • Mutual TCP connections between proxies

Manage

  • Enable users to rate limit traffic to a service (ensure user is not crossing usage/quota)
  • Migrate traffic from old to new version of a service

In summary,

  • For Application developers: With Istio managing how traffic flows across their services, developers can focus exclusively on business logic and iterate quickly on new features.
  • For Service operators: Istio enables policy enforcement and mesh monitoring from a single centralized control point, independent of application evolution. As a result, operators can ensure continuous policy compliance through a simplified management plane.

How Istio works
Istio consists of,
A control plane that manages the overall network infrastructure and enforces the policy and traffic rules

A data plane which includes sidecars implemented using Envoy, an open source edge proxy

Istio Pilot (for traffic management):

  • Pilot is responsible for the lifecycle of Envoy instances deployed across the Istio service mesh.
  • Pilot provides service discovery for the Envoy sidecars, traffic management capabilities for intelligent routing (e.g., A/B tests, canary deployments, etc.), and resiliency (timeouts, retries, circuit breakers, etc.). It converts a high level routing rules that control traffic behavior into Envoy-specific configurations, and propagates them to the sidecars at runtime.
  • Istio Pilot provides content and policy-based load balancing and routing, also maintains a canonical representation of services in the mesh.
  • Pilot exposes APIs for service discovery, dynamic updates to load balancing pools and routing tables.
  • Users can specify high-level traffic management rules through Pilot’s Rules API. These rules are translated into low-level configurations and distributed to Envoy instances via the discovery API.

Istio Auth (for access control):

  • Providing each service with a strong identity that represents its role to enable interoperability across clusters and clouds
  • Securing service to service communication and end-user to service communication
  • Providing a key management system to automate key and certificate generation, distribution, rotation, and revocation

Istio Mixer (for monitoring, reporting, and quota management):

  • Istio Mixer provides in-depth monitoring and logs data collection for microservices, as well as collection of request traces. It uses Prometheus, Grafana, and Zipkin to provide some of these in-depth metrics.
  • Precondition checking – enables callers to verify a number of preconditions before responding to incoming request from a service consumer.
  • Quota management – enables services to allocate and free quota on a number of dimensions. Rate limits are examples of quotas.
  • Telemetry reporting – enables services to be reporting and logging

Envoy

  • Istio uses an extended version of the Envoy proxy, a high-performance proxy developed in C++, to mediate all inbound and outbound traffic for all services in the service mesh. Istio leverages Envoy’s many built-in features such as dynamic service discovery, load balancing, TLS termination, HTTP/2 & gRPC proxying, circuit breakers, health checks, staged rollouts with %-based traffic split, fault injection, and rich metrics.
  • Envoy is deployed as a sidecar to the relevant service in the same Kubernetes pod. This allows Istio to extract a wealth of signals about traffic behavior as attributes, which in turn used in Mixer to enforce policy decisions, and be sent to monitoring systems to provide information about the behavior of the entire mesh.
What is a Sidecar?
A sidecar is deployed alongside each microservice that should be developed and deployed to a server/hosting instance. It is conceptually attached to the “parent” service in the same manner a motorcycle sidecar is attached to the motorcycle – hence the name.


References

相關推薦

ISTIO SERVICE MESHPart 2

Introduction In cloud era, many organizations are starting journey towards adopting microservice architecture to enable organizations to grow fast, whe

ISTIO SERVICE MESHPart 5

Introduction In cloud era, many organizations are starting journey towards adopting microservice architecture to enable organizations to grow fast, wher

ISTIO SERVICE MESHPart 3

Introduction In cloud era, many organizations are starting journey towards adopting microservice architecture to enable organizations to grow fast, whe

Introducing Istio Service Mesh for Microservices

Meet Istio “Istio is an implementation of a service mesh. A service mesh is the connective tissue between your services that adds additional capa

企業服務行業如何試水 Istio | Service Mesh Meetup 分享實錄

崔秀龍,HPE 軟體分析師,Kubernetes 權威指南作者之一,Kubernetes、Istio 專案成員。本文根據崔秀龍在 2019 廣州 Service Mesh Meetup#5 分享整理,完整的分享 PPT 獲取方式見文章底部。本文內容收錄在崔秀龍的新書:《深入淺出 Istio - Servi

Benefits of using the Istio service mesh

Distinguished Engineer Dan Berg details the top benefits of using the Istio service mesh in production from KubeCon 2018 in Stockholm. He notes that ma

ISTIO SERVICE MESH

Abstract Presenting a series of articles that provides an overview of Istio Service Mesh, why should we use, its capabilities, how to setup and how to

深入淺出Istio:Service mesh快速入門與實踐-讀書筆記(By GisonWin)

什麽 分配 mem ces 轉換成 初始化 virt 會有 ilo 01 服務網格歷史 (以後補充) 02 服務網格的基本特性 連接 微服務錯綜復雜,要完成其業務目標,連接問題是首要問題.連接存在於所有服務的整個lifcecycle中,用於維持服務的運行. 安全

微服務之旅:從Netflix OSS到 Istio Service Mesh

在這篇文章中,我們從Netflix開始,通過Envoy和Istio的崛起,快速瀏覽微服務的歷史. 微服務是具有邊界上下文的鬆散耦合服務,使您能夠獨立開發,部署和擴充套件服務。它還可以定義為構建獨立開發和部署的分散式系統的架構模式。 在微服務架構中處理服務之間的通訊是一項挑戰,因為它們需要在不可靠的網路中

Service Mesh istio 部署在kubernetes v1.11.2 簡單記錄

系統 [[email protected] istio-1.1.0.snapshot.1]# uname -a Linux master-47-35 3.10.0-327.4.5.el7.x86_64 #1 SMP Mon Jan 25 22:07:14 UTC 2016

阿裏雲Kubernetes Service Mesh實踐進行時(1): Istio初體驗

我們 key works code sch 代碼 部署 text 過程 摘要: 本篇文章是系列中的第一篇,主要講述利用阿裏雲Kubernetes容器服務,快速搭建一套用於連接、管理以及安全化微服務的開放平臺Istio,為應用引入和配置多個相關服務。 概述 Istio是一個用

Service Mesh深度學習系列|istio原始碼分析之pilot

本文分析的istio程式碼版本為0.8.0,commit為0cd8d67,commit時間為2018年6月18日。 上面是官方關於pilot的架構圖,因為是old_pilot_repo目錄下,可能與最新架構有出入,僅供參考。所謂的pilot包含兩個元件:pilot-agent和pilot-d

Managing service mesh on Kubernetes with Istio

Managing service mesh on Kubernetes with IstioAs the complexity of microservice applications grows, it becomes extremely difficult to track and manage inte

阿里雲Kubernetes Service Mesh實踐進行時(1): Istio初體驗

摘要: 本篇文章是系列中的第一篇,主要講述利用阿里雲Kubernetes容器服務,快速搭建一套用於連線、管理以及安全化微服務的開放平臺Istio,為應用引入和配置多個相關服務。 概述 Istio是一個用於連線/管理以及安全化微服務的開放平臺,提供了一種簡單的方式用於建

Lesson 2 Building your first web page: Part 2

examples pear reads port example eth span contain animation Tag Diagram You may have noticed that HTML tags come in pairs; HTML has bot

如何使用GitLab和Rancher構建CI/CD流水線 – Part 2

docker 鏡像 gitlab 配置 持續集成 部署 這是我們使用GitLab和Rancher構建CI/CD流水線系列教程的第二部分。第一部分的內容介紹了如何部署、配置和確保GitLab在Rancher的運行。這一部分中,我們將介紹如何使用GitLab CI Multi-Runner

JSP復習(part 2

war setattr current ren 客戶端 代碼 body 練習 params 3.4.2 訪問(獲取)請求參數 1.方法 String 字符串變量 =request.getParamete

逆向破解H.Koenig 遙控器 Part 2

sda com fec 逆向 title width 優化 數據 http 逆向破解H.Koenig 遙控器 Part 2 到目前為止,我們已經知道了RF收發器的安裝過程,下面是我們所掌握的東西 : l 無線電收發器是一個Avantcom A7105 l 調制是FS

C++ and OO Num. Comp. Sci. Eng. - Part 2.

its ted 增加 數字 gin logs markdown 模板函數 mar 本文參考自《C++ and Object-Oriented Numeric Computing for Scientists and Engineers》。 1. Basic Types 在

Java RESTful Web Service實戰(第2版)pdf

images rep 漸進 網盤下載 調優 一點 進一步 image ctf 下載地址:網盤下載 內容簡介本書系統、深度講解了如何基於Java標準規範實現REST風格的Web服務,由擁有10余年開發經驗的阿裏雲大數據架構師撰寫,第1版上市後廣獲贊譽,成為該領域的暢銷書。第