contour: github.com/projectcontour/contour/internal/envoy Index | Files

package envoy

import "github.com/projectcontour/contour/internal/envoy"

Package envoy contains APIs for translating between Contour objects and Envoy configuration APIs and types.

Index

Package Files

accesslog.go auth.go bootstrap.go cluster.go endpoint.go healthcheck.go listener.go regex.go route.go secret.go socket.go stats.go

Variables

var DefaultFields = []string{
    "@timestamp",
    "authority",
    "bytes_received",
    "bytes_sent",
    "downstream_local_address",
    "downstream_remote_address",
    "duration",
    "method",
    "path",
    "protocol",
    "request_id",
    "requested_server_name",
    "response_code",
    "response_flags",
    "uber_trace_id",
    "upstream_cluster",
    "upstream_host",
    "upstream_local_address",
    "upstream_service_time",
    "user_agent",
    "x_forwarded_for",
}

DefaultFields are fields that will be included by default when JSON logging is enabled.

var JSONFields = map[string]string{
    "@timestamp":                "%START_TIME%",
    "ts":                        "%START_TIME%",
    "authority":                 "%REQ(:AUTHORITY)%",
    "bytes_received":            "%BYTES_RECEIVED%",
    "bytes_sent":                "%BYTES_SENT%",
    "downstream_local_address":  "%DOWNSTREAM_LOCAL_ADDRESS%",
    "downstream_remote_address": "%DOWNSTREAM_REMOTE_ADDRESS%",
    "duration":                  "%DURATION%",
    "method":                    "%REQ(:METHOD)%",
    "path":                      "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%",
    "protocol":                  "%PROTOCOL%",
    "request_id":                "%REQ(X-REQUEST-ID)%",
    "requested_server_name":     "%REQUESTED_SERVER_NAME%",
    "response_code":             "%RESPONSE_CODE%",
    "response_flags":            "%RESPONSE_FLAGS%",
    "uber_trace_id":             "%REQ(UBER-TRACE-ID)%",
    "upstream_cluster":          "%UPSTREAM_CLUSTER%",
    "upstream_host":             "%UPSTREAM_HOST%",
    "upstream_local_address":    "%UPSTREAM_LOCAL_ADDRESS%",
    "upstream_service_time":     "%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%",
    "user_agent":                "%REQ(USER-AGENT)%",
    "x_forwarded_for":           "%REQ(X-FORWARDED-FOR)%",
    "x_trace_id":                "%REQ(X-TRACE-ID)%",
}

JSONFields is the canonical translation table for JSON fields to Envoy log template formats, used for specifying fields for Envoy to log when JSON logging is enabled. Only fields specified in this map may be used for JSON logging.

func AppendHeader Uses

func AppendHeader(key, value string) *envoy_api_v2_core.HeaderValueOption

func Bootstrap Uses

func Bootstrap(c *BootstrapConfig) *bootstrap.Bootstrap

Bootstrap creates a new v2 Bootstrap configuration.

func Cluster Uses

func Cluster(c *dag.Cluster) *v2.Cluster

Cluster creates new v2.Cluster from dag.Cluster.

func ClusterCommonLBConfig Uses

func ClusterCommonLBConfig() *v2.Cluster_CommonLbConfig

ClusterCommonLBConfig creates a *v2.Cluster_CommonLbConfig with HealthyPanicThreshold disabled.

func ClusterDiscoveryType Uses

func ClusterDiscoveryType(t v2.Cluster_DiscoveryType) *v2.Cluster_Type

ClusterDiscoveryType returns the type of a ClusterDiscovery as a Cluster_type.

func ClusterLoadAssignment Uses

func ClusterLoadAssignment(name string, addrs ...*envoy_api_v2_core.Address) *v2.ClusterLoadAssignment

ClusterLoadAssignment returns a *v2.ClusterLoadAssignment with a single LocalityLbEndpoints of the supplied addresses.

func Clustername Uses

func Clustername(cluster *dag.Cluster) string

Clustername returns the name of the CDS cluster for this service.

func ConfigSource Uses

func ConfigSource(cluster string) *envoy_api_v2_core.ConfigSource

ConfigSource returns a *envoy_api_v2_core.ConfigSource for cluster.

func DownstreamTLSContext Uses

func DownstreamTLSContext(serverSecret *dag.Secret, tlsMinProtoVersion envoy_api_v2_auth.TlsParameters_TlsProtocol, peerValidationContext *dag.PeerValidationContext, alpnProtos ...string) *envoy_api_v2_auth.DownstreamTlsContext

DownstreamTLSContext creates a new DownstreamTlsContext.

func DownstreamTLSTransportSocket Uses

func DownstreamTLSTransportSocket(tls *envoy_api_v2_auth.DownstreamTlsContext) *envoy_api_v2_core.TransportSocket

DownstreamTLSTransportSocket returns a custom transport socket using the DownstreamTlsContext provided.

func Endpoints Uses

func Endpoints(addrs ...*envoy_api_v2_core.Address) []*envoy_api_v2_endpoint.LocalityLbEndpoints

Endpoints returns a slice of LocalityLbEndpoints. The slice contains one entry, with one LbEndpoint per *envoy_api_v2_core.Address supplied.

func FileAccessLogEnvoy Uses

func FileAccessLogEnvoy(path string) []*accesslog.AccessLog

FileAccessLogEnvoy returns a new file based access log filter that will output Envoy's default access logs.

func FileAccessLogJSON Uses

func FileAccessLogJSON(path string, keys []string) []*accesslog.AccessLog

FileAccessLogJSON returns a new file based access log filter that will log in JSON format

func FilterChain Uses

func FilterChain(filters ...*envoy_api_v2_listener.Filter) *envoy_api_v2_listener.FilterChain

FilterChain retruns a *envoy_api_v2_listener.FilterChain for the supplied filters.

func FilterChainTLS Uses

func FilterChainTLS(domain string, downstream *envoy_api_v2_auth.DownstreamTlsContext, filters []*envoy_api_v2_listener.Filter) *envoy_api_v2_listener.FilterChain

FilterChainTLS returns a TLS enabled envoy_api_v2_listener.FilterChain,

func FilterChains Uses

func FilterChains(filters ...*envoy_api_v2_listener.Filter) []*envoy_api_v2_listener.FilterChain

FilterChains returns a []*envoy_api_v2_listener.FilterChain for the supplied filters.

func Filters Uses

func Filters(filters ...*envoy_api_v2_listener.Filter) []*envoy_api_v2_listener.Filter

Filters returns a []*envoy_api_v2_listener.Filter for the supplied filters.

func HTTPConnectionManager Uses

func HTTPConnectionManager(routename string, accesslogger []*accesslog.AccessLog, requestTimeout time.Duration) *envoy_api_v2_listener.Filter

HTTPConnectionManager creates a new HTTP Connection Manager filter for the supplied route, access log, and client request timeout.

func HTTPConnectionManagerBuilder Uses

func HTTPConnectionManagerBuilder() *httpConnectionManagerBuilder

func HeaderValueList Uses

func HeaderValueList(hvm map[string]string, app bool) []*envoy_api_v2_core.HeaderValueOption

HeaderValueList creates a list of Envoy HeaderValueOptions from the provided map.

func Headers Uses

func Headers(first *envoy_api_v2_core.HeaderValueOption, rest ...*envoy_api_v2_core.HeaderValueOption) []*envoy_api_v2_core.HeaderValueOption

func LBEndpoint Uses

func LBEndpoint(addr *envoy_api_v2_core.Address) *envoy_api_v2_endpoint.LbEndpoint

LBEndpoint creates a new LbEndpoint.

func Listener Uses

func Listener(name, address string, port int, lf []*envoy_api_v2_listener.ListenerFilter, filters ...*envoy_api_v2_listener.Filter) *v2.Listener

Listener returns a new v2.Listener for the supplied address, port, and filters.

func ListenerFilters Uses

func ListenerFilters(filters ...*envoy_api_v2_listener.ListenerFilter) []*envoy_api_v2_listener.ListenerFilter

ListenerFilters returns a []*envoy_api_v2_listener.ListenerFilter for the supplied listener filters.

func ProxyProtocol Uses

func ProxyProtocol() *envoy_api_v2_listener.ListenerFilter

ProxyProtocol returns a new Proxy Protocol listener filter.

func RouteConfiguration Uses

func RouteConfiguration(name string, virtualhosts ...*envoy_api_v2_route.VirtualHost) *v2.RouteConfiguration

RouteConfiguration returns a *v2.RouteConfiguration.

func RouteMatch Uses

func RouteMatch(route *dag.Route) *envoy_api_v2_route.RouteMatch

RouteMatch creates a *envoy_api_v2_route.RouteMatch for the supplied *dag.Route.

func RouteRoute Uses

func RouteRoute(r *dag.Route) *envoy_api_v2_route.Route_Route

RouteRoute creates a *envoy_api_v2_route.Route_Route for the services supplied. If len(services) is greater than one, the route's action will be a weighted cluster.

func SafeRegexMatch Uses

func SafeRegexMatch(regex string) *matcher.RegexMatcher

SafeRegexMatch retruns a matcher.RegexMatcher for the supplied regex. SafeRegexMatch does not escape regex meta characters.

func Secret Uses

func Secret(s *dag.Secret) *envoy_api_v2_auth.Secret

Secret creates new envoy_api_v2_auth.Secret from secret.

func Secretname Uses

func Secretname(s *dag.Secret) string

Secretname returns the name of the SDS secret for this secret.

func SocketAddress Uses

func SocketAddress(address string, port int) *envoy_api_v2_core.Address

SocketAddress creates a new TCP envoy_api_v2_core.Address.

func StaticClusterLoadAssignment Uses

func StaticClusterLoadAssignment(service *dag.Service) *v2.ClusterLoadAssignment

StaticClusterLoadAssignment creates a *v2.ClusterLoadAssignment pointing to the external DNS address of the service

func StatsListener Uses

func StatsListener(address string, port int) *v2.Listener

StatsListener returns a *v2.Listener configured to serve prometheus metrics on /stats.

func TCPProxy Uses

func TCPProxy(statPrefix string, proxy *dag.TCPProxy, accesslogger []*accesslog.AccessLog) *envoy_api_v2_listener.Filter

TCPProxy creates a new TCPProxy filter.

func TLSInspector Uses

func TLSInspector() *envoy_api_v2_listener.ListenerFilter

TLSInspector returns a new TLS inspector listener filter.

func UpgradeHTTPS Uses

func UpgradeHTTPS() *envoy_api_v2_route.Route_Redirect

UpgradeHTTPS returns a route Action that redirects the request to HTTPS.

func UpstreamTLSContext Uses

func UpstreamTLSContext(peerValidationContext *dag.PeerValidationContext, sni string, alpnProtocols ...string) *envoy_api_v2_auth.UpstreamTlsContext

UpstreamTLSContext creates an envoy_api_v2_auth.UpstreamTlsContext. By default UpstreamTLSContext returns a HTTP/1.1 TLS enabled context. A list of additional ALPN protocols can be provided.

func UpstreamTLSTransportSocket Uses

func UpstreamTLSTransportSocket(tls *envoy_api_v2_auth.UpstreamTlsContext) *envoy_api_v2_core.TransportSocket

UpstreamTLSTransportSocket returns a custom transport socket using the UpstreamTlsContext provided.

func VirtualHost Uses

func VirtualHost(hostname string, routes ...*envoy_api_v2_route.Route) *envoy_api_v2_route.VirtualHost

VirtualHost creates a new route.VirtualHost.

type BootstrapConfig Uses

type BootstrapConfig struct {
    // AdminAccessLogPath is the path to write the access log for the administration server.
    // Defaults to /dev/null.
    AdminAccessLogPath string

    // AdminAddress is the TCP address that the administration server will listen on.
    // Defaults to 127.0.0.1.
    AdminAddress string

    // AdminPort is the port that the administration server will listen on.
    // Defaults to 9001.
    AdminPort int

    // XDSAddress is the TCP address of the gRPC XDS management server.
    // Defaults to 127.0.0.1.
    XDSAddress string

    // XDSGRPCPort is the management server port that provides the v2 gRPC API.
    // Defaults to 8001.
    XDSGRPCPort int

    // Namespace is the namespace where Contour is running
    Namespace string

    //GrpcCABundle is the filename that contains a CA certificate chain that can
    //verify the client cert.
    GrpcCABundle string

    // GrpcClientCert is the filename that contains a client certificate. May contain a full bundle if you
    // don't want to pass a CA Bundle.
    GrpcClientCert string

    // GrpcClientKey is the filename that contains a client key for secure gRPC with TLS.
    GrpcClientKey string
}

BootstrapConfig holds configuration values for a v2.Bootstrap.

Package envoy imports 33 packages (graph) and is imported by 7 packages. Updated 2020-04-01. Refresh now. Tools for package owners.