mirror of
https://github.com/status-im/consul.git
synced 2025-01-27 22:16:23 +00:00
9138a97054
Also: - add back an internal http endpoint to dump a compiled discovery chain for debugging purposes Before the CompiledDiscoveryChain.IsDefault() method would test: - is this chain just one resolver step? - is that resolver step just the default? But what I forgot to test: - is that resolver step for the same service that the chain represents? This last point is important because if you configured just one config entry: kind = "service-resolver" name = "web" redirect { service = "other" } and requested the chain for "web" you'd get back a **default** resolver for "other". In the xDS code the IsDefault() method is used to determine if this chain is "empty". If it is then we use the pre-discovery-chain logic that just uses data embedded in the Upstream object (and still lets the escape hatches function). In the example above that means certain parts of the xDS code were going to try referencing a cluster named "web..." despite the other parts of the xDS code maintaining clusters named "other...".
242 lines
5.2 KiB
YAML
242 lines
5.2 KiB
YAML
version: '3.4'
|
|
|
|
x-workdir:
|
|
&workdir-volume
|
|
type: volume
|
|
source: workdir
|
|
target: /workdir
|
|
volume:
|
|
nocopy: true
|
|
|
|
volumes:
|
|
workdir:
|
|
|
|
services:
|
|
# This is a dummy container that we use to create volume and keep it
|
|
# accessible while other containers are down.
|
|
workdir:
|
|
image: alpine
|
|
volumes:
|
|
- *workdir-volume
|
|
command:
|
|
- sleep
|
|
- "86400"
|
|
|
|
consul:
|
|
image: "consul-dev"
|
|
command:
|
|
- "agent"
|
|
- "-dev"
|
|
- "-config-dir"
|
|
- "/workdir/consul"
|
|
- "-client"
|
|
- "0.0.0.0"
|
|
volumes:
|
|
- *workdir-volume
|
|
ports:
|
|
# Exposing to host makes debugging locally a bit easier
|
|
- "8500:8500"
|
|
- "8502:8502"
|
|
# For zipkin which uses this containers network
|
|
- 9411:9411
|
|
# Jaeger UI
|
|
- 16686:16686
|
|
|
|
s1:
|
|
depends_on:
|
|
- consul
|
|
image: "fortio/fortio"
|
|
environment:
|
|
- "FORTIO_NAME=s1"
|
|
command:
|
|
- "server"
|
|
- "-http-port"
|
|
- ":8080"
|
|
- "-grpc-port"
|
|
- ":8079"
|
|
- "-redirect-port"
|
|
- "disabled"
|
|
network_mode: service:consul
|
|
|
|
s2:
|
|
depends_on:
|
|
- consul
|
|
image: "fortio/fortio"
|
|
environment:
|
|
- "FORTIO_NAME=s2"
|
|
command:
|
|
- "server"
|
|
- "-http-port"
|
|
- ":8181"
|
|
- "-grpc-port"
|
|
- ":8179"
|
|
- "-redirect-port"
|
|
- "disabled"
|
|
network_mode: service:consul
|
|
|
|
s3:
|
|
depends_on:
|
|
- consul
|
|
image: "fortio/fortio"
|
|
environment:
|
|
- "FORTIO_NAME=s3"
|
|
command:
|
|
- "server"
|
|
- "-http-port"
|
|
- ":8282"
|
|
- "-grpc-port"
|
|
- ":8279"
|
|
- "-redirect-port"
|
|
- "disabled"
|
|
network_mode: service:consul
|
|
|
|
s1-sidecar-proxy:
|
|
depends_on:
|
|
- consul
|
|
image: "envoyproxy/envoy:v${ENVOY_VERSION:-1.8.0}"
|
|
command:
|
|
- "envoy"
|
|
- "-c"
|
|
- "/workdir/envoy/s1-bootstrap.json"
|
|
- "-l"
|
|
- "debug"
|
|
# Hot restart breaks since both envoys seem to interact with each other
|
|
# despite separate containers that don't share IPC namespace. Not quite
|
|
# sure how this happens but may be due to unix socket being in some shared
|
|
# location?
|
|
- "--disable-hot-restart"
|
|
- "--drain-time-s"
|
|
- "1"
|
|
volumes:
|
|
- *workdir-volume
|
|
network_mode: service:consul
|
|
|
|
s2-sidecar-proxy:
|
|
depends_on:
|
|
- consul
|
|
image: "envoyproxy/envoy:v${ENVOY_VERSION:-1.8.0}"
|
|
command:
|
|
- "envoy"
|
|
- "-c"
|
|
- "/workdir/envoy/s2-bootstrap.json"
|
|
- "-l"
|
|
- "debug"
|
|
# Hot restart breaks since both envoys seem to interact with each other
|
|
# despite separate containers that don't share IPC namespace. Not quite
|
|
# sure how this happens but may be due to unix socket being in some shared
|
|
# location?
|
|
- "--disable-hot-restart"
|
|
- "--drain-time-s"
|
|
- "1"
|
|
volumes:
|
|
- *workdir-volume
|
|
network_mode: service:consul
|
|
|
|
s3-sidecar-proxy:
|
|
depends_on:
|
|
- consul
|
|
image: "envoyproxy/envoy:v${ENVOY_VERSION:-1.8.0}"
|
|
command:
|
|
- "envoy"
|
|
- "-c"
|
|
- "/workdir/envoy/s3-bootstrap.json"
|
|
- "-l"
|
|
- "debug"
|
|
# Hot restart breaks since both envoys seem to interact with each other
|
|
# despite separate containers that don't share IPC namespace. Not quite
|
|
# sure how this happens but may be due to unix socket being in some shared
|
|
# location?
|
|
- "--disable-hot-restart"
|
|
- "--drain-time-s"
|
|
- "1"
|
|
volumes:
|
|
- *workdir-volume
|
|
network_mode: service:consul
|
|
|
|
verify:
|
|
depends_on:
|
|
- consul
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile-bats
|
|
tty: true
|
|
environment:
|
|
- ENVOY_VERSION
|
|
command:
|
|
- "--pretty"
|
|
- "/workdir/bats"
|
|
volumes:
|
|
- *workdir-volume
|
|
network_mode: service:consul
|
|
|
|
s1-sidecar-proxy-consul-exec:
|
|
depends_on:
|
|
- consul
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile-consul-envoy
|
|
args:
|
|
ENVOY_VERSION: ${ENVOY_VERSION:-1.8.0}
|
|
image: consul-dev-envoy:${ENVOY_VERSION:-1.8.0}
|
|
command:
|
|
- "consul"
|
|
- "connect"
|
|
- "envoy"
|
|
- "-sidecar-for"
|
|
- "s1"
|
|
- "--"
|
|
- "-l"
|
|
- "debug"
|
|
network_mode: service:consul
|
|
|
|
fake-statsd:
|
|
depends_on:
|
|
- consul
|
|
image: "alpine/socat"
|
|
command:
|
|
- -u
|
|
- UDP-RECVFROM:8125,fork,reuseaddr
|
|
# This magic incantation is needed since Envoy doesn't add newlines and so
|
|
# we need each packet to be passed to echo to add a new line before
|
|
# appending.
|
|
- SYSTEM:'xargs -0 echo >> /workdir/statsd/statsd.log'
|
|
volumes:
|
|
- *workdir-volume
|
|
network_mode: service:consul
|
|
|
|
wipe-volumes:
|
|
volumes:
|
|
- *workdir-volume
|
|
image: alpine
|
|
command:
|
|
- sh
|
|
- -c
|
|
- 'rm -rf /workdir/*'
|
|
|
|
# This is a debugging tool run docker-compose up dump-volumes to see the
|
|
# current state.
|
|
dump-volumes:
|
|
volumes:
|
|
- *workdir-volume
|
|
- ./:/cwd
|
|
image: alpine
|
|
command:
|
|
- cp
|
|
- -r
|
|
- /workdir/.
|
|
- /cwd/workdir/
|
|
|
|
zipkin:
|
|
volumes:
|
|
- *workdir-volume
|
|
image: openzipkin/zipkin
|
|
network_mode: service:consul
|
|
|
|
jaeger:
|
|
volumes:
|
|
- *workdir-volume
|
|
image: jaegertracing/all-in-one:1.11
|
|
network_mode: service:consul
|
|
command:
|
|
- --collector.zipkin.http-port=9411
|