一、前言
根據InfoQ文章說明,自從2022年至今,Service Mesh的熱度不斷飆升,隨著Kubernetes生態(tài)體系的逐漸建立和完善,基于Kubernetes應用程序的規(guī)模和復雜性將會增加,Service Mesh將成為有效管理那些應用程序所必需的一切,企業(yè)對其需求將會快速增長。
從長遠來看,在Service Mesh領域也會出現類似Kubernetes的情況,最后出現一個贏家,然后公司標準化這個贏家。目前來看,Istio作為控制平面的一種技術實現在Service Mesh領域扮演了核心角色。另外,由于背靠Google公司的內部工程實踐,以及對工程實踐的再思考和重新提煉,Istio獲得了業(yè)界廣泛的關注,并且正在圍繞Istio建立生態(tài),Istio似乎最有可能成為事實上的Service Mesh。2022年將成為Service Mesh技術的普及年。
Istio
二、什么是Istio?
在介紹Istio之前,先來說說什么是服務網格?當單體應用向分布式微服務架構過渡時,開發(fā)人員和運維人員都會面臨一些復雜性挑戰(zhàn)。服務網格就是用于描述這些應用程序的微服務網絡及其之間的交互。隨著服務網格的大小和復雜性的增長,它變得越來越難以理解和管理。它需要包括服務發(fā)現、負載均衡、故障恢復、指標監(jiān)控,同時,它通常也需要具有更復雜的運維要求,如A/B測試、金絲雀發(fā)布、速率限制、訪問控制和端到端身份驗證。而這些作為服務網格具體實現的Istio解決了這些問題。
Istio是一個開放平臺,提供了統(tǒng)一的方式來集成微服務,管理跨微服務調用的流量、執(zhí)行策略和匯總監(jiān)測數據。Istio的控制平面在底層集群管理平臺(如Kubernetes,Mesos等)上提供了一個抽象層。
DevOps
三、為什么要使用Istio?
Istio可以輕松的為已部署的服務創(chuàng)建帶有負載均衡、端到端的身份驗證、監(jiān)視等功能的網絡。實現這些功能,服務只需要很少的改動或者不需要改動。通過在整個環(huán)境中部署一個特殊的sidecar代理來攔截微服務之間的所有網絡通信,然后使用其控制平面功能配置和管理Istio,可以為服務添加Istio支持,包括:
HTTP,gRPC,WebSocket和TCP通信的自動負載平衡。通過豐富的路由規(guī)則,重試,故障轉移和故障注入對流量行為進行細粒度控制??刹灏蔚牟呗詫雍团渲肁PI,支持訪問控制,速率限制和配額。集群內所有流量的自動度量,日志和跟蹤,包括集群的入口和出口。通過強大的基于身份的驗證和授權,在群集中進行安全的服務間通信。
四、核心特性
Istio在服務網格中統(tǒng)一提供了許多關鍵的特性:
流量控制
Istio通過簡單規(guī)則配置和流量路由可以控制服務之間的流量和API調用的流量。Istio簡化了諸如斷路器、超時和重試之類的服務級別屬性的配置,并可以輕松的設置一些重要任務,如A/B測試、金絲雀發(fā)布和基于百分比的流量拆分的分階段部署。
借助對流量的更好的可見性和開箱即用的故障恢復特性,無論遇到什么情況,都可以在問題發(fā)生之前及時發(fā)現問題,使得服務間通信更加可靠,健壯。
安全
Istio的安全功能使開發(fā)人員可以將精力集中在應用程序級別的安全上。Istio提供基礎安全通信通道,并大規(guī)模管理服務通信的身份驗證、授權和加密。借助Istio,默認情況下,服務間通信是安全的,可以在各種協議和運行時之間一致性的實施策略。這些操作幾乎不需要更改應該程序。
盡管Istio是獨立于平臺的,但將其與Kubernetes(或基礎架構)網絡策略配合使用,其好處會更大,包括能夠在網絡和應用程序層保護Pod到Pod或服務到服務的通信的能力。
策略
Istio允許為應用程序配置自定義策略,以在運行時強制執(zhí)行規(guī)則,例如:
速率限制以動態(tài)限制服務流量拒絕、白名單和黑名單,以限制對服務的訪問Header的重新和重定向
Istio還允許創(chuàng)建自己的策略適配器,以添加自己定義的授權行為。
可觀察性
Istio強大的跟蹤、監(jiān)視和日志記錄功能可以深入了解服務網格的部署。借助Istio的監(jiān)視功能,可以真正了解服務性能如何影響上游和下游,而其自定義儀表盤可以提供對所有服務性能的可視化,并讓您了解性能如何影響其他流程。
Istio的Mixer組件負責策略控制和遙測收集。它提供了后端抽象和中介,使Istio的其余部分與各個基礎架構后端的實現細節(jié)隔離開來,并為運維人員提供對網格和基礎架構后端之間所有交互的精細控制。
所有這些功能使您可以更有效的設置,監(jiān)視和實施減肥服務上的SLO(Service Level Objectives,服務等級目標),但最重要的是可以快速、有效的檢測和修復問題。
平臺支撐
Istio是獨立于平臺的,可以在多種環(huán)境中運行,包括跨Cloud、本地、Kubernetes和Mesos等??梢栽贙ubernetes或Consul的Nomad上部署Istio。Istio當前支持:
部署在Kubernetes上的服務注冊在Consul上的服務運行在虛機上的服務
集成和定制
Istio的策略增強組件可以擴展和定制,以與現有的ACL、日志記錄、監(jiān)控、配額、審核等解決方案集成。
五、總結
隨著云計算的發(fā)展,使用云平臺的組織的確享受到了很多好處,但是,不可否認的是,采用云平臺對DevOps團隊有一定的壓力,因為開發(fā)人員必須使用微服務架構來構建具有可移植性的服務,同時運營商也需要管理超大型的混合和多云的服務部署。
Istio可以連接、保護、控制和觀察這些服務。從較高的角度來看,Istio有助于降低這些部署的復雜性,并減輕開發(fā)團隊的負擔。Istio是一個完全開源的服務網格,可以透明的集成到現有的分布式應用程序上。它也是一個平臺,通過API可以將其集成到任何日志記錄平臺,監(jiān)控和策略系統(tǒng)。Istio的功能多樣性使得可以成功、高效運行分布式微服務架構,并提供一種統(tǒng)一的方式來保護、連接和監(jiān)視微服務。
聯系客服