From 64a257141e277c5187a9dbfc065c6da7f4de2b5d Mon Sep 17 00:00:00 2001 From: Antonette Caldwell Date: Sat, 20 Aug 2022 22:54:06 -0500 Subject: [PATCH] Fix Envoy proxy failing in tcp-metrics Description: This fixes a previous open issue https://github.com/layer5io/wasm-filters/issues/39 Updated envoy.yaml - Envoy now calls for typed_config in `v3` - Rearranged placement of the filters, but it probably can be reworked to make it cleaner - Clusters is now set up with an endpoint, instead of `hosts` - Probably need to fix spacing Signed-off-by: Antonette Caldwell --- tcp-metrics/Cargo.toml | 2 +- tcp-metrics/envoy.yaml | 119 +++++++++++++++++++----------------- tcp-packet-parse/Cargo.toml | 2 +- tcp-packet-parse/envoy.yaml | 119 +++++++++++++++++++----------------- 4 files changed, 130 insertions(+), 112 deletions(-) diff --git a/tcp-metrics/Cargo.toml b/tcp-metrics/Cargo.toml index 6c46b66..9b8e1bb 100644 --- a/tcp-metrics/Cargo.toml +++ b/tcp-metrics/Cargo.toml @@ -10,5 +10,5 @@ edition = "2018" crate-type = ["cdylib"] [dependencies] -proxy-wasm = "0.1.0" +proxy-wasm = "0.2.0" wasm-bindgen = "0.2" diff --git a/tcp-metrics/envoy.yaml b/tcp-metrics/envoy.yaml index 4aac1f5..28e3f4a 100644 --- a/tcp-metrics/envoy.yaml +++ b/tcp-metrics/envoy.yaml @@ -1,65 +1,74 @@ static_resources: listeners: - - name: main - address: - socket_address: - address: 0.0.0.0 - port_value: 80 - filter_chains: - - filters: - - name: envoy.filters.network.wasm - config: - config: - name: "tcp_metrics" - root_id: "tcp_metrics" - vm_config: - runtime: "envoy.wasm.runtime.v8" - code: - local: - filename: "/etc/tcp_metrics.wasm" - allow_precompiled: true - - name: envoy.tcp_proxy - config: - stat_prefix: ingress_tcp - cluster: web_service - - name: staticreply - address: - socket_address: - address: 127.0.0.1 - port_value: 8099 - filter_chains: - - filters: - - name: envoy.http_connection_manager - config: - stat_prefix: ingress_http - codec_type: auto - route_config: - name: local_route - virtual_hosts: - - name: local_service - domains: - - "*" - routes: - - match: - prefix: "/" - direct_response: - status: 200 - body: - inline_string: "example body\n" - http_filters: - - name: envoy.router - config: {} + - name: main + address: + socket_address: + address: 0.0.0.0 + port_value: 80 + filter_chains: + - filters: + - name: envoy.filters.network.tcp_proxy + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy + stat_prefix: ingress_tcp + cluster: web_service + - name: staticreply + address: + socket_address: + address: 127.0.0.1 + port_value: 8099 + filter_chains: + - filters: + - name: envoy.http_connection_manager + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager + stat_prefix: ingress_http + codec_type: AUTO + route_config: + name: local_route + virtual_hosts: + - name: local_service + domains: + - "*" + routes: + - match: + prefix: "/" + direct_response: + status: 200 + body: + inline_string: "example body\n" + http_filters: + - name: envoy.filters.http.wasm + typed_config: + "@type": type.googleapis.com/udpa.type.v1.TypedStruct + type_url: type.googleapis.com/envoy.extensions.filters.http.wasm.v3.Wasm + value: + config: + vm_config: + vm_id: "tcp_metrics" + runtime: "envoy.wasm.runtime.v8" + code: + local: + filename: "/etc/tcp_metrics.wasm" + - name: envoy.filters.http.router + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router clusters: - name: web_service - connect_timeout: 0.25s type: STRICT_DNS lb_policy: round_robin - hosts: - - socket_address: - address: web_service - port_value: 5678 + connect_timeout: 0.25s + load_assignment: + cluster_name: web_service + endpoints: + - lb_endpoints: + - endpoint: + address: + socket_address: + address: web_service + port_value: 5678 admin: - access_log_path: "/dev/null" + access_log_path: /dev/null address: socket_address: address: 0.0.0.0 diff --git a/tcp-packet-parse/Cargo.toml b/tcp-packet-parse/Cargo.toml index edd5f2f..b3ec7dd 100644 --- a/tcp-packet-parse/Cargo.toml +++ b/tcp-packet-parse/Cargo.toml @@ -10,5 +10,5 @@ edition = "2018" crate-type = ["cdylib"] [dependencies] -proxy-wasm = "0.1.0" +proxy-wasm = "0.2.0" wasm-bindgen = "0.2" diff --git a/tcp-packet-parse/envoy.yaml b/tcp-packet-parse/envoy.yaml index 18c7c9c..456bab1 100644 --- a/tcp-packet-parse/envoy.yaml +++ b/tcp-packet-parse/envoy.yaml @@ -1,65 +1,74 @@ static_resources: listeners: - - name: main - address: - socket_address: - address: 0.0.0.0 - port_value: 80 - filter_chains: - - filters: - - name: envoy.filters.network.wasm - config: - config: - name: "tcp_packet_parse" - root_id: "tcp_packet_parse" - vm_config: - runtime: "envoy.wasm.runtime.v8" - code: - local: - filename: "/etc/tcp_packet_parse.wasm" - allow_precompiled: true - - name: envoy.tcp_proxy - config: - stat_prefix: ingress_tcp - cluster: web_service - - name: staticreply - address: - socket_address: - address: 127.0.0.1 - port_value: 8099 - filter_chains: - - filters: - - name: envoy.http_connection_manager - config: - stat_prefix: ingress_http - codec_type: auto - route_config: - name: local_route - virtual_hosts: - - name: local_service - domains: - - "*" - routes: - - match: - prefix: "/" - direct_response: - status: 200 - body: - inline_string: "example body\n" - http_filters: - - name: envoy.router - config: {} + - name: main + address: + socket_address: + address: 0.0.0.0 + port_value: 80 + filter_chains: + - filters: + - name: envoy.filters.network.tcp_proxy + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy + stat_prefix: ingress_tcp + cluster: web_service + - name: staticreply + address: + socket_address: + address: 127.0.0.1 + port_value: 8099 + filter_chains: + - filters: + - name: envoy.http_connection_manager + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager + stat_prefix: ingress_http + codec_type: AUTO + route_config: + name: local_route + virtual_hosts: + - name: local_service + domains: + - "*" + routes: + - match: + prefix: "/" + direct_response: + status: 200 + body: + inline_string: "example body\n" + http_filters: + - name: envoy.filters.http.wasm + typed_config: + "@type": type.googleapis.com/udpa.type.v1.TypedStruct + type_url: type.googleapis.com/envoy.extensions.filters.http.wasm.v3.Wasm + value: + config: + vm_config: + vm_id: "tcp_packet_parse" + runtime: "envoy.wasm.runtime.v8" + code: + local: + filename: "/etc/tcp_packet_parse.wasm" + - name: envoy.filters.http.router + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router clusters: - name: web_service - connect_timeout: 0.25s type: STRICT_DNS lb_policy: round_robin - hosts: - - socket_address: - address: web_service - port_value: 5678 + connect_timeout: 0.25s + load_assignment: + cluster_name: web_service + endpoints: + - lb_endpoints: + - endpoint: + address: + socket_address: + address: web_service + port_value: 5678 admin: - access_log_path: "/dev/null" + access_log_path: /dev/null address: socket_address: address: 0.0.0.0