本篇內(nèi)容介紹了“Istio1.7有哪些特性”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了裕華免費(fèi)建站歡迎大家使用!
就在幾天前,Istio 發(fā)布了 1.7 版本,和 1.6 版本的發(fā)布時(shí)間正好間隔三個(gè)月,完美的實(shí)現(xiàn)了季度發(fā)布的諾言。本次發(fā)布的口號(hào)是 “偉大的 Istio 社區(qū)(Istio’s great community)”,因?yàn)橛衼?lái)自 40 多個(gè)公司的 200 多個(gè)開發(fā)者做出了貢獻(xiàn)。Istio 官方是這樣描述的:
正是因?yàn)橛腥绱肆钊梭@羨(amazing)的社區(qū),才讓 Istio 能夠在每個(gè)季度有如此多的改進(jìn)。
Istio 團(tuán)隊(duì)已經(jīng)從上個(gè)月倒賣商標(biāo)的麻煩中走了出來(lái),看上去是想通過(guò)強(qiáng)調(diào) Istio's great community
這個(gè)理念來(lái)?yè)崞缴鐓^(qū)開發(fā)者受傷的心靈?筆者認(rèn)為,作為開發(fā)者和用戶不必太在意 Google 的商業(yè)行為,至少現(xiàn)階段 Istio 還在以開源的身份持續(xù)演進(jìn),還能為我所用,這就足夠了。
1.7 版本中重要的更新主要有以下四個(gè)方面。
確認(rèn)了使用安全發(fā)現(xiàn)服務(wù)(SDS)作為證書分發(fā)的優(yōu)勢(shì),并把它作為一個(gè)重要的安全最佳實(shí)踐?,F(xiàn)在這一特性也被使用在出口網(wǎng)關(guān)上。
信任域驗(yàn)證除了支持 HTTP,現(xiàn)在也可以驗(yàn)證 TCP 流量了,并且還支持在 MeshConfig 中進(jìn)行配置,提供了更多靈活性。
可以使用ECC 進(jìn)行 CA 通信,提高了安全性和效率。
網(wǎng)關(guān)默認(rèn)使用非根(non-root)用戶部署,這主要是基于一條最佳實(shí)踐:不要讓運(yùn)行的進(jìn)程有多于它所需的權(quán)限,這會(huì)導(dǎo)致不必要的混淆。
在易用性方面主要的改進(jìn)依然是對(duì) istioctl
命令行工具的增強(qiáng):
DestinationRule ISTIOCONFIG istioctl x uninstall
在運(yùn)維方面也有些許改進(jìn),例如:
可以支持讓 Sidecar 啟動(dòng)后才啟動(dòng)你的應(yīng)用容器。如果你的應(yīng)用需要在啟動(dòng)時(shí)通過(guò) Sidecar 代理來(lái)訪問(wèn)資源,這項(xiàng)修改可以讓部署變的更穩(wěn)定(避免因?yàn)?Sidecar 沒(méi)啟動(dòng)而應(yīng)用訪問(wèn)不到資源的情況)。
Istio Operator 作為最佳安裝方式。Operator 在之前的版本就已經(jīng)提供了,看上去 Istio 想主推 Operator 以替代其他的安裝形式。但筆者必須要吐槽一下官方發(fā)布文檔對(duì)這一條的描述:
TheIstio Operator is a great way to install Istio, as it automates a fair amount of toil. Canary control plane deployments are also important; they allow ultra-safe upgrades of Istio. Unfortunately, you couldn’t use them together -until now.
吹了一大堆,其實(shí)翻譯成人話就是:Operator 目前還不支持金絲雀更新。真是佩服這段文案編寫者拐彎抹角的能力。
提供了 istio-agent 的指標(biāo),可以觀察它的運(yùn)行情況
Prometheus 指標(biāo)收集方面的改進(jìn)
持續(xù)對(duì)虛擬機(jī)相關(guān)功能的開發(fā)是本年度的重點(diǎn),這是 Istio 多次強(qiáng)調(diào)的。這是因?yàn)槟壳翱蛻魬?yīng)用部署環(huán)境的復(fù)雜性和混合性,VM 依然是一種主要的部署選擇。和一些托管的競(jìng)品(比如 AWS APP Mesh )相比,Istio 缺失了這方面的能力,使得這些客戶不得不觀望而無(wú)法落地。對(duì) VM 的支持就成為了重中之重,這也是商業(yè)上的考量。
然而本次更新沒(méi)有太多的重量級(jí)功能發(fā)布,只是做了小的改進(jìn),且還在 alpha 階段。比如為 VM 也增加了安全特性,支持證書自動(dòng)輪轉(zhuǎn); istioctl
現(xiàn)在可以驗(yàn)證 VM 的代理狀態(tài);增加了 RPM 安裝包等。
客觀的講,以上官方的發(fā)布文檔大部分內(nèi)容都不痛不癢,對(duì)使用層面的用戶影響不大。而真正和用戶息息相關(guān)是安裝和升級(jí)的變化。Istio 團(tuán)隊(duì)并沒(méi)有在發(fā)布首頁(yè)強(qiáng)調(diào)這一點(diǎn),這引起了筆者的強(qiáng)烈不適并嚴(yán)重懷疑 Istio 有刻意規(guī)避問(wèn)題的嫌疑。我們先來(lái)看筆者認(rèn)為最重要的一條變更:
Require Kubernetes 1.16+
Kubernetes 1.16+ is now required for installation.
這是 Istio 官方第一次在新版本的 Release Note 中明確的說(shuō)明了 Kubernetes 的版本限制問(wèn)題。盡管以前老版本的 Istio 也會(huì)對(duì)平臺(tái)版本有要求,但通常是這樣的口吻:
Istio 1.5 has been tested with these Kubernetes releases: 1.14, 1.15, 1.16.
這種描述隱含的意思就是:我們?cè)谶@幾個(gè)版本測(cè)試過(guò)兼容性,但我們并沒(méi)有說(shuō) Istio 不兼容其他版本,可能、也許、大概是兼容的,我們只是沒(méi)有測(cè)試過(guò)而已。而這一次是描述是 “required”,請(qǐng)仔細(xì)體會(huì)這兩種說(shuō)法的區(qū)別。
為了驗(yàn)證 1.7 真實(shí)的兼容性( required 只是駭人聽聞?),筆者做了一次安裝測(cè)試,測(cè)試環(huán)境為 Docker 桌面版內(nèi)置的 Kubernetes,版本 v1.15.5。
首先,使用預(yù)檢命令驗(yàn)證集群環(huán)境是否合法(新版本已經(jīng)取消了 istioctl verify-install
命令)
$ bin/istioctl x precheck Error: 1 error occurred: * The Kubernetes API version: v1.15.5 is lower than the minimum version: 1.16
果然,預(yù)檢沒(méi)有通過(guò),出現(xiàn)了版本過(guò)低的錯(cuò)誤。筆者忽略預(yù)檢結(jié)果,嘗試強(qiáng)行安裝,想看看預(yù)檢是否也只是嚇唬人而已:
$ bin/istioctl install This will install the default Istio profile into the cluster. Proceed? (y/N) y The Kubernetes version v1.15.5 is not supported by Istio 1.7.0. The minimum supported Kubernetes version is 1.16. Proceeding with the installation, but you might experience problems. See https://istio.io/latest/docs/setup/platform-setup/ for a list of supported versions. ? Istio core encountered an error: failed to wait for resource: failed to verify CRD creation: the server could not find the requested resource
驗(yàn)證結(jié)果被現(xiàn)實(shí)啪啪打臉。除了對(duì)版本限制的說(shuō)明,Istio 還非常嚴(yán)謹(jǐn)?shù)母嬷惭b過(guò)程會(huì)繼續(xù),但你可能會(huì)遇到各種問(wèn)題。果然,在 Istio core 的安裝步驟中就報(bào)了錯(cuò),安裝過(guò)程被卡住無(wú)法繼續(xù)進(jìn)行??磥?lái)這一次 Istio 的 required 是來(lái)真的了。
為什么說(shuō)這個(gè)強(qiáng)制性的版本限制會(huì)對(duì)用戶造成最大的困擾?其根本原因就是當(dāng)前絕大部分企業(yè)和用戶所使用的 Kubernetes 根本沒(méi)有達(dá)到 1.16+ 版本,大部分都是基于 1.14、1.12,甚至更低。目前兩大云廠商的 Kubernetes 服務(wù)(AWS EKS 和 GCloud GKE)也都是兼容 1.14+,這也能從一個(gè)側(cè)面說(shuō)明有一大批老用戶很可能都使用的是 1.14 版本。然而 Istio 并沒(méi)有遵循這一規(guī)則,這等于直接將很大一部分用戶踢出了場(chǎng)外,Istio 1.7 不帶你們玩了。
另一個(gè)潛在的問(wèn)題是為想要升級(jí)的用戶帶來(lái)了極大的困惑。舉一個(gè)例子:某企業(yè)的運(yùn)維團(tuán)隊(duì)正在打算將 1.14 版本的 Kubernetes 升級(jí)到 1.16,而架構(gòu)團(tuán)隊(duì)正打算將安裝在其上的 Istio 1.2 升級(jí)到 1.7。這個(gè)團(tuán)隊(duì)所面臨的問(wèn)題是,要升級(jí)到 Istio 1.7 必須先升級(jí) Kubernetes 到 1.16;但是一旦升級(jí)了 1.16,原本的 1.2 版本很可能有兼容問(wèn)題,因?yàn)?Istio 1.2 宣稱只在 Kubernetes 1.12~1.14 測(cè)試過(guò)。Istio 1.7 過(guò)分嚴(yán)格的的平臺(tái)版本限制給了這些用戶致命一刀,升級(jí)之路充滿荊棘。他們只能退而求其次選擇老版本進(jìn)行升級(jí)。
從 1.5 版本開始,Istio 一方面不斷的強(qiáng)調(diào)易用性和用戶體驗(yàn),一方面又武斷的放棄向下兼容,將大量用戶拒之門外。其自相矛盾的行為令人匪夷所思。
這一問(wèn)題出現(xiàn)在 Change Note 安裝部分的一條,很可能成為升級(jí)用戶新的痛點(diǎn)。
Upgraded the CRD and Webhook versions to v1. ( Issue #18771
),( Issue #18838
)
從 Issue 可以看出,因?yàn)?Kubernetes 在 1.16 中將 webhook 的 API 版本改為 v1,并會(huì)在 1.19 版本中刪除老的 v1beta 版本。這一激進(jìn)行為導(dǎo)致 Istio 不得不在自己的 1.8 版本之前完成對(duì)應(yīng)的遷移。筆者在 Istio 官方 Slack 中也驗(yàn)證了這一問(wèn)題:
Yes this is a hard requirement. Most specifically CRDs, and other apis use APIs that were promoted to v1 in 1.16 are being used.
Istio 開發(fā)團(tuán)隊(duì)也在 Issue 中抱怨對(duì)方太激進(jìn)(aggressive),留給他們的開發(fā)周期太短(pretty tight window),有很多工作要做(probably a lot of work),一副巧婦難為無(wú)米之炊的委屈樣。筆者不由得感嘆:本是同門師兄弟,相煎太急!
而對(duì)于用戶而言,意味著你不得不將自己的 mesh 配置文件的版本號(hào)進(jìn)行更新,如果集群比較龐大,很可能有不少的工作量(主要是測(cè)試、驗(yàn)證方面)。你很可能還需要通過(guò)金絲雀升級(jí)的方式進(jìn)行,因?yàn)闊o(wú)論是先升級(jí) Istio,還是先修改配置,都可能出現(xiàn)兼容問(wèn)題(說(shuō)好的易用性和用戶體驗(yàn)?zāi)??)?/p>
在 Istio 的版本支持公告頁(yè)面,你可以發(fā)現(xiàn)以前的老版本都逐漸的停止了維護(hù),特別是具有里程碑意義的 1.5 版本,在發(fā)布 3 個(gè)月后即停止維護(hù),成為 Istio 史上最短命的版本。這一度讓我懷疑其架構(gòu)重建的質(zhì)量。Istio 在構(gòu)建和發(fā)布節(jié)奏頁(yè)面中這樣定義 LTS(long term support):
Support is provided until 3 months after the next LTS
即所謂長(zhǎng)期支持,也只有 3 個(gè)月。也就是說(shuō)在每發(fā)布一個(gè)新版本,上一個(gè)老版本就不保證繼續(xù)支持了(包括更新、修復(fù) bug 等)。我們?cè)賮?lái)對(duì)比一下 Ubuntu 對(duì) LTS 的定義,下面是 Ubuntu 20.04 LTS 的一段說(shuō)明:
下載專為桌面 PC 和筆記本精心打造的 Ubuntu 長(zhǎng)期支持 (LTS) 版本。LTS 意為 “長(zhǎng)期支持”,一般為 5 年。LTS 版本將提供免費(fèi)安全和維護(hù)更新至 2025 年 4 月。
“Istio1.7有哪些特性”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!