route

package
v0.0.0-...-d8a8f93 Latest Latest
Warning

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

Go to latest
Published: May 2, 2019 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	HeaderMethod    = ":method"
	HeaderAuthority = ":authority"
	HeaderScheme    = ":scheme"
)

Headers with special meaning in Envoy

Variables

This section is empty.

Functions

func BuildDefaultHTTPRoute

func BuildDefaultHTTPRoute(clusterName string, operation string) *route.Route

BuildDefaultHTTPRoute builds a default route.

func BuildHTTPRoutesForVirtualService

func BuildHTTPRoutesForVirtualService(
	virtualService model.Config,
	serviceRegistry map[model.Hostname]*model.Service,
	port int,
	proxyLabels model.LabelsCollection,
	gatewayNames map[string]bool,
	configStore model.IstioConfigStore) ([]route.Route, error)

BuildHTTPRoutesForVirtualService creates data plane HTTP routes from the virtual service spec. The rule should be adapted to destination names (outbound clusters). Each rule is guarded by source labels.

This is called for each port to compute virtual hosts. Each VirtualService is tried, with a list of services that listen on the port. Error indicates the given virtualService can't be used on the port.

func GetDestinationCluster

func GetDestinationCluster(destination *networking.Destination, service *model.Service, listenerPort int) string

GetDestinationCluster generates a cluster name for the route, or error if no cluster can be found. Called by translateRule to determine if

Types

type VirtualHostWrapper

type VirtualHostWrapper struct {
	// Port is the listener port for outbound sidecar (e.g. service port)
	Port int

	// Services are the services from the registry. Each service
	// in this list should have a virtual host entry
	Services []*model.Service

	// VirtualServiceHosts is a list of hosts defined in the virtual service
	// if virtual service hostname is same as a the service registry host, then
	// the host would appear in Services as we need to generate all variants of the
	// service's hostname within a platform (e.g., foo, foo.default, foo.default.svc, etc.)
	VirtualServiceHosts []string

	// Routes in the virtual host
	Routes []route.Route
}

VirtualHostWrapper is a context-dependent virtual host entry with guarded routes. Note: Currently we are not fully utilizing this structure. We could invoke this logic once for all sidecars in the cluster to compute all RDS for inside the mesh and arrange it by listener port. However to properly use such an optimization, we need to have an eventing subsystem to invalidate the computed routes if any service changes/virtual services change.

func BuildVirtualHostsFromConfigAndRegistry

func BuildVirtualHostsFromConfigAndRegistry(
	configStore model.IstioConfigStore,
	serviceRegistry map[model.Hostname]*model.Service,
	proxyLabels model.LabelsCollection) []VirtualHostWrapper

BuildVirtualHostsFromConfigAndRegistry creates virtual hosts from the given set of virtual services and a list of services from the service registry. Services are indexed by FQDN hostnames.

Jump to

Keyboard shortcuts

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