Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/richardbolt/shrike
The Shrike is a Chaos HTTP/WebSocket proxy that impales victims on the Tree of Pain by selectively routing traffic with path based rules via Toxiproxy for TCP level mischief
https://github.com/richardbolt/shrike
chaos chaos-engineering go http-proxy
Last synced: 16 days ago
JSON representation
The Shrike is a Chaos HTTP/WebSocket proxy that impales victims on the Tree of Pain by selectively routing traffic with path based rules via Toxiproxy for TCP level mischief
- Host: GitHub
- URL: https://github.com/richardbolt/shrike
- Owner: richardbolt
- License: mit
- Created: 2017-12-07T02:16:07.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2017-12-31T16:05:12.000Z (about 7 years ago)
- Last Synced: 2024-11-06T00:37:29.681Z (2 months ago)
- Topics: chaos, chaos-engineering, go, http-proxy
- Language: Go
- Homepage:
- Size: 44.9 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
The Shrike
==========The Shrike is a Layer 7 Chaos HTTP/WebSocket proxy that impales it's victims on the Tree of Pain. The Tree of Pain for this Shrike takes the form of [Toxiproxy](http://toxiproxy.io), an excellent TCP network tampering tool.
The Shrike is designed for resliliency testing a whole environment and has an API to route http path based traffic through an embedded [Toxiproxy](http://toxiproxy.io) instance.
The Shrike currently assumes you've put it close at the edge of your service stack thus the current single upstream location which is assumed to be your gateway.
Path prefix matching is used to route differing paths for testing while unmatched paths are sent straight on to the gateway.
Configuration
-------------Configuration is by both environment variables and command line flags with command line flags taking precedence.
### Command line flags
`-host` is the address to bind to on the host. Defaults to `0.0.0.0`.
`-port` is the proxy forwarder listen port to bind to on the host. Defaults to `8080`.
`-apiport` is the api listen port to bind to on the host. Defaults to `8075`.
`-upstream` is the upstream HTTP/WS proxy we are sitting in front of. Defaults to `http://127.0.0.1`.
### Environment Variables
`HOST` is the address to bind to on the host. Defaults to `0.0.0.0`.
`PORT` is the proxy forwarder listen port to bind to on the host. Defaults to `8080`.
`API_PORT` is the api listen port to bind to on the host. Defaults to `8075`.
`UPSTREAM_URL` is the upstream HTTP/WS proxy we are sitting in front of. Defaults to `http://127.0.0.1`.
`PORT` and `API_PORT` can be the same value and The Shrike proxy and api will be bound to the same port. This means that `/ping` and `/routes*` requests will be intercepted by Shrike and your Shrike control API *may* be exposed.
Develop
-------This project uses [Go 1.8](https://golang.org/dl/) or later and uses [Glide](https://glide.sh/) for package management.
### Linux
```
make
```### Mac
```
make mac
```To add or update dependencies in the vendor folder, please use [Glide](https://glide.sh/):
```
curl https://glide.sh/get | sh # only necessary if you don't have Glide installed already.
glide install
```Testing
-------Run the test suites with [Ginkgo](http://onsi.github.io/ginkgo/) installed and get coverage output:
```
make ginkgo
```Run the test suites without Ginkgo (less awesome output, no randomization of tests):
```
make test
```