Skip to content

Commit

Permalink
Merge pull request #302 from avenga/1-4-release
Browse files Browse the repository at this point in the history
1.4 release
  • Loading branch information
Marcel Ludwig authored Aug 26, 2021
2 parents e50a16b + f93f20f commit 05b80a5
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 11 deletions.
40 changes: 30 additions & 10 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,46 @@
# Couper Changelog

## [Unreleased](https://github.com/avenga/couper/compare/1.3.1...master)
## [Unreleased](https://github.com/avenga/couper/compare/1.4...master)

Unreleased changes are available as `avenga/couper:edge` container.

---

## [1.4](https://github.com/avenga/couper/releases/tag/1.4)

Release date: 2021-08-26

This release introduces [_Beta Features_](./docs/BETA.md). We use beta features to develop and experiment with new, complex features for you while still being able to maintain our compatibility promise. You can see beta features as a feature preview. To make users aware that a beta feature is used their configuration items are prefixed with `beta_`.

The first beta features incorporate the OAuth2 functionality into the Access Control capabilities of Couper. The [`beta_oauth2 {}` block](./docs/REFERENCE.md#oauth2-ac-block-beta) implements OAuth2 Authorization Code Grant Flows. The companion block [`beta_oidc {}`](./docs/REFERENCE.md#oidc-block-beta) implements [OIDC](https://openid.net/connect/), which allows simple integration of 3rd-party systems such as Google, Github or Keycloak for SSO (Single-Sign-On).

Together with transparent [Websockets](docs/REFERENCE.md#websockets-block) support that you can enable in your `proxy {}` block, you can guard existing Web applications with Couper via OIDC.

To aid observability of your setups, Couper sends its request ID as the `Couper-Request-Id` HTTP header in both backend requests and client responses. This makes it possible to trace events and correlate logs throughout the service chain. Couper can also accept a request ID generated by a downstream system like for example a load balancer. Like all [settings](./docs/REFERENCE.md#settings-block), these can be configured in the config, as [command line flag](./docs/CLI.md) or via [environment variables](./DOCKER.md#environment-options).

Load balancers or ingress services often provide `X-Forwarded-Host` headers. Couper can be configured to use these to change the properties of the `request` variable. This allows a Couper configuration to adapt to the run time enviroment, for example to create a back link for OIDC or SAML authorization requests with the `request.origin` variable.

If your applications are running in multiple setups, like testing and production environments, there will likely be more parameters that you want to have configurable. Backend origins, user names, credentials, timeouts, all that could be nice to be changed without a new deployment. Couper supports using environment variables with `env.VAR`-like expressions. Now, Couper can also provide [default values](./docs/REFERENCE.md#defaults-block) for those variables. This makes it easy to have values configurable without the need to provide values outside of Couper (e.g. in Kubernetes). Our [env vars example](https://github.com/avenga/couper-examples/blob/master/env-var/) shows that in action.



* **Added**
* [Run option](./docs/CLI.md#run-options) `-accept-forwarded-url` and [setting](./docs/REFERENCE.md#settings-block) `accept_forwarded_url` to accept `proto`, `host`, or `port` from `X-Forwarded-Proto`, `X-Forwarded-Host` or `X-Forwarded-Port` request headers, affecting new [client request variables](./docs/REFERENCE.md#request) `request.url`, `request.origin`, `request.protocol`, `request.host` and `request.port` ([#255](https://github.com/avenga/couper/pull/255))
* `environment_variables` map in the [`defaults`](./docs/REFERENCE.md#defaults-block) block to define default values for environment variables ([#271](https://github.com/avenga/couper/pull/271))
* [`https-dev-proxy` option](./docs/REFERENCE.md#settings-block) creates a TLS server listing on the given TLS port. Requests are forwarded to the given `server` port. The certificate is generated on-the-fly. This function is intended for local development setups to support browser features requiring HTTPS connections, such as secure cookies. ([#281](https://github.com/avenga/couper/pull/281))
* [`websockets`](docs/REFERENCE.md#websockets-block) option in `proxy` block enables transparent websocket support when proxying to upstream backends ([#198](https://github.com/avenga/couper/issues/198))
* Client request [variables](./docs/REFERENCE.md#request) `request.url`, `request.origin`, `request.protocol`, `request.host` and `request.port` ([#255](https://github.com/avenga/couper/pull/255))
* [Run option](./docs/CLI.md#run-options) `-accept-forwarded-url` and [setting](./docs/REFERENCE.md#settings-block) `accept_forwarded_url` to accept `proto`, `host`, or `port` from `X-Forwarded-Proto`, `X-Forwarded-Host` or `X-Forwarded-Port` request headers ([#255](https://github.com/avenga/couper/pull/255))
* Couper sends its request ID as `Couper-Request-Id` HTTP header in backend requests and client responses. This can be configured with the `request_id_backend_header` and `request_id_client_header` [settings](./docs/REFERENCE.md#settings-block) ([#268](https://github.com/avenga/couper/pull/268))
* [`request_id_accept_from_header` setting](./docs/REFERENCE.md#settings-block) configures Couper to use a downstream request ID instead of generating its own in order to help correlating log events accross services ([#268](https://github.com/avenga/couper/pull/268))
* [`couper.version` variable](docs/REFERENCE.md#couper) ([#274](https://github.com/avenga/couper/pull/274))
* Default values for environment variable by means of `environment_variables` within [`defaults`](./docs/REFERENCE.md#defaults-block) block. ([#271](https://github.com/avenga/couper/pull/271))
* `protocol`, `host`, `port`, `origin`, `body`, `json_body` to [`backend_requests`](./docs/REFERENCE.md#backend_requests) ([#278](https://github.com/avenga/couper/pull/278))
* [Settings](./docs/REFERENCE.md#settings-block) for accepting a downstream requestID and use this ID instead for logging, `request.id` variable and down-/upstream id-header ([#268](https://github.com/avenga/couper/pull/268))
[`https-dev-proxy` option](./docs/REFERENCE.md#settings-block) to listen and proxy from a given tls port to an existing Couper port; a SNI based on-the-fly generated certificate gets served from memory ([#281](https://github.com/avenga/couper/pull/281))
* [`websockets`](docs/REFERENCE.md#websockets-block) option for `proxy` requests to re-support websocket upgrades ([#198](https://github.com/avenga/couper/issues/198))
* `protocol`, `host`, `port`, `origin`, `body`, `json_body` to [`backend_requests` variable](./docs/REFERENCE.md#backend_requests) ([#278](https://github.com/avenga/couper/pull/278))
* Locking to avoid concurrent requests to renew [OAuth2 Client Credentials](./docs/REFERENCE.md#oauth2-cc-block) access tokens ([#270](https://github.com/avenga/couper/issues/270))

* **Changed**
* The `sp_acs_url` in the [SAML Block](./docs/REFERENCE.md#saml-block) may now be relative ([#265](https://github.com/avenga/couper/pull/265))

* **Fixed**
* No GZIP compression for small response bodies ([#186](https://github.com/avenga/couper/issues/186))
* Missing synchronization for OAuth2 access token requests ([#270](https://github.com/avenga/couper/issues/270))
* Missing error type for [request](docs/REFERENCE.md#request-block)/[response](docs/REFERENCE.md#response-block) body, json_body or form_body related HCL evaluation errors ([#276](https://github.com/avenga/couper/pull/276))
* [`request.url`](./docs/REFERENCE.md#request) and [`backend_requests.<label>.url`](./docs/REFERENCE.md#backend_requests) now contain a query string if present ([#278](https://github.com/avenga/couper/pull/278))
* [`backend_responses.<label>.status`](./docs/REFERENCE.md#backend_responses) is now integer ([#278](https://github.com/avenga/couper/pull/278))
Expand All @@ -36,8 +58,6 @@ Unreleased changes are available as `avenga/couper:edge` container.
* OAuth2 Authorization Code Grant Flow: [`beta_oauth2 {}` block](./docs/REFERENCE.md#oauth2-ac-block-beta); [`beta_oauth_authorization_url()`](./docs/REFERENCE.md#functions) and [`beta_oauth_verifier()`](./docs/REFERENCE.md#functions) ([#247](https://github.com/avenga/couper/pull/247))
* OIDC Authorization Code Grant Flow: [`beta_oidc {}` block](./docs/REFERENCE.md#oidc-block-beta) ([#273](https://github.com/avenga/couper/pull/273))

---

## [1.3.1](https://github.com/avenga/couper/compare/1.3...1.3.1)

* **Changed**
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ Key features are:
* Error Handling
* Observability

The full list of features of Couper 1.0 is [here](FEATURES.md) or at [https://couper.io/features](https://couper.io/features).
The full list of features of Couper 1.x is [here](FEATURES.md) or at [couper.io](https://couper.io/en/features).

## Developers

Expand All @@ -57,5 +57,7 @@ Couper requires a [configuration file](./docs/README.md#configuration-file). You
## Contributing

Thanks for your interest in contributing.

If you have any questions or feedback you are welcome to start a [discussion](https://github.com/avenga/couper/discussions).

If you have an issue please open an [issue](https://github.com/avenga/couper/issues).

0 comments on commit 05b80a5

Please sign in to comment.