王者的誕生:爲何Istio有如此高的呼聲?
什麼是 Istio?安全
- 官方定義:它是一個徹底開源的服務網格,做爲透明的一層接入到現有的分佈式應用中。它也是一個平臺,能夠與任何日誌、遙測和策略系統進行集成。Istio 多樣化的特性讓你可以成功且高效地運行微服務架構,並提供保護、鏈接和監控微服務的統一方法。
- Service Mesh 的新形態:增長控制平面
爲何 Istio 能 C 位出鏡?網絡
- 出擊及時(2017 年 5 月發佈 0.1版本)
- 三巨頭光環加身
- 第二代 Service Mesh
- Envoy 的加入讓 Istio 如虎添翼
- 功能強大
- 各大平臺、廠商的支持
爲何使用 Istio?架構
- 優點
- 功能強大
Istio 的核心功能
Istio 的發佈歷程
Istio的自我救贖:爲何Istio發生了兩次重大的架構變動?
架構變動路線
app
架構 1.0 版本
###架構 1.1 版本
負載均衡
Istio 的架構之殤
MVP理論(最小可用產品)告訴咱們產品迭代的每一個階段都應是可以讓用戶可用的:
分佈式
迴歸單體 - Istio 的自我救贖ide
- 原有架構的複雜性
- 「複雜是萬惡之源,學會中止焦慮,愛上單體」 —— Istio 開發團隊
架構 1.5 版本
核心功能之流量控制:Istio是如何實現流量控制功能的?
Istio 的流量控制能力
主要功能:微服務
核心資源(CRD):性能
- 虛擬服務(Virtual Service)
- 目標規則(Destination Rule)
- 網關(Gateway)
- 服務入口(Service Entry)
- Sidecar
虛擬服務(Virtual Service)
- 將流量路由到給定目標地址
- 請求地址與真實的工做負載解耦
- 包含一組路由規則
- 一般和目標規則(Destination Rule)成對出現
- 豐富的路由匹配規則
目標規則(Destination Rule)
- 定義虛擬服務路由目標地址的真實地址,即子集(subset)
- 設置負載均衡的方式
網關(Gateway)
服務入口(Service Entry)
Sidecar
- 調整 Envoy 代理接管的端口和協議
- 限制 Envoy 代理可訪問的服務
網絡彈性和測試
彈性能力:測試
測試能力:
服務的可觀察性:如何理解服務可視化的重要性?
什麼是可觀察性?
- 可觀察性 ≠ 監控
- 從開發者的角度探究系統的狀態
- 組成:指標、日誌、追蹤
指標(Metrics)
- 以聚合的方式監控和理解系統行爲
- Istio 中的指標分類:
- 代理級別的指標(Proxy-level)
- 服務級別的指標(Service-level)
- 控制平面指標(Control plane)
代理級別的指標
- 收集目標:Sidecar 代理
- 資源粒度上的網格監控
- 允許指定收集的代理(針對性的調試)
服務級別的指標
- 用於監控服務通訊
- 四個基本的服務監控需求:延遲、流量、錯誤、飽和
- 默認指標導出到 Prometheus(可自定義和更改)
- 可根據需求開啓或關閉
控制平面指標
- 對自身組件行爲的監控
- 用於瞭解網格的健康狀況
訪問日誌(Access logs)
- 經過應用產生的事件來了解系統
- 包括了完整的元數據信息(目標、源)
- 生成位置可選(本地、遠端,如 filebeat)
- 日誌內容
- 應用日誌
- Envoy 日誌
$ kubectl logs -l app=demo -c istio-proxy
分佈式追蹤(Distributed tracing)
- 經過追蹤請求,瞭解服務的調用關係
- 經常使用於調用鏈的問題排查、性能分析等
- 支持多種追蹤系統(Jeager、Zipkin、Datadog)
分佈式追蹤示例
保衛你的網格:Istio是如何設計安全架構的?
Istio 的安全架構
認證
認證方式
- 對等認證(Peer authentication)
- 用於服務間身份認證
- Mutual TLS(mTLS)
- 請求認證(Request authentication)
- 用於終端用戶身份認證
- JSON Web Token(JWT)
認證策略
受權
受權策略
- 經過建立 AuthorizationPolicy 實現
- 組成部分
- 選擇器(Selector)
- 行爲(Action)
- 規則列表(Rules)
- 來源(from)
- 操做(to)
- 匹配條件(when)
受權策略的設置