gateway

package
v1.8.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 5, 2022 License: Apache-2.0 Imports: 49 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultConcurrentStreams = 100

Concurrency defaults.

View Source
const DefaultConnectionBuffer = 32 * 1024

Buffer defaults.

View Source
const DefaultIdleTimeout = 5 * time.Minute
View Source
const DefaultInitialConnectionWindowSize = 1024 * 1024
View Source
const DefaultInitialStreamWindowSize = 64 * 1024

Window size defaults.

View Source
const DefaultRequestHeadersTimeout = 500 * time.Millisecond

Timeout defaults.

View Source
const DefaultStreamIdleTimeout = 5 * time.Second
View Source
const OriginGateway = "gateway"

OriginGateway marks xDS resources generated by this plugin.

View Source
const PluginName core_plugins.PluginName = "gateway"
View Source
const ProfileGatewayProxy = "gateway-proxy"

ProfileGatewayProxy is the name of the gateway proxy template profile.

Variables

ConnectionPolicyTypes specifies the resource types the gateway will bind for connection policies.

View Source
var DefaultProxyTemplate = &mesh_proto.ProxyTemplate{
	Conf: &mesh_proto.ProxyTemplate_Conf{
		Imports: []string{
			ProfileGatewayProxy,
		},
	},
}

DefaultProxyTemplate captures the gateway proxy profile as a ProxyTemplate resource.

RoutePolicyTypes specifies the resource types the gateway will bind for routes.

Functions

func BuildResourceSet

func BuildResourceSet(b ResourceBuilder) (*xds.ResourceSet, error)

BuildResourceSet is an adaptor that triggers the resource builder, b, to build its resource. If the builder is successful, the result is wrapped in a ResourceSet.

func GenerateEnvoyRouteEntries

func GenerateEnvoyRouteEntries(host GatewayHost) []route.Entry

func GenerateVirtualHost

func GenerateVirtualHost(
	ctx xds_context.Context, info GatewayListenerInfo, host GatewayHost, routes []route.Entry,
) (
	*envoy_routes.VirtualHostBuilder, error,
)

GenerateVirtualHost generates xDS resources for the current route table.

func MakeGatewayListener

func MakeGatewayListener(
	meshContext xds_context.MeshContext,
	gateway *core_mesh.MeshGatewayResource,
	dataplane *core_mesh.DataplaneResource,
	listeners []*mesh_proto.MeshGateway_Listener,
) (GatewayListener, []GatewayHost)

MakeGatewayListener converts a collapsed set of listener configurations in to a single configuration with a matched set of route resources. The given listeners must have a consistent protocol and port. Listeners must be validated for collapsibility in terms of hostnames and protocols.

func NewProxyProfile

func NewProxyProfile(zone string) generator_core.ResourceGenerator

NewProxyProfile returns a new resource generator profile for builtin gateway dataplanes.

func NewResource

func NewResource(name string, resource proto.Message) *xds.Resource

func PopulatePolicies

func PopulatePolicies(host GatewayHost, routes []route.Entry) []route.Entry

Types

type ClusterGenerator

type ClusterGenerator struct {
	Zone string
}

ClusterGenerator generates Envoy clusters and their corresponding load assignments for both mesh services and external services.

func (*ClusterGenerator) GenerateClusters

GenerateHost generates clusters for all the services targeted in the current route table.

type FilterChainGenerator

type FilterChainGenerator interface {
	Generate(xds_context.Context, GatewayListenerInfo, []GatewayHost) (*core_xds.ResourceSet, []*envoy_listeners.FilterChainBuilder, error)
}

FilterChainGenerator is responsible for handling the filter chain for a specific protocol. A FilterChainGenerator can be host-specific or shared amongst hosts.

type GatewayHost

type GatewayHost struct {
	Hostname string
	Routes   []*core_mesh.MeshGatewayRouteResource
	Policies map[model.ResourceType][]match.RankedPolicy
	TLS      *mesh_proto.MeshGateway_TLS_Conf
	// Contains MeshGateway, Listener and Dataplane object tags
	Tags mesh_proto.TagSelector
}

func RedistributeWildcardRoutes

func RedistributeWildcardRoutes(
	hosts []GatewayHost,
) []GatewayHost

RedistributeWildcardRoutes takes the routes from the wildcard host and redistributes them to hosts with matching names, creating new hosts if necessary.

This process is necessary because:

  1. We might have a listener with hostname A and some routes, but also a wildcard listener with routes for hostname A. We want all the routes for hostname A in the same virtual host.
  2. Routes with hostnames that are attached to a wildcard listener should implicitly create virtual hosts so that we can generate a consistent config. For example, if a wildcard listener has a route for hostname A and a route for hostname B, that doesn't mean that the routes are for hostnames A or B. We still want the routes to match the hostname that they were specified with.

type GatewayHostInfo

type GatewayHostInfo struct {
	Host    GatewayHost
	Entries []route.Entry
}

type GatewayListener

type GatewayListener struct {
	Port         uint32
	Protocol     mesh_proto.MeshGateway_Listener_Protocol
	ResourceName string
	// CrossMesh is important because for generation we need to treat such a
	// listener as if we have HTTPS with the Mesh cert for this Dataplane
	CrossMesh bool
	Resources *mesh_proto.MeshGateway_Listener_Resources // TODO verify these don't conflict when merging
}

type GatewayListenerInfo

type GatewayListenerInfo struct {
	Proxy             *core_xds.Proxy
	Gateway           *core_mesh.MeshGatewayResource
	ExternalServices  *core_mesh.ExternalServiceResourceList
	OutboundEndpoints core_xds.EndpointMap

	Listener  GatewayListener
	HostInfos []GatewayHostInfo
}

GatewayListenerInfo holds everything needed to generate resources for a listener.

func GatewayListenerInfoFromProxy

func GatewayListenerInfoFromProxy(
	ctx xds_context.MeshContext, proxy *core_xds.Proxy, zone string,
) (
	[]GatewayListenerInfo, error,
)

GatewayListenerInfoFromProxy processes a Dataplane and the corresponding Gateway and returns information about the listeners, routes and applied policies.

type Generator

type Generator struct {
	FilterChainGenerators filterChainGenerators
	ClusterGenerator      ClusterGenerator
	Zone                  string
}

Generator generates xDS resources for an entire Gateway.

func (Generator) Generate

func (g Generator) Generate(ctx xds_context.Context, proxy *core_xds.Proxy) (*core_xds.ResourceSet, error)

type HTTPFilterChainGenerator

type HTTPFilterChainGenerator struct {
}

HTTPFilterChainGenerator generates a filter chain for a HTTP listener.

func (*HTTPFilterChainGenerator) Generate

type HTTPSFilterChainGenerator

type HTTPSFilterChainGenerator struct {
}

HTTPSFilterChainGenerator generates a filter chain for an HTTPS listener.

func (*HTTPSFilterChainGenerator) Generate

type ResourceBuilder

type ResourceBuilder interface {
	Build() (envoy.NamedResource, error)
}

ResourceBuilder is an interface commonly implemented by complex Envoy configuration element builders.

type RuntimeResoureLimitListener

type RuntimeResoureLimitListener struct {
	Name            string
	ConnectionLimit uint32
}

type TCPFilterChainGenerator

type TCPFilterChainGenerator struct {
}

TCPFilterChainGenerator generates a filter chain for a TCP listener.

func (*TCPFilterChainGenerator) Generate

type TemplateResolver

type TemplateResolver struct{}

TemplateResolver resolved the default proxy template profile for builtin gateway dataplanes.

func (TemplateResolver) GetTemplate

func (r TemplateResolver) GetTemplate(proxy *core_xds.Proxy) *mesh_proto.ProxyTemplate

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL