Service Mesh - 瞭解Istio

王者的誕生:爲何Istio有如此高的呼聲?

什麼是 Istio?安全

  • 官方定義:它是一個徹底開源的服務網格,做爲透明的一層接入到現有的分佈式應用中。它也是一個平臺,能夠與任何日誌、遙測和策略系統進行集成。Istio 多樣化的特性讓你可以成功且高效地運行微服務架構,並提供保護、鏈接和監控微服務的統一方法。
  • Service Mesh 的新形態:增長控制平面

爲何 Istio 能 C 位出鏡?網絡

  • 出擊及時(2017 年 5 月發佈 0.1版本)
  • 三巨頭光環加身
  • 第二代 Service Mesh
  • Envoy 的加入讓 Istio 如虎添翼
  • 功能強大
  • 各大平臺、廠商的支持

爲何使用 Istio?架構

  • 優點
    • 輕鬆構建服務網格
    • 應用代碼無需更改
  • 功能強大
    Service Mesh - 瞭解Istio

Istio 的核心功能

Service Mesh - 瞭解Istio

Istio 的發佈歷程

Service Mesh - 瞭解Istio


Istio的自我救贖:爲何Istio發生了兩次重大的架構變動?

架構變動路線
Service Mesh - 瞭解Istioapp

架構 1.0 版本

Service Mesh - 瞭解Istio

  • 數據平面
    • Envoy
  • 控制平面
    • Pilot
    • Citadel
    • Mixer

###架構 1.1 版本
Service Mesh - 瞭解Istio負載均衡

  • 1.1 的變化:
    • Adapter
    • Galley

Istio 的架構之殤

Service Mesh - 瞭解Istio

  • 「完美」架構存在的問題:
    • 性能
    • 易用性

MVP理論(最小可用產品)告訴咱們產品迭代的每一個階段都應是可以讓用戶可用的:
Service Mesh - 瞭解Istio分佈式

迴歸單體 - Istio 的自我救贖ide

  • 原有架構的複雜性
    • 維護性
    • 多組件分離的必要性?
    • 伸縮性
    • 安全性
  • 「複雜是萬惡之源,學會中止焦慮,愛上單體」 —— Istio 開發團隊

架構 1.5 版本

Service Mesh - 瞭解Istio

  • 重建控制平面
    • 整合爲 istiod
    • 廢棄 Mixer
  • 添加新特性
  • 性能提高
  • Bug 修復

核心功能之流量控制:Istio是如何實現流量控制功能的?

Istio 的流量控制能力

主要功能:微服務

  • 路由、流量轉移
  • 流量進出
  • 網絡彈性能力
  • 測試相關

核心資源(CRD):性能

  • 虛擬服務(Virtual Service)
  • 目標規則(Destination Rule)
  • 網關(Gateway)
  • 服務入口(Service Entry)
  • Sidecar

Service Mesh - 瞭解Istio

虛擬服務(Virtual Service)

Service Mesh - 瞭解Istio

  • 將流量路由到給定目標地址
  • 請求地址與真實的工做負載解耦
  • 包含一組路由規則
  • 一般和目標規則(Destination Rule)成對出現
  • 豐富的路由匹配規則

目標規則(Destination Rule)

Service Mesh - 瞭解Istio

  • 定義虛擬服務路由目標地址的真實地址,即子集(subset)
  • 設置負載均衡的方式
    • 隨機
    • 權重
    • 最少請求數

網關(Gateway)

Service Mesh - 瞭解Istio

  • 管理進出網格的流量
  • 處在網格邊界

服務入口(Service Entry)

Service Mesh - 瞭解Istio

  • 把外部服務註冊到網格中
  • 功能:
    • 爲外部目標轉發請求
    • 添加超時重試等策略
    • 擴展網格

Sidecar

Service Mesh - 瞭解Istio

  • 調整 Envoy 代理接管的端口和協議
  • 限制 Envoy 代理可訪問的服務

網絡彈性和測試

彈性能力:測試

  • 超時
  • 重試
  • 熔斷

測試能力:

  • 故障注入
  • 流量鏡像

服務的可觀察性:如何理解服務可視化的重要性?

什麼是可觀察性?

  • 可觀察性 ≠ 監控
  • 從開發者的角度探究系統的狀態
  • 組成:指標、日誌、追蹤
    Service Mesh - 瞭解Istio

指標(Metrics)

  • 以聚合的方式監控和理解系統行爲
  • Istio 中的指標分類:
    • 代理級別的指標(Proxy-level)
    • 服務級別的指標(Service-level)
    • 控制平面指標(Control plane)

代理級別的指標

  • 收集目標:Sidecar 代理
  • 資源粒度上的網格監控
  • 允許指定收集的代理(針對性的調試)
    Service Mesh - 瞭解Istio

服務級別的指標

  • 用於監控服務通訊
  • 四個基本的服務監控需求:延遲、流量、錯誤、飽和
  • 默認指標導出到 Prometheus(可自定義和更改)
  • 可根據需求開啓或關閉
    Service Mesh - 瞭解Istio

控制平面指標

  • 對自身組件行爲的監控
  • 用於瞭解網格的健康狀況
    Service Mesh - 瞭解Istio

訪問日誌(Access logs)

  • 經過應用產生的事件來了解系統
  • 包括了完整的元數據信息(目標、源)
  • 生成位置可選(本地、遠端,如 filebeat)
  • 日誌內容
    • 應用日誌
    • Envoy 日誌 $ kubectl logs -l app=demo -c istio-proxy

分佈式追蹤(Distributed tracing)
Service Mesh - 瞭解Istio

  • 經過追蹤請求,瞭解服務的調用關係
  • 經常使用於調用鏈的問題排查、性能分析等
  • 支持多種追蹤系統(Jeager、Zipkin、Datadog)

分佈式追蹤示例
Service Mesh - 瞭解Istio


保衛你的網格:Istio是如何設計安全架構的?

Istio 的安全架構
Service Mesh - 瞭解Istio

認證

Service Mesh - 瞭解Istio

  • 認證方式
  • 策略存儲
  • 支持兼容模式

認證方式

  • 對等認證(Peer authentication)
    • 用於服務間身份認證
    • Mutual TLS(mTLS)
  • 請求認證(Request authentication)
    • 用於終端用戶身份認證
    • JSON Web Token(JWT)

認證策略
Service Mesh - 瞭解Istio

  • 配置方式
  • 配置生效範圍
    • 網格
    • 命名空間
    • 工做負載(服務)
  • 策略的更新

受權

Service Mesh - 瞭解Istio

  • 受權級別
  • 策略分發
  • 受權引擎
  • 無需顯式啓用

受權策略
Service Mesh - 瞭解Istio

  • 經過建立 AuthorizationPolicy 實現
  • 組成部分
    • 選擇器(Selector)
    • 行爲(Action)
    • 規則列表(Rules)
      • 來源(from)
      • 操做(to)
      • 匹配條件(when)

受權策略的設置
Service Mesh - 瞭解Istio

相關文章
相關標籤/搜索