mirror of https://github.com/status-im/consul.git
Add envoy integration tests
This commit is contained in:
parent
c0e1751878
commit
2a85e44519
|
@ -0,0 +1,14 @@
|
||||||
|
enable_central_service_config = true
|
||||||
|
|
||||||
|
config_entries {
|
||||||
|
bootstrap {
|
||||||
|
kind = "terminating-gateway"
|
||||||
|
name = "terminating-gateway"
|
||||||
|
|
||||||
|
services = [
|
||||||
|
{
|
||||||
|
name = "s2"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
services {
|
||||||
|
name = "terminating-gateway"
|
||||||
|
kind = "terminating-gateway"
|
||||||
|
port = 8443
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# wait for bootstrap to apply config entries
|
||||||
|
wait_for_config_entry terminating-gateway terminating-gateway
|
||||||
|
|
||||||
|
gen_envoy_bootstrap terminating-gateway 20000 primary true
|
||||||
|
gen_envoy_bootstrap s1 19000
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export REQUIRED_SERVICES="s1 s1-sidecar-proxy s2 terminating-gateway-primary"
|
|
@ -0,0 +1,29 @@
|
||||||
|
#!/usr/bin/env bats
|
||||||
|
|
||||||
|
load helpers
|
||||||
|
|
||||||
|
@test "terminating proxy admin is up on :20000" {
|
||||||
|
retry_default curl -f -s localhost:20000/stats -o /dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "s1 proxy admin is up on :19000" {
|
||||||
|
retry_default curl -f -s localhost:19000/stats -o /dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "terminating-gateway-primary listener is up on :8443" {
|
||||||
|
retry_default nc -z localhost:8443
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "terminating-gateway should have healthy endpoints for s2" {
|
||||||
|
assert_upstream_has_endpoints_in_status 127.0.0.1:20000 s2 HEALTHY 1
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "s1 upstream should have healthy endpoints for s2" {
|
||||||
|
assert_upstream_has_endpoints_in_status 127.0.0.1:19000 s2.default.primary HEALTHY 1
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "s1 upstream should be able to connect to s2" {
|
||||||
|
run retry_default curl -s -f -d hello localhost:5000
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
[ "$output" = "hello" ]
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
snapshot_envoy_admin localhost:20000 terminating-gateway primary || true
|
||||||
|
snapshot_envoy_admin localhost:19000 s1 primary || true
|
|
@ -0,0 +1,37 @@
|
||||||
|
config_entries {
|
||||||
|
bootstrap {
|
||||||
|
kind = "terminating-gateway"
|
||||||
|
name = "terminating-gateway"
|
||||||
|
|
||||||
|
services = [
|
||||||
|
{
|
||||||
|
name = "s2"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
bootstrap {
|
||||||
|
kind = "proxy-defaults"
|
||||||
|
name = "global"
|
||||||
|
|
||||||
|
config {
|
||||||
|
protocol = "http"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bootstrap {
|
||||||
|
kind = "service-resolver"
|
||||||
|
name = "s2"
|
||||||
|
|
||||||
|
default_subset = "v1"
|
||||||
|
|
||||||
|
subsets = {
|
||||||
|
"v1" = {
|
||||||
|
filter = "Service.Meta.version == v1"
|
||||||
|
}
|
||||||
|
"v2" = {
|
||||||
|
filter = "Service.Meta.version == v2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
services {
|
||||||
|
name = "terminating-gateway"
|
||||||
|
kind = "terminating-gateway"
|
||||||
|
port = 8443
|
||||||
|
|
||||||
|
meta {
|
||||||
|
version = "v1"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
services {
|
||||||
|
id = "s2-v1"
|
||||||
|
name = "s2"
|
||||||
|
port = 8182
|
||||||
|
|
||||||
|
meta {
|
||||||
|
version = "v1"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
services {
|
||||||
|
id = "s2-v2"
|
||||||
|
name = "s2"
|
||||||
|
port = 8183
|
||||||
|
|
||||||
|
meta {
|
||||||
|
version = "v2"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# wait for bootstrap to apply config entries
|
||||||
|
wait_for_config_entry terminating-gateway terminating-gateway
|
||||||
|
wait_for_config_entry proxy-defaults global
|
||||||
|
wait_for_config_entry service-resolver s2
|
||||||
|
|
||||||
|
# terminating gateway will act as s2's proxy
|
||||||
|
gen_envoy_bootstrap s1 19000
|
||||||
|
gen_envoy_bootstrap terminating-gateway 20000 primary true
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export REQUIRED_SERVICES="
|
||||||
|
s1 s1-sidecar-proxy
|
||||||
|
s2-v1
|
||||||
|
terminating-gateway-primary
|
||||||
|
"
|
|
@ -0,0 +1,36 @@
|
||||||
|
#!/usr/bin/env bats
|
||||||
|
|
||||||
|
load helpers
|
||||||
|
|
||||||
|
@test "s1 proxy admin is up on :19000" {
|
||||||
|
retry_default curl -f -s localhost:19000/stats -o /dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "terminating proxy admin is up on :20000" {
|
||||||
|
retry_default curl -f -s localhost:20000/stats -o /dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "terminating-gateway-primary listener is up on :8443" {
|
||||||
|
retry_default nc -z localhost:8443
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "s1 proxy listener should be up and have right cert" {
|
||||||
|
assert_proxy_presents_cert_uri localhost:21000 s1
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "s1 upstream should have healthy endpoints for v1.s2" {
|
||||||
|
assert_upstream_has_endpoints_in_status 127.0.0.1:19000 v1.s2 HEALTHY 1
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "terminating-gateway should have healthy endpoints for v1.s2" {
|
||||||
|
assert_upstream_has_endpoints_in_status 127.0.0.1:20000 v1.s2 HEALTHY 1
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "terminating-gateway should have healthy endpoints for v2.s2" {
|
||||||
|
assert_upstream_has_endpoints_in_status 127.0.0.1:20000 v2.s2 HEALTHY 1
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "s1 upstream should be able to connect to s2-v1 via terminating-gateway" {
|
||||||
|
assert_expected_fortio_name s2-v1
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
bind_addr = "0.0.0.0"
|
||||||
|
advertise_addr = "{{ GetInterfaceIP \"eth0\" }}"
|
|
@ -0,0 +1,5 @@
|
||||||
|
services {
|
||||||
|
name = "terminating-gateway"
|
||||||
|
kind = "terminating-gateway"
|
||||||
|
port = 4431
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
# We don't want an s1 service
|
|
@ -0,0 +1 @@
|
||||||
|
# We don't want an s2 service
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eEuo pipefail
|
||||||
|
|
||||||
|
gen_envoy_bootstrap terminating-gateway 19000 primary true
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export REQUIRED_SERVICES="terminating-gateway-primary"
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/usr/bin/env bats
|
||||||
|
|
||||||
|
load helpers
|
||||||
|
|
||||||
|
@test "terminating-gateway-primary proxy admin is up on :19000" {
|
||||||
|
retry_default curl -f -s localhost:19000/stats -o /dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "terminating-gateway-primary listener is up on :4431" {
|
||||||
|
retry_default nc -z localhost:4431
|
||||||
|
}
|
|
@ -580,6 +580,23 @@ services:
|
||||||
- *workdir-volume
|
- *workdir-volume
|
||||||
network_mode: service:consul-primary
|
network_mode: service:consul-primary
|
||||||
|
|
||||||
|
terminating-gateway-primary:
|
||||||
|
depends_on:
|
||||||
|
- consul-primary
|
||||||
|
image: "envoyproxy/envoy:v${ENVOY_VERSION}"
|
||||||
|
command:
|
||||||
|
- "envoy"
|
||||||
|
- "-c"
|
||||||
|
- "/workdir/primary/envoy/terminating-gateway-bootstrap.json"
|
||||||
|
- "-l"
|
||||||
|
- "debug"
|
||||||
|
- "--disable-hot-restart"
|
||||||
|
- "--drain-time-s"
|
||||||
|
- "1"
|
||||||
|
volumes:
|
||||||
|
- *workdir-volume
|
||||||
|
network_mode: service:consul-primary
|
||||||
|
|
||||||
verify-primary:
|
verify-primary:
|
||||||
depends_on:
|
depends_on:
|
||||||
- consul-primary
|
- consul-primary
|
||||||
|
|
Loading…
Reference in New Issue