xds

package
v0.18.18 Latest Latest
Warning

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

Go to latest
Published: Aug 16, 2019 License: Apache-2.0 Imports: 19 Imported by: 8

Documentation

Overview

Package server provides an implementation of a streaming xDS server.

Index

Constants

View Source
const (
	EndpointType = typePrefix + "ClusterLoadAssignment"
	ClusterType  = typePrefix + "Cluster"
	RouteType    = typePrefix + "RouteConfiguration"
	ListenerType = typePrefix + "Listener"
)

Resource types in xDS v2.

Variables

View Source
var (
	// ResponseTypes are supported response types.
	ResponseTypes = []string{
		EndpointType,
		ClusterType,
		RouteType,
		ListenerType,
	}
)

Functions

func GetResourceName

func GetResourceName(res cache.ResourceProto) string

GetResourceName returns the resource name for a valid xDS response type.

func GetResourceReferences

func GetResourceReferences(resources map[string]cache.Resource) map[string]bool

GetResourceReferences returns the names for dependent resources (EDS cluster names for CDS, RDS routes names for LDS).

func NewSnapshotFromResources

func NewSnapshotFromResources(endpoints cache.Resources,
	clusters cache.Resources,
	routes cache.Resources,
	listeners cache.Resources) cache.Snapshot

func SetEdsOnCluster added in v0.13.16

func SetEdsOnCluster(out *envoyapi.Cluster)

func SnapshotKey

func SnapshotKey(proxy *v1.Proxy) string

Types

type EnvoyResource

type EnvoyResource struct {
	ProtoMessage cache.ResourceProto
}

func NewEnvoyResource

func NewEnvoyResource(r cache.ResourceProto) *EnvoyResource

func (*EnvoyResource) Name

func (e *EnvoyResource) Name() string

GetResourceName returns the resource name for a valid xDS response type.

func (*EnvoyResource) References

func (e *EnvoyResource) References() []cache.XdsResourceReference

func (*EnvoyResource) ResourceProto

func (e *EnvoyResource) ResourceProto() cache.ResourceProto

func (*EnvoyResource) Self

func (*EnvoyResource) Type

func (e *EnvoyResource) Type() string

type EnvoyServer

Server is a collection of handlers for streaming discovery requests.

func NewEnvoyServer

func NewEnvoyServer(genericServer server.Server) EnvoyServer

NewServer creates handlers from a config watcher and an optional logger.

type EnvoySnapshot

type EnvoySnapshot struct {
	// Endpoints are items in the EDS response payload.
	Endpoints cache.Resources

	// Clusters are items in the CDS response payload.
	Clusters cache.Resources

	// Routes are items in the RDS response payload.
	Routes cache.Resources

	// Listeners are items in the LDS response payload.
	Listeners cache.Resources
}

Snapshot is an internally consistent snapshot of xDS resources. Consistently is important for the convergence as different resource types from the snapshot may be delivered to the proxy in arbitrary order.

func NewSnapshot

func NewSnapshot(version string,
	endpoints []cache.Resource,
	clusters []cache.Resource,
	routes []cache.Resource,
	listeners []cache.Resource) *EnvoySnapshot

NewSnapshot creates a snapshot from response types and a version.

func (*EnvoySnapshot) Clone added in v0.15.0

func (s *EnvoySnapshot) Clone() cache.Snapshot

func (*EnvoySnapshot) Consistent

func (s *EnvoySnapshot) Consistent() error

Consistent check verifies that the dependent resources are exactly listed in the snapshot: - all EDS resources are listed by name in CDS resources - all RDS resources are listed by name in LDS resources

Note that clusters and listeners are requested without name references, so Envoy will accept the snapshot list of clusters as-is even if it does not match all references found in xDS.

func (*EnvoySnapshot) GetResources

func (s *EnvoySnapshot) GetResources(typ string) cache.Resources

GetResources selects snapshot resources by type.

type ProxyKeyHasher

type ProxyKeyHasher struct {
	// contains filtered or unexported fields
}

func SetupEnvoyXds

func SetupEnvoyXds(grpcServer *grpc.Server, xdsServer envoyserver.Server, envoyCache envoycache.SnapshotCache) *ProxyKeyHasher

func (*ProxyKeyHasher) ID

func (h *ProxyKeyHasher) ID(node *core.Node) string

func (*ProxyKeyHasher) SetKeysFromProxies

func (h *ProxyKeyHasher) SetKeysFromProxies(proxies v1.ProxyList)

Called in Syncer when a new set of proxies arrive

Jump to

Keyboard shortcuts

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