backport of commit 2ca51448e869cec0b3091dd602fa6bae72607f0a (#17698)
Co-authored-by: Chris Thain <chris.m.thain@gmail.com>
This commit is contained in:
parent
6e63d9de91
commit
cfcca82218
|
@ -17,7 +17,7 @@ The following list outlines the field hierarchy, data types, and requirements fo
|
|||
|
||||
Click on a property name to view additional details, including default values.
|
||||
|
||||
- [`ProxyType`](#proxytype): string | required
|
||||
- [`ProxyType`](#proxytype): string | `connect-proxy`
|
||||
- [`Debug`](#debug): bool | `false`
|
||||
- [`Patches`](#patches): list | required
|
||||
- [`ResourceFilter`](#patches-resourcefilter): map
|
||||
|
@ -69,7 +69,6 @@ Specifies the type of Envoy proxy that the extension applies to. The only suppor
|
|||
#### Values
|
||||
|
||||
- Default: `connect-proxy`
|
||||
- This field is required.
|
||||
- Data type: String
|
||||
|
||||
### `Debug`
|
||||
|
|
|
@ -15,11 +15,9 @@ Envoy filters support setting and getting dynamic metadata, allowing a filter to
|
|||
|
||||
To use the Lua Envoy extension, configure the following arguments in the `EnvoyExtensions` block:
|
||||
|
||||
| Arguments | Description |
|
||||
| -------------- | ------------------------------------------------------------------------------------------------ |
|
||||
| `ProxyType` | Determines the proxy type the extension applies to. The only supported value is `connect-proxy`. |
|
||||
| `ListenerType` | Specifies if the extension is applied to the `inbound` or `outbound` listener. |
|
||||
| `Script` | The Lua script that is configured to run by the HTTP Lua filter. |
|
||||
- `ProxyType`: string | `connect-proxy` - Determines the proxy type the extension applies to. The only supported value is `connect-proxy`.
|
||||
- `ListenerType`: string | required - Specifies if the extension is applied to the `inbound` or `outbound` listener.
|
||||
- `Script`: string | required - The Lua script that is configured to run by the HTTP Lua filter.
|
||||
|
||||
## Workflow
|
||||
|
||||
|
@ -44,16 +42,15 @@ The following example configures the Lua Envoy extension on every service by usi
|
|||
<CodeBlockConfig filename="lua-envoy-extension-proxy-defaults.hcl">
|
||||
|
||||
```hcl
|
||||
Kind = "proxy-defaults"
|
||||
Name = "global"
|
||||
Protocol = "http"
|
||||
Kind = "proxy-defaults"
|
||||
Name = "global"
|
||||
Protocol = "http"
|
||||
EnvoyExtensions {
|
||||
Name = "builtin/lua"
|
||||
|
||||
Arguments = {
|
||||
ProxyType = "connect-proxy"
|
||||
Listener = "inbound"
|
||||
Script = <<-EOS
|
||||
Listener = "inbound"
|
||||
Script = <<-EOS
|
||||
function envoy_on_request(request_handle)
|
||||
meta = request_handle:streamInfo():dynamicMetadata()
|
||||
m = meta:get("consul")
|
||||
|
@ -159,7 +156,7 @@ $ kubectl apply lua-envoy-extension-proxy-defaults.yaml
|
|||
|
||||
In the following example, the `service-defaults` configure the Lua Envoy extension to insert the HTTP Lua filter for service `myservice` and add the Consul service name to the`x-consul-service` header for all inbound requests. The `ListenerType` makes it so that the extension applies only on the inbound listener of the service's connect proxy.
|
||||
|
||||
<CodeBlockConfig filename="lua-envoy-extension.json">
|
||||
<CodeBlockConfig filename="lua-envoy-extension.hcl">
|
||||
|
||||
```hcl
|
||||
Kind = "service-defaults"
|
||||
|
@ -170,8 +167,8 @@ EnvoyExtensions = [
|
|||
|
||||
Arguments = {
|
||||
ProxyType = "connect-proxy"
|
||||
Listener = "inbound"
|
||||
Script = <<EOF
|
||||
Listener = "inbound"
|
||||
Script = <<EOF
|
||||
function envoy_on_request(request_handle)
|
||||
local service = request_handle:streamInfo():dynamicMetadata():get("consul")["service"]
|
||||
request_handle:headers():add("x-consul-service", service)
|
||||
|
@ -188,7 +185,7 @@ Alternatively, you can apply the same extension configuration to [`proxy-default
|
|||
|
||||
You can also specify multiple Lua filters through the Envoy extensions. They will not override each other.
|
||||
|
||||
<CodeBlockConfig filename="lua-envoy-extension.json">
|
||||
<CodeBlockConfig filename="lua-envoy-extension.hcl">
|
||||
|
||||
```hcl
|
||||
Kind = "service-defaults"
|
||||
|
@ -198,8 +195,8 @@ EnvoyExtensions = [
|
|||
Name = "builtin/lua",
|
||||
Arguments = {
|
||||
ProxyType = "connect-proxy"
|
||||
Listener = "inbound"
|
||||
Script = <<-EOF
|
||||
Listener = "inbound"
|
||||
Script = <<-EOF
|
||||
function envoy_on_request(request_handle)
|
||||
meta = request_handle:streamInfo():dynamicMetadata()
|
||||
m = meta:get("consul")
|
||||
|
@ -212,8 +209,8 @@ end
|
|||
Name = "builtin/lua",
|
||||
Arguments = {
|
||||
ProxyType = "connect-proxy"
|
||||
Listener = "inbound"
|
||||
Script = <<-EOF
|
||||
Listener = "inbound"
|
||||
Script = <<-EOF
|
||||
function envoy_on_request(request_handle)
|
||||
meta = request_handle:streamInfo():dynamicMetadata()
|
||||
m = meta:get("consul")
|
||||
|
|
|
@ -32,28 +32,30 @@ In the following service defaults configuration entry example, Consul adds a new
|
|||
<CodeBlockConfig filename="property-override-extension-service-defaults.hcl">
|
||||
|
||||
```hcl
|
||||
Kind = "service-defaults"
|
||||
Name = "global"
|
||||
Protocol = "http"
|
||||
Kind = "service-defaults"
|
||||
Name = "global"
|
||||
Protocol = "http"
|
||||
EnvoyExtensions = [
|
||||
{
|
||||
Name = "builtin/property-override"
|
||||
Arguments = {
|
||||
ProxyType = "connect-proxy",
|
||||
ProxyType = "connect-proxy"
|
||||
Patches = [
|
||||
{
|
||||
ResourceFilter = {
|
||||
ResourceType = "cluster",
|
||||
TrafficDirection = "outbound"
|
||||
ResourceType = "cluster"
|
||||
TrafficDirection = "outbound"
|
||||
Services = [{
|
||||
Name = "other-svc"
|
||||
}],
|
||||
Op = "add"
|
||||
Path = "/upstream_connection_options/tcp_keepalive/keepalive_probes",
|
||||
Value = 5,
|
||||
}]
|
||||
}
|
||||
Op = "add"
|
||||
Path = "/upstream_connection_options/tcp_keepalive/keepalive_probes"
|
||||
Value = 5
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
</CodeBlockConfig>
|
||||
|
|
Loading…
Reference in New Issue