为特使建立控制平面的指南-部署权衡
部署控制平面組件
構(gòu)建并設(shè)計(jì)了控制平面后,您將需要確切確定如何部署其組件。 在這里,您可以選擇將控制平面與數(shù)據(jù)平面共置一處以集中控制平面。 這里還有一個(gè)中間立場(chǎng):部署與控制平面位于同一位置的某些組件,并使某些組件保持集中。 讓我們來(lái)看看。
在Istio服務(wù)網(wǎng)格項(xiàng)目中,控制平面組件的部署和運(yùn)行與數(shù)據(jù)平面分開(kāi)進(jìn)行集中管理。 也就是說(shuō),數(shù)據(jù)平面與應(yīng)用程序一起運(yùn)行,并處理所有應(yīng)用程序流量,并通過(guò)gRPC流上的xDS API與控制平面進(jìn)行通信。 控制平面組件通常在其自己的名稱空間中運(yùn)行,并且理想情況下應(yīng)防止意外使用。
Gloo項(xiàng)目遵循類(lèi)似的部署模型。 控制平面組件與數(shù)據(jù)平面分離,而Envoy數(shù)據(jù)平面使用xDS gRPC流傳輸來(lái)收集有關(guān)偵聽(tīng)器,路由和集群等的配置。您可以使用Gloo部署與數(shù)據(jù)平面代理位于同一位置的組件,但這就是泄氣。 我們將稍后討論一些權(quán)衡。
最后,我們來(lái)看一下將控制平面組件與數(shù)據(jù)平面共同部署的情況。 在Contour項(xiàng)目中,默認(rèn)情況下,控制平面組件與數(shù)據(jù)平面一起部署,盡管可以選擇拆分部署 。 Contour實(shí)際上使用杠桿CRD或Ingress資源進(jìn)行配置,因此所有配置文件的處理和監(jiān)視都在Kubernetes中進(jìn)行。 但是,xDS服務(wù)與數(shù)據(jù)平面共同部署(同樣,默認(rèn)情況下,您可以拆分它們)。
當(dāng)eBay為部署Envoy構(gòu)建其控制平面時(shí) ,他們還將其控制平面的部分(發(fā)現(xiàn)部件)與數(shù)據(jù)平面進(jìn)行了聯(lián)合部署。 他們基本上編寫(xiě)了一個(gè)控制器來(lái)監(jiān)視CRD,Ingress和Service資源,然后生成配置映射。 然后,這些配置映射將由與Pod一起運(yùn)行的discovery容器消耗,并提供給Envoy。
我應(yīng)該分開(kāi)控制飛機(jī)嗎?
各種方法各有利弊。 Gloo團(tuán)隊(duì)認(rèn)為,對(duì)于大多數(shù)用例而言,將控制平面分隔開(kāi)是正確的選擇,但您可能出于某些優(yōu)化或不足的理由而將某些組件共置一處。
如果說(shuō)Envoy是L7網(wǎng)絡(luò)的心臟和靈魂,那么控制平面就是大腦。 在以下方面,控制平面必然具有不同的特性:
- 安全性–如果您的數(shù)據(jù)平面以某種方式受到威脅,您將遭受重創(chuàng); 您絕對(duì)不希望通過(guò)讓控制平面受到威脅而放棄對(duì)其余應(yīng)用程序和網(wǎng)絡(luò)的控制來(lái)加劇情況。 此外,控制平面可能正在處理密鑰,證書(shū)或應(yīng)與數(shù)據(jù)平面分開(kāi)存放的其他機(jī)密的分發(fā)。
- 縮放–您可能最終將以不同的方式縮放數(shù)據(jù)平面和控制平面。
- 分組–您可能在數(shù)據(jù)平面中具有不同的角色和職責(zé); 例如,您的邊緣可能有數(shù)據(jù)平面Envoy,與用于微服務(wù)的共享代理池和可能部署的任何sidecar代理相比,它們需要的安全性和網(wǎng)絡(luò)狀態(tài)有所不同。 控制平面與數(shù)據(jù)平面位于同一位置,這使得保持?jǐn)?shù)據(jù)和配置分離更加困難
- 資源使用情況–您可能希望根據(jù)組件來(lái)分配或限制某些資源使用情況。 例如,您的數(shù)據(jù)平面可能比控制平面(控制面板可能需要更多的內(nèi)存)要占用更多的計(jì)算資源,并且您將使用不同的資源限制來(lái)履行這些角色。 將它們分開(kāi)可以為您提供更多的細(xì)粒度資源池選項(xiàng),而不僅僅是將它們組合在一起。 此外,如果控制平面和數(shù)據(jù)平面并置并爭(zhēng)用相同的資源,則可能會(huì)獲得難以診斷的奇數(shù)尾部延遲。
- 部署/生命周期–您可能希望獨(dú)立于數(shù)據(jù)平面修補(bǔ),升級(jí)或以其他方式維護(hù)控制平面
- 存儲(chǔ)–如果您的控制平面需要任何類(lèi)型的存儲(chǔ),則可以在不分離數(shù)據(jù)平面的情況下進(jìn)行單獨(dú)配置(如果分離出組件)
- 狀態(tài)–了解控制平面的狀態(tài)
由于這些原因,將控制平面保持在臂長(zhǎng)且與數(shù)據(jù)平面分離是有意義的。
帶走
考慮構(gòu)成控制平面的運(yùn)行時(shí)組件,并希望將它們部署在分離的體系結(jié)構(gòu)中。 協(xié)同定位可能是有道理的,但不要為此過(guò)早優(yōu)化。
翻譯自: https://www.javacodegeeks.com/2019/02/control-plane-envoy-deployment-tradeoffs.html
總結(jié)
以上是生活随笔為你收集整理的为特使建立控制平面的指南-部署权衡的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 查封备案表(查封备案)
- 下一篇: 詹金斯搭建_与詹金斯一起连续交付Hero