Service Mesh - Istio 1.7 任性的小子

原文:https://makeoptim.com/service-mesh/istio1-7

前言

盼著盼著 Istio 1.7 終于如約而至蚀之,Istio 團隊完美兌現(xiàn)了發(fā)布路線圖的諾言蛛芥。在官方的 Announcing 中是這么描述的:

“偉大的 Istio 社區(qū)(Istio’s great community)”

確實校哎,在這個版本中撰洗,來自 40 多個公司的 200 多個開發(fā)者做出了貢獻武翎。

那究竟 Istio 1.7 怎么樣呢?值得我們更新嗎宵统?還是再等等馋辈?且聽筆者以下分析。

以下是此版本的一些要點:

安全增強

  • 確認了使用安全發(fā)現(xiàn)服務(SDS)作為證書分發(fā)的好處率拒,并認為這是一個重要的安全最佳實踐”琅荩現(xiàn)在這一特性也可以被使用在出口網(wǎng)關(guān)上,詳見 Egress Gateways with TLS Origination (SDS)俏橘。

    如果還沒使用 SDS 的同學們允华,建議大家可以用起來。以入口網(wǎng)關(guān)為例寥掐,沒有使用 SDS 之前靴寂,每次更新 TLS 證書的時候,都需要重新啟動下入口網(wǎng)關(guān) pod召耘,很是麻煩百炬。使用了 SDS 后,可以自動更新污它,詳見 Secure Gateways

  • 增加了信任域驗證TCP 流量的支持(之前只能支持 HTTP)剖踊,并且還支持在 MeshConfig 中進行靈活配置。

  • 增加通過 ECC 進行 CA 通信 的能力衫贬,提高了安全性和效率德澈。

  • 基于一條最佳實踐:不要讓運行的進程有多于它所需的權(quán)限,這會導致不必要的混淆固惯。網(wǎng)關(guān)默認使用非根(non-root)用戶部署梆造。

    這一最佳實踐,在編寫 Dockerfile 的時候也常會用到葬毫,詳見 Best practices for writing Dockerfiles镇辉。

  • 修復了關(guān)于一個 Istio Gateway 和 mTLS 的 bug屡穗。

易用性提升

在易用性方面主要的改進還是圍繞 istioctl 命令行工具。

生產(chǎn)運維改進

  • 增加讓 Sidecar 啟動之后才啟動應用容器的特性屹逛。

    這個特性非常的剛需础废,給 Istio 團隊點個贊。舉個例子煎源,在沒有這個特性的時候色迂,應用容器啟動后香缺,第一次連接數(shù)據(jù)庫總是失敗的手销,因為 Sidecar 還沒有啟動,網(wǎng)絡是無法通信的图张。類似锋拖,這種需要在啟動時通過 Sidecar 代理來訪問資源的時候,這個特性變得非常實用祸轮。使用方法兽埃,詳見變更列表的流量管理

  • 強調(diào) Istio Operator 是最佳安裝方式适袜。但是柄错,Operator 目前還不支持金絲雀更新

  • 提供istio-agent 的指標苦酱,可以觀察它的運行情況售貌。

  • Prometheus 指標收集方面的改進

VM 安全性

本次更新對 VM 沒有太多的重量級功能發(fā)布疫萤,主要更新如下:

  • VM 增加了安全特性颂跨,支持證書自動輪轉(zhuǎn)

  • istioctl 增加驗證 VM 的代理狀態(tài)

  • 增加RPM 安裝包

其他修復

升級

Require

Require Kubernetes 1.16+

Kubernetes 1.16+ is now required for installation.

說實話恒削,看到需要 Kubernetes 1.16+ 的時候,感覺 Istio 也太任性了吧尾序。目前絕大多數(shù)企業(yè)和用戶所使用的 Kubernetes 版本應該都是 1.16 以下的钓丰。這也就相當于拒接了許多現(xiàn)在的用戶,因為對于企業(yè)和用戶來講 Kubernetes 是比 Istio 更基礎的基礎設施每币。

另外携丁,對于低版本 Istio 的用戶也是傷害極大的,想要升級 Istio脯爪,還得先升級 Kubernetes则北,升級前還要驗證下是否有兼容性問題矿微。

安裝

  • 移除了 istioctl manifest apply,使用 istioctl install 代替尚揣。

  • 廢棄了 telemetry addons涌矢。

網(wǎng)關(guān)以非根(non-root)用戶運行

因為網(wǎng)關(guān)以非根(non-root)用戶運行,所以不具備綁定 1024 以下端口的權(quán)限快骗。所以娜庇,在網(wǎng)關(guān)端口聲明的地方,需要做響應的修改方篮。舉例如下:

ingressGateways:
  - name: istio-ingressgateway
    enabled: true
    k8s:
      service:
        ports:
          - port: 15021
            targetPort: 15021
            name: status-port
          - port: 80
            name: http2
          - port: 443
            name: https

這里名秀,需要修改成明確指定有效的 targetPort

ingressGateways:
  - name: istio-ingressgateway
    enabled: true
    k8s:
      service:
        ports:
          - port: 15021
            targetPort: 15021
            name: status-port
          - port: 80
            name: http2
            targetPort: 8080
          - port: 443
            name: https
            targetPort: 8443

如果你還是想以 root 用戶運行 gateway 的話,可以通過配置項設置 --set values.gateways.istio-ingressgateway.runAsRoot=true.

變更列表

流量管理

  • 增加了配置項 values.global.proxy.holdApplicationUntilProxyStarts藕溅,使 sidecar 注入器在 pod 容器列表的開始處注入 sidecar匕得,并將其配置為阻止所有其他容器的開始,直到代理就緒為止巾表。默認情況下禁用此選項汁掠。(Issue#11130)

  • 增加了對用于客戶端證書和 CA 證書的 SDS 支持,該證書用于使用 DestinationRule 從 Egress Gateway 發(fā)起的 TLS/mTLS集币。(Issue#14039)

安全

  • 改進的信任域驗證也可以驗證 TCP 流量考阱,以前僅支持 HTTP 流量。(Issue#26224)

  • 改進的 Istio 網(wǎng)關(guān)鞠苟,允許在服務器的 TLS 模式為 ISTIO_MUTUAL 時使用基于源主體的授權(quán)乞榨。(Issue#25818)

  • 改進的虛擬機安全性。VM 身份現(xiàn)在從一個短暫的 Kubernetes 服務帳戶令牌啟動当娱。VM 的工作負載證書會自動輪換吃既。(Issue#24554)

遙測

  • 向 istio-agent 添加了 Prometheus 指標。(Issue#22825)

  • 使用 istioctl 添加了自定義度量趾访。(Issue#25963)

  • 向 Stackdriver 添加了 TCP 度量標準和訪問日志态秧。(Issue#23134)

  • istioctl 已棄用遙測插件。默認情況下將禁用這些功能扼鞋,并且在將來的版本中將其完全刪除申鱼。有關(guān)安裝這些插件的更多信息,請參見“集成”頁面云头。(Issue#22762)

  • 默認情況下捐友,已啟用 Prometheus 指標合并。(Issue#21366)

  • 修復了 Prometheus 度量合并以在應用程序故障期間不刪除 Envoy 度量的問題溃槐。(Issue#22825)

  • 修復了無法解釋的會影響 Kiali 圖的遙測匣砖。此修復程序?qū)⒛J出站協(xié)議嗅探超時增加到 5s,這對像 mysql 這樣的服務器優(yōu)先協(xié)議產(chǎn)生了影響。(Issue#24379)

  • 刪除了不準確的 pilot_xds_eds_instancespilot_xds_eds_all_locality_endpoints Istiod 指標猴鲫。(Issue#25154)

安裝

  • 增加了用于在 VM 上運行 Istio sidecar 的 RPM 軟件包对人。(Issue#9117)

  • 增加了對單集群和多集群的實驗性中心 Istiod 支持

  • 修復了防止 NodePort 服務用作 meshNetworks 中的 registryServiceName 的問題拂共。

  • 改進的網(wǎng)關(guān)部署牺弄,默認情況下以非 root 身份運行。(Issue#23379)

  • 改進了 operator 默認情況下以非 root 用戶身份運行的情況宜狐。(Issue#24960)

  • 通過指定嚴格的安全上下文改進了 operator势告。(Issue#24963)

  • 改進了 Istiod,默認情況下以非 root 身份運行抚恒。(Issue#24961)

  • 改進的 Kubernetes 戰(zhàn)略合并用于覆蓋 IstioOperator 用戶文件咱台,從而改善了處理列表項的方式。(Issue#24432)

  • CRDWebhook 版本升級到 v1俭驮。(Issue#18771)(Issue#18838)

    因為 Kubernetes1.16 中將 webhook 的 API 版本改為 v1回溺,并會在 1.19 版本中刪除老的 v1beta 版本。這導致 Istio 不得不在自己的 1.8 版本之前完成對應的遷移表鳍。對于我們而言馅而,需要更新自己的 mesh 配置文件的版本號,如果你的集群應用較多譬圣,那是個不小的工作量,不單單要修改雄坪,而且還要驗證厘熟。

istioctl

  • 為從 Kubernetes 的非工作負載添加了 Allow proxy-status <pod> 命令,并通過 --file 參數(shù)傳遞了代理配置维哈。

  • 添加了一個配置文件以保存 istioctl 默認標志绳姨。可以使用環(huán)境變量 ISTIOCONFIG 更改其默認位置($HOME/.istioctl/config.yaml)阔挠。新命令 istioctl 實驗性配置列表顯示了默認標志飘庄。(Issue#23868)

  • istioctl initistioctl remove 命令添加了 --revision 標志,以支持多個控制平面升級购撼。(Issue#23479)

  • 添加了 istioctl x uninstall 命令以卸載 Istio 控制平面跪削。(Issue#24360)

  • 改進的 istioctl analyze 以警告是否存在已棄用的 mixer 資源。(Issue#24471)

  • 改進的 istioctl analyze 可警告 DestinationRule 是否未使用 CaCertificates 驗證服務器身份迂求。

  • 改進的 istioctl 驗證以檢查資源中的未知字段碾盐。(Issue#24861)

  • 改進的 istioctl 安裝,在嘗試以不支持的舊 Kubernetes 版本安裝 Istio 時發(fā)出警告揩局。(Issue#26141)

  • 刪除 istioctl manifest apply毫玖。更簡單的安裝命令將替換 manifest apply。(Issue#25737)

文檔

  • 如果 istio.io 頁面已通過 istio.io 自動化測試進行了測試,則添加了可視指示付枫。(Issue#7672)

小結(jié)

Istio 1.7 版本存在著太多的激進做法烹玉,也許 Istio 團隊也很無奈,但是 Service Mesh(Istio)作為云原生的一個基礎設施阐滩,這么“不穩(wěn)定”春霍,真的是好事嗎?

Istio 1.7 版本總體上看來叶眉,并無亮點址儒,反而因為一些激進的做法,導致用戶在安裝衅疙、升級過程中增加成本和不穩(wěn)定性莲趣,在用戶體驗上是一次嚴重的倒退。

綜上所述饱溢,筆者不建議大家立即更新 1.7喧伞。如果你硬要更新到 1.7,一定要先將升級變更列表仔細查看绩郎。

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末潘鲫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子肋杖,更是在濱河造成了極大的恐慌溉仑,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件状植,死亡現(xiàn)場離奇詭異浊竟,居然都是意外死亡,警方通過查閱死者的電腦和手機津畸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門振定,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肉拓,你說我怎么就攤上這事后频。” “怎么了暖途?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵卑惜,是天一觀的道長。 經(jīng)常有香客問我丧肴,道長残揉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任芋浮,我火速辦了婚禮抱环,結(jié)果婚禮上壳快,老公的妹妹穿的比我還像新娘。我一直安慰自己镇草,他們只是感情好眶痰,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著梯啤,像睡著了一般竖伯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上因宇,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天七婴,我揣著相機與錄音,去河邊找鬼察滑。 笑死打厘,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的贺辰。 我是一名探鬼主播户盯,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼饲化!你這毒婦竟也來了莽鸭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤吃靠,失蹤者是張志新(化名)和其女友劉穎硫眨,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撩笆,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡捺球,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了夕冲。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡裂逐,死狀恐怖歹鱼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卜高,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站赏僧,受9級特大地震影響匿情,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜薪缆,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一秧廉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦疼电、人聲如沸嚼锄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽区丑。三九已至,卻和暖如春修陡,著一層夾襖步出監(jiān)牢的瞬間沧侥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工魄鸦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宴杀,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓号杏,卻偏偏與公主長得像婴氮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子盾致,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容