Back to godoc.org
github.com/zalando/skipper / filters / tee

package tee

v0.11.129
Latest Go to latest
Published: 2 days ago | Licenses: Apache-2.0, MIT | Module: github.com/zalando/skipper

Overview

Package tee provides a unix-like tee feature for routing.

Using this filter, the request will be sent to a "shadow" backend in addition to the main backend of the route.

Example:

* -> tee("https://audit-logging.example.org") -> "https://foo.example.org"

This will send an identical request for foo.example.org to audit-logging.example.org. Another use case could be using it for benchmarking a new backend with some real traffic

The above route will forward the request to https://foo.example.org as it normally would do, but in addition to that, it will send an identical request to https://audit-logging.example.org. The request sent to https://audit-logging.example.org will receive the same method and headers, and a copy of the body stream. The tee response is ignored.

It is possible to change the path of the tee request, in a similar way to the modPath filter:

Path("/api/v1") -> tee("https://api.example.org", "^/v1", "/v2" ) -> "http://api.example.org"

In the above example, one can test how a new version of an API would behave on incoming requests.

Index

Package Files

Constants

const (
	Name           = "tee"
	DeprecatedName = "Tee"
	NoFollowName   = "teenf"
)
const FilterName = "teeLoopback"

func NewTee

func NewTee() filters.Spec

Returns a new tee filter Spec, whose instances execute the exact same Request against a shadow backend. parameters: shadow backend url, optional - the path(as a regexp) to match and the replacement string.

Name: "tee".

func NewTeeDeprecated

func NewTeeDeprecated() filters.Spec

Returns a new tee filter Spec, whose instances execute the exact same Request against a shadow backend. parameters: shadow backend url, optional - the path(as a regexp) to match and the replacement string.

This version uses the capitalized version of the filter name and to follow conventions, it is deprecated and NewTee() (providing the name "tee") should be used instead.

Name: "Tee".

func NewTeeLoopback

func NewTeeLoopback() filters.Spec

func NewTeeNoFollow

func NewTeeNoFollow() filters.Spec

Returns a new tee filter Spec, whose instances execute the exact same Request against a shadow backend. It does not follow the redirects from the backend. parameters: shadow backend url, optional - the path(as a regexp) to match and the replacement string.

Name: "teenf".

func WithOptions

func WithOptions(o Options) filters.Spec

Returns a new tee filter Spec, whose instances execute the exact same Request against a shadow backend with given options. Available options are nofollow and Timeout for http client. parameters: shadow backend url, optional - the path(as a regexp) to match and the replacement string.

type Options

type Options struct {
	// NoFollow specifies whether tee should follow redirects or not.
	// If NoFollow is true, it won't follow, otherwise it will.
	NoFollow bool

	// Timeout specifies a time limit for requests made by tee filter.
	Timeout time.Duration
}

Options for tee filter.

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier