基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能

基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括東陽(yáng)網(wǎng)站建設(shè)、東陽(yáng)網(wǎng)站制作、東陽(yáng)網(wǎng)頁(yè)制作以及東陽(yáng)網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,東陽(yáng)網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到東陽(yáng)省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

小編將介紹如何使用 ORAS 客戶端將具有允許的媒體類型的 Wasm 模塊推送到 ACR 注冊(cè)庫(kù)(一個(gè) OCI 兼容的注冊(cè)庫(kù))中,然后通過(guò) ASM 控制器將 Wasm Filter 部署到指定工作負(fù)載對(duì)應(yīng)的 Pod 中。Wasm Filter 部署中的所有步驟都使用聲明方式,也就是說(shuō)可以創(chuàng)建一個(gè)自定義資源 CRD 來(lái)描述 Wasm Filter 的部署。一旦該 CRD 創(chuàng)建之后,ASM 控制器可以將 Wasm 模塊加載到數(shù)據(jù)平面層中的相應(yīng) Envoy 代理中,同時(shí)在控制平面層中也會(huì)創(chuàng)建相應(yīng)的 Istio EnvoyFilter 自定義資源。

Envoy Filter 介紹

首先回顧一下 EnvoyProxy 的實(shí)現(xiàn)機(jī)制。Envoy 的核心是一個(gè) L3/L4 網(wǎng)絡(luò)代理,并支持 L7 代理,通過(guò)提供可插入 filter chain 機(jī)制允許開(kāi)發(fā)人員編寫 filter 來(lái)執(zhí)行不同的任務(wù),譬如我們常用到的 HTTP connection manager,將原始字節(jié)轉(zhuǎn)換為 HTTP 級(jí)別的消息和事件,還處理所有 HTTP 連接和請(qǐng)求共有的功能包括訪問(wèn)日志、tracing 等。

基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能

上圖可以看到:Downstream 作為連接到 Envoy 并發(fā)送請(qǐng)求以及接收響應(yīng)的客戶端部分, 監(jiān)聽(tīng)器 Listener 組件用于綁定到 IP 地址/端口并接收來(lái)自 Downstream 下游的連接。通過(guò)配置 Listener,用戶可以啟用通過(guò)代理的流量管理能力,然后使用多個(gè) Filter 增強(qiáng)數(shù)據(jù)流,多個(gè) Filter 構(gòu)成了一個(gè) Filter Chain??梢钥吹浇?jīng)過(guò)這些 Filter chain 處理之后, 會(huì)把請(qǐng)求映射到相應(yīng)的 Cluster(此處的 Cluster 集群是指 Envoy 連接到的邏輯上相同的一組上游主機(jī),與下文中提交的 Kubernetes 集群沒(méi)有關(guān)系),而 Cluster 的作用是負(fù)責(zé)連接到一組上游節(jié)點(diǎn)服務(wù), 并使用關(guān)聯(lián)的負(fù)載均衡策略轉(zhuǎn)發(fā)這些請(qǐng)求。

根據(jù)處理任務(wù)的不同,Envoy Filter 分為三類:

  • Listener Filter:用于操作處理 L4 連接中的元數(shù)據(jù)。

  • Network Filter:用于操作處理 L4 連接中的原始數(shù)據(jù)。

  • HTTP Filter:用于操作處理 L7 連接中的 HTTP 請(qǐng)求與響應(yīng)。

除了這些 built-in Filter 之外,還可以開(kāi)發(fā)自定義的 Filter,可使用 native c++ 編譯方式,或是通過(guò) wasm 技術(shù)構(gòu)建 Filter。

此外,Envoy 提供了一組 API,也就是我們常說(shuō)的 xDS API。通過(guò)這些 API,控制平面可以動(dòng)態(tài)地配置 Envoy 代理。

基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能

如上圖所示,與進(jìn)站流量類似,對(duì)于出站流量來(lái)說(shuō),監(jiān)聽(tīng)器在配置的地址或者端口進(jìn)行監(jiān)聽(tīng)網(wǎng)絡(luò)流量的請(qǐng)求。每個(gè)監(jiān)聽(tīng)器同樣會(huì)定義一組位于數(shù)據(jù)路徑中的 Filter,并形成一組過(guò)濾器鏈 Filter Chain。通過(guò)這樣的一組過(guò)濾器,用戶可以配置 Envoy 來(lái)針對(duì)出站流量做特定的任務(wù),包括數(shù)據(jù)協(xié)議處理、生成調(diào)用的統(tǒng)計(jì)信息、執(zhí)行 RBAC 權(quán)限等。

基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能

為了更好地理解這些 Envoy Filter 以及 Filter Chain,下面來(lái)看一個(gè)實(shí)際的例子。這個(gè)就是 Istio 官方示例 bookinfo 中的第一個(gè)服務(wù) productpage。首先, productpage pod 中 Envoy Proxy 配置了一個(gè)監(jiān)聽(tīng) 9080 端口的監(jiān)聽(tīng)器,進(jìn)入這個(gè) pod 的端口 9080 上的流量請(qǐng)求都會(huì)被攔截到這個(gè) proxy 中,然后請(qǐng)求就會(huì)經(jīng)過(guò)這些 Filter Chain 進(jìn)行處理。具體如下:

  • 第一個(gè) filter 是 envoy.filters.network.metadata_exchange,它的主要作用顧名思義,用來(lái)在 filter 之間交換元數(shù)據(jù)。

  • 第二個(gè) filter: envoy.http_connection_manager,它下面通常會(huì)有以下幾個(gè)跟 http 特定的 filter,包括:

    • envoy.filters.http.wasm/envoy.wasm.metadata_exchange(用于元數(shù)據(jù)交互)

    • Istio_authn filter(用于授權(quán)認(rèn)證)

    • envoy.filters.http.cors(處理跨域資源共享的 filter)

    • envoy.filters.http.fault(故障注入過(guò)濾器,可以用來(lái)測(cè)試微服務(wù)架構(gòu)中容錯(cuò)能力,用戶可以自定義錯(cuò)誤代碼來(lái)實(shí)現(xiàn)延時(shí)注入或者終止請(qǐng)求,在不同的失敗場(chǎng)景下提供錯(cuò)誤處理的能力,例如服務(wù)失敗、服務(wù)過(guò)載、服務(wù)高延時(shí)等情況,這個(gè)也是較為常用的 filter)

    • envoy.filters.http.wasm/envoy.wasm.stats、envoy.filters.http.wasm/xxx-wasmfilter(用戶自定義的 wasm 實(shí)現(xiàn)的filter)

    • envoy.filters.http.router(實(shí)現(xiàn) HTTP 轉(zhuǎn)發(fā),幾乎所有 HTTP 場(chǎng)景下都會(huì)使用到這一過(guò)濾器)

備注:可以通過(guò)請(qǐng)求這個(gè) URL 地址獲取配置信息:kubectl exec -it [productpage-xxx] -c istio-proxy curl localhost:15000/config_dump

添加新的 Filter

Envoy 社區(qū)已經(jīng)提供了若干個(gè) Built-in Filters,具體參見(jiàn):https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/http_filters。

在服務(wù)網(wǎng)格中,可以通過(guò) API 啟用這些 Built-in Filter 能力。

如果這些 Built-in Filter 無(wú)法滿足需求,還可以通過(guò)自定義 Filter 實(shí)現(xiàn),有以下兩種方式:

  • 靜態(tài)預(yù)編譯

    • 將其他過(guò)濾器集成到 Envoy 的源代碼中,并編譯新的 Envoy 版本。

    • 這種方法的缺點(diǎn)是您需要維護(hù) Envoy 版本,并不斷使其與官方發(fā)行版保持同步。

    • 由于 Envoy 是用 C++ 實(shí)現(xiàn)的,因此新開(kāi)發(fā)的過(guò)濾器也必須用 C++ 實(shí)現(xiàn)。 

  • 動(dòng)態(tài)運(yùn)行時(shí)加載

    • 在運(yùn)行時(shí)將新的過(guò)濾器動(dòng)態(tài)加載到 Envoy 代理中。

    • 為了簡(jiǎn)化擴(kuò)展 Envoy 的過(guò)程, 通過(guò)引入 WebAssembly 技術(shù) - 它是一種有效的可移植二進(jìn)制指令格式,提供了可嵌入和隔離的執(zhí)行環(huán)境。

使用 Wasm 擴(kuò)展 Envoy Proxy 的優(yōu)缺點(diǎn)

在實(shí)際應(yīng)用中,會(huì)根據(jù)以下優(yōu)缺點(diǎn)來(lái)決定是否使用 Wasm 這種方式擴(kuò)展 Envoy Filter。

Pros

  • 敏捷性:過(guò)濾器可以動(dòng)態(tài)加載到正在運(yùn)行的 Envoy 進(jìn)程中,而無(wú)需停止或重新編譯。

  • 可維護(hù)性:不必更改 Envoy 自身基礎(chǔ)代碼庫(kù)即可擴(kuò)展其功能。

  • 多樣性:可以將流行的編程語(yǔ)言(例如 C/C++ 和 Rust)編譯為 WASM,因此開(kāi)發(fā)人員可以選擇實(shí)現(xiàn)過(guò)濾器的編程語(yǔ)言。

  • 可靠性和隔離性:過(guò)濾器會(huì)被部署到 VM 沙箱中,因此與 Envoy 進(jìn)程本身是隔離的;即使當(dāng) WASM Filter 出現(xiàn)問(wèn)題導(dǎo)致崩潰時(shí),它也不會(huì)影響 Envoy 進(jìn)程。

  • 安全性:過(guò)濾器通過(guò)預(yù)定義 API 與 Envoy 代理進(jìn)行通信,因此它們可以訪問(wèn)并只能修改有限數(shù)量的連接或請(qǐng)求屬性。

Cons

  • 性能約為 C++ 編寫的原生靜態(tài)編譯的 Filter 的 70%。

  • 由于需要啟動(dòng)一個(gè)或多個(gè) WASM 虛擬機(jī),因此會(huì)消耗一定的內(nèi)存使用量。

  • The WebAssembly ecosystem is still young。

envoy-wasm 運(yùn)行機(jī)制

如下圖所示,envoy-wasm 運(yùn)行機(jī)制包括以下幾個(gè)步驟:

基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能

  • Wasm 二進(jìn)制代碼需要能夠被動(dòng)態(tài)加載進(jìn)來(lái),無(wú)論是通過(guò) local file 方式還是 xds 遠(yuǎn)程獲取方式。

  • 一個(gè) Wasm filter 是否被允許加載,需要一致性校驗(yàn):https://github.com/proxy-wasm/spec。

  • 一旦被加載之后,Wasm filter 就成為 filter chain 的一部分,當(dāng)新的請(qǐng)求進(jìn)來(lái)之后,還是先進(jìn)入到原生的 filter,之后進(jìn)入到 Proxy-Wasm 擴(kuò)展控制器。

  • Proxy-Wasm 擴(kuò)展控制器會(huì)根據(jù)在 filter chain 中定義的 configuration 信息,調(diào)用并執(zhí)行注冊(cè)的校驗(yàn)過(guò)的這些 Wasm filter。

  • 內(nèi)置的 Wasm runtime 支持:LLVM-based WAVM ~20MB, and V8 ~10MB。

  • 事件驅(qū)動(dòng)模型。

  • 兼容 native filter 調(diào)用方式。

如下所示,是下發(fā)到 Envoy Proxy 側(cè)的一個(gè) Wasm Filter 的配置內(nèi)容。

基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能

以上講述了 Envoy Filter 以及通過(guò) Wasm 擴(kuò)展的方式,引出了 Wasm filter 機(jī)制,這將是未來(lái)的主流方式。

在一個(gè)服務(wù)網(wǎng)格體系中,如何以有效并且簡(jiǎn)單的方式來(lái)管理 Wasm filter 的部署運(yùn)行,將是云產(chǎn)品需要解決的一個(gè)問(wèn)題。

OPAS 及 Wasm filter 注冊(cè)庫(kù)

在 Cloud Native 生態(tài)系統(tǒng)中,如何管理一個(gè) Artifact 文件,相信絕大多數(shù)人會(huì)想到 oci 規(guī)范標(biāo)準(zhǔn),是否可以像管理 Docker 鏡像那樣去管理這些 Wasm filter。

ORAS 項(xiàng)目就是用來(lái)解決這個(gè)問(wèn)題的,它的全稱為 OCI Registry As Storage。ORAS 是 OCI Artifacts 項(xiàng)目的參考實(shí)現(xiàn),可以顯著地簡(jiǎn)化 OCI 注冊(cè)庫(kù)中任意內(nèi)容的存儲(chǔ)。

使用 ORAS API/SDK Library 可以構(gòu)建自定義工具,完成以下功能:

  • 將 WebAssembly 模塊推入到 OCI 注冊(cè)庫(kù)中。

  • 從 OCI 注冊(cè)庫(kù)中拉取 WebAssembly 模塊。

oras cli 的使用類似于 docker cli,如下所示:

基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能

以阿里云容器鏡像服務(wù)企業(yè)版 ACR EE 為例,作為企業(yè)級(jí)云原生應(yīng)用制品管理平臺(tái),已經(jīng)提供了容器鏡像、Helm Chart 以及符合 OCI 規(guī)范的制品的生命周期管理。開(kāi)通之后,創(chuàng)建一個(gè)鏡像倉(cāng)庫(kù),會(huì)分配一個(gè)地址,提供了 vpc 和公網(wǎng)兩種方式。

使用 oras login 命令行登錄, 執(zhí)行以下命令:

oras login --username=<登錄賬號(hào)> acree-1-registry.cn-hangzhou.cr.aliyuncs.com

通過(guò)oras push命令推送, 執(zhí)行以下命令:

oras push acree-1-registry.cn-hangzhou.cr.aliyuncs.com/******/asm-test:v0.1 --manifest-config runtime-config.json:application/vnd.module.wasm.config.v1+json  example-filter.wasm:application/vnd.module.wasm.content.layer.v1+wasm

注意參數(shù) --manifest-config,可以參考 Wasm Artifact 鏡像規(guī)范。

Wasm filter 被推送到 ACR EE 注冊(cè)庫(kù)中之后,可以查看相關(guān)信息,如下:

基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能

阿里云服務(wù)網(wǎng)格 ASM 架構(gòu)

在阿里云服務(wù)網(wǎng)格 ASM 產(chǎn)品中是如何使用 Wasm 技術(shù)呢?首先我們了解一下 ASM 產(chǎn)品的技術(shù)架構(gòu),如下圖所示。作為業(yè)內(nèi)首個(gè)全托管 Istio 兼容的服務(wù)網(wǎng)格產(chǎn)品,ASM 的定位是專注打造全托管、安全、穩(wěn)定、易用的服務(wù)網(wǎng)格,以及支持跨地域多集群、多云混合云服務(wù)的統(tǒng)一治理。控制平面的組件托管在阿里云側(cè),與數(shù)據(jù)面?zhèn)鹊挠脩艏航怦瞠?dú)立,降低用戶使用的復(fù)雜度,用戶只需要專注于業(yè)務(wù)應(yīng)用的開(kāi)發(fā)部署。在托管模式下,保持與 Istio 的兼容,支持聲明式的方式定義靈活的路由規(guī)則,支持多個(gè) Kubernetes 集群的統(tǒng)一流量管理。

基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能

服務(wù)網(wǎng)格 ASM 作為連接上層應(yīng)用和下層計(jì)算基礎(chǔ)設(shè)施的重要環(huán)節(jié),可以分為 3 個(gè)角度來(lái)理解:

  • 從向下與基礎(chǔ)設(shè)施融合的角度

  • 服務(wù)網(wǎng)格自身的能力建設(shè)的角度

  • 向上支持應(yīng)用層以及被集成能力的角度

其中, 從服務(wù)網(wǎng)格自身的能力建設(shè)來(lái)看,ASM 作為一個(gè)托管的服務(wù)網(wǎng)格產(chǎn)品,提供了柔性架構(gòu),可以支持不同版本的、定制的 Istio 控制面與數(shù)據(jù)面 Proxy 代理。

  • 在托管側(cè),將控制面核心組件進(jìn)行改造托管,并負(fù)責(zé)整個(gè)控制面和數(shù)據(jù)面組件的生命周期管理。在產(chǎn)品能力方面,ASM 在 Mesh CA、安全審計(jì)方面做了增強(qiáng)提升網(wǎng)格實(shí)例的安全度;把客戶場(chǎng)景的常見(jiàn)問(wèn)題形成了診斷規(guī)則,用戶可以自行運(yùn)行診斷分析。 

  • 在做核心托管側(cè)的建設(shè)之外,ASM 優(yōu)化整合了阿里云的多個(gè)產(chǎn)品服務(wù),如:在可觀測(cè)性方面,整合了 xtrace、arms、日志服務(wù)等;在跨 vpc 網(wǎng)絡(luò)打通方面整合了 cen,實(shí)現(xiàn)多集群的互聯(lián)互通;在限流方面集成了 AHAS 的限流服務(wù)。

  • ASM 還集成擴(kuò)展了社區(qū)開(kāi)源的組件能力,包括在安全方面的 OPA 安全引擎的支持、spiffe/spire 的支持、envoyfilter 的擴(kuò)展支持等。所以這一部分需要提供一種簡(jiǎn)單有效的方式幫助用戶輕松擴(kuò)展這些能力。

在阿里云 ASM 中使用 Wasm

隨著新架構(gòu)的優(yōu)化,WebAssembly 技術(shù)被引入服務(wù)網(wǎng)格中,解決代理擴(kuò)展的問(wèn)題。這樣一來(lái), ASM 架構(gòu)就變成了“托管的高可用彈性控制平面 + 可擴(kuò)展的插件式的數(shù)據(jù)平面“的模式。

阿里云服務(wù)網(wǎng)格 ASM 產(chǎn)品中提供了對(duì) WebAssembly(WASM)技術(shù)的支持,服務(wù)網(wǎng)格使用人員可以把擴(kuò)展的 WASM Filter 通過(guò) ASM 部署到數(shù)據(jù)面集群中相應(yīng)的 Envoy 代理中。通過(guò) ASMFilterDeployment  Controller 組件,  可以支持動(dòng)態(tài)加載插件、簡(jiǎn)單易用、以及支持熱更新等能力。

基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能

通過(guò)這種過(guò)濾器擴(kuò)展機(jī)制,可以輕松擴(kuò)展 Envoy 的功能并將其在服務(wù)網(wǎng)格中的應(yīng)用推向了新的高度。

下面我們具體來(lái)看在 ASM 實(shí)例中是怎樣啟用這個(gè)能力的?

部署一個(gè) ASM 實(shí)例之后,默認(rèn)該功能是沒(méi)有開(kāi)啟的,用戶需要主動(dòng)去開(kāi)啟。例如通過(guò)如下 aliyun cli 方式:

aliyun servicemesh UpdateMeshFeature  --ServiceMeshId=xxxxxx --WebAssemblyFilterEnabled=true

開(kāi)啟該功能之后,ASM 實(shí)例會(huì)部署相關(guān)組件并執(zhí)行如下任務(wù):

  • 部署一個(gè) DaemonSet(asmwasm-controller) 到 K8s 集群中。

  • asmwasm-controller 監(jiān)聽(tīng)一個(gè) configmap,該 configmap 存放要拉取的 wasm filter 的地址,例如:acree-1-registry.cn-hangzhou.cr.aliyuncs.com/*******/sample:v0.1。

  • 如果需要授權(quán)認(rèn)證,該 asmwasm-controller 會(huì)根據(jù)定義的 pullSecret 值獲得相應(yīng)的 secret 值。

  • 然后,調(diào)用 oras API 從注冊(cè)庫(kù)中動(dòng)態(tài)拉取 Wasm filter。

  • 該 asmwasm-controller 使用 HostPath 方式掛載 volume,所以拉取的 Wasm filter 會(huì)落盤到對(duì)應(yīng)的節(jié)點(diǎn)上。

啟用了該功能之后,如何開(kāi)始部署一個(gè) Wasm filter 并掛載到對(duì)應(yīng) workload 的 Envoy Proxy 中呢?

基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能

阿里云服務(wù)網(wǎng)格 ASM 產(chǎn)品提供了一個(gè)新的 CRD ASMFilterDeployment 以及相關(guān)的 controller 組件。這個(gè) controller 組件會(huì)監(jiān)聽(tīng) ASMFilterDeployment 資源對(duì)象的情況,會(huì)做 2 個(gè)方面的事情:

  • 創(chuàng)建出用于控制面的 Istio EnvoyFilter Custom Resource,并推送到對(duì)應(yīng)的 asm 控制面 istiod 中。

  • 從 OCI 注冊(cè)庫(kù)中拉取對(duì)應(yīng)的 wasm filter 鏡像,并掛載到對(duì)應(yīng)的 workload pod 中。

以下是一個(gè) ASMFilterDeployment CR 示例:

apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMFilterDeployment
metadata:
  name: details-v1-wasmfiltersample
spec:
  workload:
    kind: Deployment
    labels:
      app: details
      version: v1
  filter:
    parameters: '{"name":"hello","value":"hello details"}'
    image: 'acree-1-registry.cn-hangzhou.cr.aliyuncs.com/asm/asm-test:v0.1'
    imagePullOptions: 
      pullSecret: 'asmwasm-cache'
    rootID: 'my_root_id'
    id: 'details-v1-wasmfiltersample.default'

生成的 Istio Envoy Filter 資源如下所示:

基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能

其中,match 片段中定義了 envoy.router 這個(gè) filter、patch 片段中定義了 INSERT_BEFORE 操作,插入一個(gè) Wasm filter,如下:

基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能

掛載了 Wasm filter 的工作負(fù)載定義更新后如下,其中以 hostpath 方式掛載 Wasm filter 文件到 Proxy 容器中:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
.…
spec:
   ….
   template:
      metadata:
          annotations:
              sidecar.istio.io/userVolume: '[{"name":"wasmfilters-dir","hostPath":{"path":"/var/local/lib/wasm-filters"}}]’
              sidecar.istio.io/userVolumeMount: '[{"mountPath":"/var/local/lib/wasm-filters","name":"wasmfilters-dir"}]'

確認(rèn) Wasm filter 是否生效。登錄到 productpage Pod 的 istio-proxy 容器中,執(zhí)行以下命令,將一些流量發(fā)送到 details 服務(wù)上。在響應(yīng)中,可以看到過(guò)濾器的頭添加到響應(yīng)頭中。

kubectl exec -ti  deploy/productpage-v1 -c istio-proxy -- curl -v http://details:9080/details/123
*   Trying 172.21.9.191...
* TCP_NODELAY set
* Connected to details (172.21.9.191) port 9080 (#0)
> GET /details/123 HTTP/1.1
> Host: details:9080
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
xxxxxxx
< resp-header-demo: added by our filter
xxxxx
* Connection #0 to host details left intact
xxxxx

關(guān)于基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

本文標(biāo)題:基于Wasm和ORAS如何簡(jiǎn)化擴(kuò)展服務(wù)網(wǎng)格功能
網(wǎng)站URL:http://www.muchs.cn/article40/jpcsho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站建設(shè)Google、微信公眾號(hào)、域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)