github.com/hellofresh/janus@v0.0.0-20230925145208-ce8de8183c67/CHANGELOG.md (about) 1 # Unreleased 2 3 -- 4 5 # 4.0.0 6 7 ## Changed 8 - Official docker image moved to [Docker Hub](https://hub.docker.com/repository/docker/hellofreshtech/janus) and can be pulled with `docker pull hellofreshtech/janus` 9 - Test and release flow uses the latest stable Go version 10 11 # 3.8.19 12 13 ## Added 14 - Added `JAEGER_AGENT_HOST` and `JAEGER_AGENT_PORT` environment variable to allow specifying host and port separately instead of as the full URL. 15 -- Note: you are still able to specify `TRACING_JAEGER_SAMPLING_SERVER_URL` 16 17 # 3.8.13, 3.8.14, 3.8.15, 3.8.16, 3.8.17, 3.8.18 18 19 ## Added 20 - experimental helm charts 21 22 # 3.8.12 23 24 ## Changed 25 26 - Changed trace sampling behavior when `TRACING_IS_PUBLIC_ENDPOINT` is set to false 27 28 # 3.8.11 29 30 ## Added 31 - Added trace debugging setting (`tracing.DebugTraceKey`) to get the Trace ID of a debug request in the response 32 - Added `TRACING_IS_PUBLIC_ENDPOINT` environment variable to allow trace propagation 33 34 ## Changed 35 - Releases are now built with go1.12 36 - Updated github client dependency 37 38 -- 39 40 # 3.8.10 41 42 ## Fixed 43 - Rate limiter logs correct (forwarded) IP if configuration is set to respect `X-Forwarded-For` and `X-Real-IP` headers 44 45 # 3.8.9 46 - Added `CONN_PURGE_INTERVAL` environment variable as a way to prevent stale http keep-alive connections 47 48 # 3.8.8 49 50 ## Added 51 - Rate limiter configuration to respect `X-Forwarded-For` and `X-Real-IP` headers 52 53 ## Changed 54 - Rate limiter plugin now ignores `X-Forwarded-For` and `X-Real-IP` headers by default 55 56 # 3.8.7 57 58 ## Added 59 60 - Url parameters can be used in the target definition. Thanks to @Serjick 61 - Request-ID to error handler logs 62 - Additional attributes to tracing spans 63 64 ## Changed 65 66 - Log writer initialized earlier 67 - Use in-memory repository for basic auth plugin when Mongo is not available 68 - Use `gofrs/uuid` instead of `satori/go.uuid` 69 - Rate limiter respects `X-Forwarded-For` and `X-Real-IP` HTTP headers 70 71 ## Fixed 72 73 - Circuit breaker plugin statsd collector prefix 74 75 # 3.8.6 76 77 ## Updated 78 79 - `http_server_request_latency` to include HTTP method key 80 81 # 3.8.5 82 83 ## Fixed 84 - Fixed plugin configuration not being validated 85 86 ## Updated 87 - Added stats and tracing support with opencensus 88 89 ## Removed 90 - Tracing support via opentracing.io 91 92 # 3.8.4 93 94 ## Fixed 95 - Fixed configuration listener that made API stuck 96 97 # 3.8.3 98 99 ## Added 100 - Support b3 http propagation format for jaeger 101 102 ## Fixed 103 - Race condition on application start. Reported on #348 104 105 ## Updated 106 - Added more debug information to recovery handler to track application errors 107 - New `options_passthrough` parameter for CORS plugin. Thanks to @locker1776 108 109 # 3.8.1 110 111 ## Fixed 112 - Open tracing error and http status code tags were not being set during tracing 113 114 # 3.8.0 115 116 ## Added 117 - New Retry plugin: you can now configure your endpoints to have a retry in case of a failed request 118 - New `read`, `write` and `idle` timeouts for Janus server global configurations 119 - New `dial` and `response_header` timeouts that can be set per endpoint 120 - New `/debug/pprof` endpoint (handlers from `net/http/pprof`) on API port for debugging and profiling (can be enabled with `start` command flags) 121 - Alias `rr` for roundrobin balancer 122 - Add request id as a tag into tracing for seamlessly correlation in tracing UI 123 124 ## Fixed 125 - Fixed bug when using the configuration file in a linux/64 system 126 127 ## Updated 128 - Added `name` parameter for `cb` (Circuit Breaker) plugin to set group explicitly 129 130 ## Removed 131 - Redis is not necessary anymore for the cluster to work 132 - Removed proxy definition property `enable_load_balancing` as it was not being used 133 134 # 3.7.0 135 136 ## Added 137 138 - Leeway support for JWT date fields validation 139 - Support for zero weight when using the weight algorithm for balancing 140 - New header `X-Request-Id` that makes sure it create a new id for each request. It also ties it up with open tracing 141 142 ## Fixed 143 144 - Fixed oauth rate limit reported on #276 145 146 ## Removed 147 148 - `Upstream_URL` support is removed, see the [Upgrade Notes](docs/upgrade/3.7.x.md) 149 150 # 3.6.0 151 152 ## Added 153 154 - Extra JWT metrics for token validation success and error 155 156 ## Fixed 157 158 - Fixed a bug for the `oauth servers` when rows were empty it was returning `null` on the json response 159 160 ## Updated 161 162 - Bumped [stats-go](https://github.com/hellofresh/stats-go) to current latest stable version (0.6.3) - this changes stats DSN config value format, see [`stats-go`](https://github.com/hellofresh/stats-go#instance-creation) docs for details 163 164 # 3.5.0 165 166 ## Added 167 168 - Check GitHub permissions. Sets `is_admin` into the jwt token when the chosen provider is Github 169 - Jaeger support as distributed tracing backend 170 - Added Proxy Listen Path validation to prevent `chi` from panicking in case of invalid listen path 171 - Added load balancing for upstream targets. Now you can add multiple upstream targets and Janus will balance the requests. 172 - Added support for url parameters both in listen path and upstreams. 173 174 ## Fixed 175 176 - Monitor health check endpoints only of active proxies. Reported on #203 177 - Fix hot reload was not working when using in memory storage implementation 178 - Fix oauth servers post endpoint incorrect behaviour. Reported on #234 179 - Add constant time compare to basic auth password. Reported on #194 180 181 ## Removed 182 183 - Appdash support 184 185 ## Updated 186 187 - THe docker image does not depend on a github release anymore 188 189 ## Deprecated 190 191 - `upstream_url` is now deprecated in favor of using the `upstreams` object. This will allow Janus to balance requests if you have more than one upstream target. 192 193 # 3.3.0 194 195 ## Added 196 197 - Added response transformer plugin 198 - Added basic auth plugin 199 - Added github login for the Admin API 200 201 ## Updated 202 203 - Changed our dependency management tool from glide to Dep 204 205 ## Fixed 206 207 - Fixed problems when using -c flag to specify a configuration file 208 - Fixed oAuth2 introspection token strategy when configuring an oauth server 209 210 # 3.2.1 211 212 ## Added 213 214 - Added request body limit plugin 215 - Track application start/restart with stats metrics `<prefix>.app.init.<host>.<app-file>` 216 217 ## Fixed 218 219 - Concurrent map writes in [stats-go](https://github.com/hellofresh/stats-go/pull/15) 220 - Non sampled spans recording in [gcloud-opentracing](https://github.com/hellofresh/gcloud-opentracing/pull/1) 221 222 # 3.2.0 223 224 ## Added 225 - Added support for JWT signature validation chain for `jwt` token strategy 226 - Added support for OAuth2 `introspection` token strategy 227 - Added rate limit configurations for all endpoints of an OAuth2 server 228 229 ## Removed 230 - Dropped support for `storage` token strategy 231 232 # 3.1.0 233 234 ## Changed 235 236 - Moved Concourse CI scripts to another repo 237 - Changed health check JSON output to be in alignment with [health-go](https://github.com/hellofresh/health-go) 238 - Logging configuring is now handled by [logging-go](https://github.com/hellofresh/logging-go), so more logging options now 239 - Bumped Chi router to 3.0, see [changelog](https://github.com/go-chi/chi/blob/master/CHANGELOG.md) if you're using parametrised urls 240 241 ## Added 242 243 - Added [plugin to transform](./docs/plugins/request_transformer.md) a request to an upstream. You can now modify headers and query string before the request is sent 244 - Added godog for behaviour tests 245 - Allow insecure upstream SSL certificate 246 - 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. 247 248 # 3.0.0 249 250 ## Changed 251 252 - 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. 253 - The underling router was changed from [httptreemux](https://github.com/dimfeld/httptreemux) to [Chi](https://github.com/pressly/chi). 254 - Proper Mux reload when an API or OAuth server is changed 255 256 ## Added 257 258 - 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. 259 - 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. 260 - Added health checks to any API definition 261 262 ## Fixed 263 264 - Rate limit bug that was around for quite a while. 265 - Problems when creating a new API definition 266 267 # 2.2.0 268 269 ## Changed 270 271 - Now the docker image is super tiny, less then 14mb when decompressed. 272 - 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. 273 274 ## Added 275 276 - Added coveralls as our coverage tool. 277 - Added plugins specifically for the round tripper. This allows us to decouple the token logic from the tripper. 278 279 # 2.1.0 280 281 ## Changed 282 283 - The CI pipeline now bumps the patch version automatically. 284 - Updated docker compose to use the TOML config file 285 - Replaced the statsd implementation for our stats-go package 286 287 ## Added 288 289 - Added Open Tracing support. Available tracers are Google Cloud Platform and Jaeger. 290 291 # 2.0.0 292 293 ## Changed 294 295 - Split the application in two different ports, an administrative port (defaults to `8081`) and proxies port (defaults to `8080`). 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. 296 - Now the docker image is super tiny, less then 14mb when decompressed. 297 - 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. 298 - Handled 404 in a more elegant way 299 300 ## Added 301 302 - Added possibility to create configurations using YAML, JSON, TOML or environemnt variables. 303 - Added a host matcher middleware.