Files
sablier/plugins/proxywasm/e2e/envoy/docker/envoy.yaml
Alexis Couvreur dfb9bacf59 feat(providers): add provider.auto-stop-on-startup argument (#346)
This feature adds the capability to stop unregistered running instances upon startup.

Previously, you had to stop running instances manually or issue an initial request that will shut down instances afterwards.

With this change, all discovered instances will be shutdown. They need to be registered using labels. E.g.: sablier.enable=true

Fixes #153
2024-10-01 17:30:14 -07:00

269 lines
12 KiB
YAML

static_resources:
listeners:
- name: main
address:
socket_address:
address: 0.0.0.0
port_value: 8080
filter_chains:
- filters:
# Dynamic Whoami
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
codec_type: auto
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes:
- match:
prefix: "/dynamic/whoami"
route:
cluster: whoami
typed_per_filter_config:
sablier-wasm-whoami-dynamic:
"@type": type.googleapis.com/envoy.config.route.v3.FilterConfig
config: # Note this config field could not be empty because the xDS API requirement.
"@type": type.googleapis.com/google.protobuf.Empty # Empty as a placeholder.
is_optional: true
- match:
path: "/blocking/whoami"
route:
cluster: whoami
typed_per_filter_config:
sablier-wasm-whoami-blocking:
"@type": type.googleapis.com/envoy.config.route.v3.FilterConfig
config: # Note this config field could not be empty because the xDS API requirement.
"@type": type.googleapis.com/google.protobuf.Empty # Empty as a placeholder.
is_optional: true
- match:
prefix: "/multiple/whoami"
route:
cluster: whoami
typed_per_filter_config:
sablier-wasm-multiple:
"@type": type.googleapis.com/envoy.config.route.v3.FilterConfig
config: # Note this config field could not be empty because the xDS API requirement.
"@type": type.googleapis.com/google.protobuf.Empty # Empty as a placeholder.
is_optional: true
- match:
path: "/multiple/nginx"
route:
cluster: nginx
typed_per_filter_config:
sablier-wasm-multiple:
"@type": type.googleapis.com/envoy.config.route.v3.FilterConfig
config: # Note this config field could not be empty because the xDS API requirement.
"@type": type.googleapis.com/google.protobuf.Empty # Empty as a placeholder.
is_optional: true
- match:
path: "/healthy/nginx"
route:
cluster: nginx
typed_per_filter_config:
sablier-wasm-healthy:
"@type": type.googleapis.com/envoy.config.route.v3.FilterConfig
config: # Note this config field could not be empty because the xDS API requirement.
"@type": type.googleapis.com/google.protobuf.Empty # Empty as a placeholder.
is_optional: true
- match:
path: "/group"
route:
cluster: whoami
typed_per_filter_config:
sablier-wasm-group:
"@type": type.googleapis.com/envoy.config.route.v3.FilterConfig
config: # Note this config field could not be empty because the xDS API requirement.
"@type": type.googleapis.com/google.protobuf.Empty # Empty as a placeholder.
is_optional: true
http_filters:
- name: sablier-wasm-whoami-dynamic
disabled: true
typed_config:
"@type": type.googleapis.com/udpa.type.v1.TypedStruct
type_url: type.googleapis.com/envoy.extensions.filters.http.wasm.v3.Wasm
value:
config:
name: "sablier-wasm-whoami-dynamic"
root_id: "sablier-wasm-whoami-dynamic"
configuration:
"@type": "type.googleapis.com/google.protobuf.StringValue"
value: |
{
"sablier_url": "sablier:10000",
"cluster": "sablier",
"names": ["docker_classic_e2e-whoami-1"],
"session_duration": "1m",
"dynamic": {
"display_name": "Dynamic Whoami",
"theme": "hacker-terminal"
}
}
vm_config:
runtime: "envoy.wasm.runtime.v8"
vm_id: "vm.sablier.sablier-wasm-whoami-dynamic"
code:
local:
filename: "/etc/sablierproxywasm.wasm"
configuration: { }
- name: sablier-wasm-whoami-blocking
disabled: true
typed_config:
"@type": type.googleapis.com/udpa.type.v1.TypedStruct
type_url: type.googleapis.com/envoy.extensions.filters.http.wasm.v3.Wasm
value:
config:
name: "sablier-wasm-whoami-blocking"
root_id: "sablier-wasm-whoami-blocking"
configuration:
"@type": "type.googleapis.com/google.protobuf.StringValue"
value: |
{
"sablier_url": "sablier:10000",
"cluster": "sablier",
"names": ["docker_classic_e2e-whoami-1"],
"session_duration": "1m",
"blocking": {
"timeout": "30s"
}
}
vm_config:
runtime: "envoy.wasm.runtime.v8"
vm_id: "vm.sablier.sablier-wasm-whoami-blocking"
code:
local:
filename: "/etc/sablierproxywasm.wasm"
configuration: { }
- name: sablier-wasm-multiple
disabled: true
typed_config:
"@type": type.googleapis.com/udpa.type.v1.TypedStruct
type_url: type.googleapis.com/envoy.extensions.filters.http.wasm.v3.Wasm
value:
config:
name: "sablier-wasm-multiple"
root_id: "sablier-wasm-multiple"
configuration:
"@type": "type.googleapis.com/google.protobuf.StringValue"
value: |
{
"sablier_url": "sablier:10000",
"cluster": "sablier",
"names": ["docker_classic_e2e-whoami-1", "docker_classic_e2e-nginx-1"],
"session_duration": "1m",
"dynamic": {
"display_name": "Multiple Whoami"
}
}
vm_config:
runtime: "envoy.wasm.runtime.v8"
vm_id: "vm.sablier.sablier-wasm-multiple"
code:
local:
filename: "/etc/sablierproxywasm.wasm"
configuration: { }
- name: sablier-wasm-healthy
disabled: true
typed_config:
"@type": type.googleapis.com/udpa.type.v1.TypedStruct
type_url: type.googleapis.com/envoy.extensions.filters.http.wasm.v3.Wasm
value:
config:
name: "sablier-wasm-healthy"
root_id: "sablier-wasm-healthy"
configuration:
"@type": "type.googleapis.com/google.protobuf.StringValue"
value: |
{
"sablier_url": "sablier:10000",
"cluster": "sablier",
"names": ["docker_classic_e2e-nginx-1"],
"session_duration": "1m",
"dynamic": {
"display_name": "Healthy Nginx"
}
}
vm_config:
runtime: "envoy.wasm.runtime.v8"
vm_id: "vm.sablier.sablier-wasm-healthy"
code:
local:
filename: "/etc/sablierproxywasm.wasm"
configuration: { }
- name: sablier-wasm-group
disabled: true
typed_config:
"@type": type.googleapis.com/udpa.type.v1.TypedStruct
type_url: type.googleapis.com/envoy.extensions.filters.http.wasm.v3.Wasm
value:
config:
name: "sablier-wasm-group"
root_id: "sablier-wasm-group"
configuration:
"@type": "type.googleapis.com/google.protobuf.StringValue"
value: |
{
"sablier_url": "sablier:10000",
"cluster": "sablier",
"group": "E2E",
"session_duration": "1m",
"dynamic": {
"display_name": "Group E2E"
}
}
vm_config:
runtime: "envoy.wasm.runtime.v8"
vm_id: "vm.sablier.sablier-wasm-group"
code:
local:
filename: "/etc/sablierproxywasm.wasm"
configuration: { }
- name: envoy.filters.http.router
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
clusters:
- name: sablier
connect_timeout: 0.25s
type: STRICT_DNS
lb_policy: round_robin
load_assignment:
cluster_name: sablier
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: sablier
port_value: 10000
- name: whoami
connect_timeout: 0.25s
type: STRICT_DNS
lb_policy: round_robin
load_assignment:
cluster_name: whoami
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: whoami
port_value: 80
- name: nginx
connect_timeout: 0.25s
type: STRICT_DNS
lb_policy: round_robin
load_assignment:
cluster_name: nginx
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: nginx
port_value: 80