--
- Official docker image moved to Docker Hub and can be pulled with
docker pull hellofreshtech/janus
- Test and release flow uses the latest stable Go version
- Added
JAEGER_AGENT_HOST
andJAEGER_AGENT_PORT
environment variable to allow specifying host and port separately instead of as the full URL. -- Note: you are still able to specifyTRACING_JAEGER_SAMPLING_SERVER_URL
- experimental helm charts
- Changed trace sampling behavior when
TRACING_IS_PUBLIC_ENDPOINT
is set to false
- Added trace debugging setting (
tracing.DebugTraceKey
) to get the Trace ID of a debug request in the response - Added
TRACING_IS_PUBLIC_ENDPOINT
environment variable to allow trace propagation
- Releases are now built with go1.12
- Updated github client dependency
--
- Rate limiter logs correct (forwarded) IP if configuration is set to respect
X-Forwarded-For
andX-Real-IP
headers
- Added
CONN_PURGE_INTERVAL
environment variable as a way to prevent stale http keep-alive connections
- Rate limiter configuration to respect
X-Forwarded-For
andX-Real-IP
headers
- Rate limiter plugin now ignores
X-Forwarded-For
andX-Real-IP
headers by default
- Url parameters can be used in the target definition. Thanks to @Serjick
- Request-ID to error handler logs
- Additional attributes to tracing spans
- Log writer initialized earlier
- Use in-memory repository for basic auth plugin when Mongo is not available
- Use
gofrs/uuid
instead ofsatori/go.uuid
- Rate limiter respects
X-Forwarded-For
andX-Real-IP
HTTP headers
- Circuit breaker plugin statsd collector prefix
http_server_request_latency
to include HTTP method key
- Fixed plugin configuration not being validated
- Added stats and tracing support with opencensus
- Tracing support via opentracing.io
- Fixed configuration listener that made API stuck
- Support b3 http propagation format for jaeger
- Race condition on application start. Reported on #348
- Added more debug information to recovery handler to track application errors
- New
options_passthrough
parameter for CORS plugin. Thanks to @locker1776
- Open tracing error and http status code tags were not being set during tracing
- New Retry plugin: you can now configure your endpoints to have a retry in case of a failed request
- New
read
,write
andidle
timeouts for Janus server global configurations - New
dial
andresponse_header
timeouts that can be set per endpoint - New
/debug/pprof
endpoint (handlers fromnet/http/pprof
) on API port for debugging and profiling (can be enabled withstart
command flags) - Alias
rr
for roundrobin balancer - Add request id as a tag into tracing for seamlessly correlation in tracing UI
- Fixed bug when using the configuration file in a linux/64 system
- Added
name
parameter forcb
(Circuit Breaker) plugin to set group explicitly
- Redis is not necessary anymore for the cluster to work
- Removed proxy definition property
enable_load_balancing
as it was not being used
- Leeway support for JWT date fields validation
- Support for zero weight when using the weight algorithm for balancing
- New header
X-Request-Id
that makes sure it create a new id for each request. It also ties it up with open tracing
- Fixed oauth rate limit reported on #276
Upstream_URL
support is removed, see the Upgrade Notes
- Extra JWT metrics for token validation success and error
- Fixed a bug for the
oauth servers
when rows were empty it was returningnull
on the json response
- Bumped stats-go to current latest stable version (0.6.3) - this changes stats DSN config value format, see
stats-go
docs for details
- Check GitHub permissions. Sets
is_admin
into the jwt token when the chosen provider is Github - Jaeger support as distributed tracing backend
- Added Proxy Listen Path validation to prevent
chi
from panicking in case of invalid listen path - Added load balancing for upstream targets. Now you can add multiple upstream targets and Janus will balance the requests.
- Added support for url parameters both in listen path and upstreams.
- Monitor health check endpoints only of active proxies. Reported on #203
- Fix hot reload was not working when using in memory storage implementation
- Fix oauth servers post endpoint incorrect behaviour. Reported on #234
- Add constant time compare to basic auth password. Reported on #194
- Appdash support
- THe docker image does not depend on a github release anymore
upstream_url
is now deprecated in favor of using theupstreams
object. This will allow Janus to balance requests if you have more than one upstream target.
- Added response transformer plugin
- Added basic auth plugin
- Added github login for the Admin API
- Changed our dependency management tool from glide to Dep
- Fixed problems when using -c flag to specify a configuration file
- Fixed oAuth2 introspection token strategy when configuring an oauth server
- Added request body limit plugin
- Track application start/restart with stats metrics
<prefix>.app.init.<host>.<app-file>
- Concurrent map writes in stats-go
- Non sampled spans recording in gcloud-opentracing
- Added support for JWT signature validation chain for
jwt
token strategy - Added support for OAuth2
introspection
token strategy - Added rate limit configurations for all endpoints of an OAuth2 server
- Dropped support for
storage
token strategy
- Moved Concourse CI scripts to another repo
- Changed health check JSON output to be in alignment with health-go
- Logging configuring is now handled by logging-go, so more logging options now
- Bumped Chi router to 3.0, see changelog if you're using parametrised urls
- Added plugin to transform a request to an upstream. You can now modify headers and query string before the request is sent
- Added godog for behaviour tests
- Allow insecure upstream SSL certificate
- Added health-check statement on the Dockerfile. This will allow you to deploy the container to swarm/kubernetes/ecs and have it checked the
/status
endpoint.
- Using viper to load the API definitions when using file based configurations. This allows you to configure your API definitions in YAML, JSON and TOML.
- The underling router was changed from httptreemux to Chi.
- Proper Mux reload when an API or OAuth server is changed
- Adds the ability to hot reload proxy definitions. To enable this feature you MUST use Redis as your datastore. If you use
in memory
storage this feature will not be enabled. - Added the ability to enable or disable plugins per API definitions. This will bring us a lot of flexibility in developing new plugins and hooking them up. This feature is a BC and we should upgrade the major version because of that.
- Added health checks to any API definition
- Rate limit bug that was around for quite a while.
- Problems when creating a new API definition
- Now the docker image is super tiny, less then 14mb when decompressed.
- Using commands to start Janus. This way we can improve the organization on how we want the binary to work. Also, this will allow us to probably move towards an ideal solution for hot reload of configs.
- Added coveralls as our coverage tool.
- Added plugins specifically for the round tripper. This allows us to decouple the token logic from the tripper.
- The CI pipeline now bumps the patch version automatically.
- Updated docker compose to use the TOML config file
- Replaced the statsd implementation for our stats-go package
- Added Open Tracing support. Available tracers are Google Cloud Platform and Jaeger.
- Split the application in two different ports, an administrative port (defaults to
8081
) and proxies port (defaults to8080
). This way we avoid route collision with the admin routes and also we don't need to load tons of middlewares for the admin routes that are not necessary. - Now the docker image is super tiny, less then 14mb when decompressed.
- API Definition and OAuth Server Definition don't depend on an ID anymore, now the name becomes the unique identifier. This works both in MongoDB and file based configurations.
- Handled 404 in a more elegant way
- Added possibility to create configurations using YAML, JSON, TOML or environemnt variables.
- Added a host matcher middleware.