Golang HTTP 過濾器

在此範例中,我們展示如何將 Golang 過濾器與 Envoy 代理一起使用。

此範例示範一個 Go 外掛程式,可以直接回應請求,也可以更新上游伺服器提供的回應。

它還顯示如何在執行時獨立配置 Go 外掛程式。

步驟 1:編譯 Go 外掛程式庫

變更到 examples/golang-http 目錄,並建置 Go 外掛程式庫。

$ pwd
envoy/examples/golang-http
$ docker compose -f docker-compose-go.yaml run --rm go_plugin_compile

編譯後的程式庫現在應該位於 lib 資料夾中。

$ ls lib
simple.so

步驟 2:啟動所有容器

啟動所有容器。

$ docker compose pull
$ docker compose up --build -d
$ docker compose ps

      Name                      Command               State                          Ports
-----------------------------------------------------------------------------------------------------------------------
golang_proxy_1         /docker-entrypoint.sh /usr ...   Up      10000/tcp, 0.0.0.0:10000->10000/tcp,:::10000->10000/tcp
golang_web_service_1   /bin/echo-server                 Up      8080/tcp

步驟 3:發出一個由 Go 外掛程式處理的請求

以下 curl 命令的輸出應包含簡單 Go 外掛程式新增的標頭。

$ curl -v localhost:10000 2>&1 | grep rsp-header-from-go
< rsp-header-from-go: bar-test

步驟 4:發出一個由上游處理並由 Go 外掛程式更新的請求

以下 curl 命令的輸出應包含已由簡單 Go 外掛程式更新的本文。

$ curl localhost:10000/update_upstream_response 2>&1 | grep "updated"
upstream response body updated by the simple plugin

步驟 5:發出一個使用自訂配置的 Go 外掛程式處理的請求

以下 curl 命令的輸出應包含由簡單 Go 外掛程式提供的 prefix_localreply_body 值。

$ curl localhost:10000/localreply_by_config  2>&1 | grep "localreply"
Configured local reply from go, path: /localreply_by_config

另請參閱

Envoy Go 過濾器

關於 Envoy Go 過濾器的詳細資訊。

Go 擴充功能 API

Go 擴充功能過濾器 API。

Go 外掛程式 API

Envoy Go 外掛程式 API 的概述。