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 的概述。