Documentation ¶
Overview ¶
Package server provides an implementation of a streaming xDS server.
Package server provides an implementation of a streaming xDS server.
Index ¶
- Constants
- func IsKubeGatewayCacheKey(key string) bool
- func NewAdsSnapshotCache(ctx context.Context) cache.SnapshotCache
- func NewEndpointsSnapshotFromResources(endpoints cache.Resources, clusters cache.Resources) cache.Snapshot
- func NewNodeRoleHasher() *nodeRoleHasher
- func NewSnapshotFromResources(endpoints cache.Resources, clusters cache.Resources, routes cache.Resources, ...) cache.Snapshot
- func OwnerNamespaceNameID(owner, namespace, name string) string
- func SetEdsOnCluster(out *envoy_config_cluster_v3.Cluster, settings *v1.Settings)
- func SetupEnvoyXds(grpcServer *grpc.Server, xdsServer envoyserver.Server, ...)
- func SnapshotCacheKey(proxy *v1.Proxy) string
- func SnapshotCacheKeys(proxies v1.ProxyList) []string
- type EnvoyServerV3
- type EnvoySnapshot
- type GlooXdsServer
- type MockXdsCache
- func (*MockXdsCache) ClearSnapshot(node string)
- func (*MockXdsCache) CreateWatch(envoycache.Request) (value chan envoycache.Response, cancel func())
- func (*MockXdsCache) Fetch(context.Context, envoycache.Request) (*envoycache.Response, error)
- func (c *MockXdsCache) GetSnapshot(node string) (envoycache.Snapshot, error)
- func (*MockXdsCache) GetStatusInfo(string) envoycache.StatusInfo
- func (c *MockXdsCache) GetStatusKeys() []string
- func (c *MockXdsCache) SetSnapshot(node string, snapshot envoycache.Snapshot)
Constants ¶
const ( // FallbackNodeCacheKey is used to let nodes know they have a bad config // we assign a "fix me" snapshot for bad nodes FallbackNodeCacheKey = "misconfigured-node" // RoleKey is the name of the ket in the node.metadata used to store the role RoleKey = "role" )
const KeyDelimiter = "~"
KeyDelimiter is the character used to join segments of a cache key
Variables ¶
This section is empty.
Functions ¶
func IsKubeGatewayCacheKey ¶
func NewAdsSnapshotCache ¶ added in v1.9.25
func NewAdsSnapshotCache(ctx context.Context) cache.SnapshotCache
NewAdsSnapshotCache returns a snapshot-based cache, used to serve xDS requests
func NewEndpointsSnapshotFromResources ¶ added in v1.6.16
func NewNodeRoleHasher ¶ added in v1.9.25
func NewNodeRoleHasher() *nodeRoleHasher
func OwnerNamespaceNameID ¶ added in v1.17.0
OwnerNamespaceNameID returns the string identifier for an Envoy node in a provided namespace. Envoy proxies are assigned their configuration by Gloo based on their Node ID. Therefore, proxies must identify themselves using the same naming convention that we use to persist the Proxy resource in the snapshot cache. The naming convention that we follow is "OWNER~NAMESPACE~NAME"
func SetEdsOnCluster ¶ added in v0.13.16
func SetEdsOnCluster(out *envoy_config_cluster_v3.Cluster, settings *v1.Settings)
SetEdsOnCluster marks an Envoy Cluster to receive its Endpoints from the xDS Server https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/service_discovery#arch-overview-service-discovery-types-eds In Gloo, we support both streaming (gRPC) and polling (REST)
NOTE: REST EDS was introduced as a way of bypassing https://github.com/envoyproxy/envoy/issues/13070 a bug in Envoy that would cause clusters to warm, without endpoints. That bug has since been resolved and gRPC EDS is preferred as the polling solution is more resource intensive and could delay updates by as much as 5 seconds (or whatever the refresh delay is)
func SetupEnvoyXds ¶
func SetupEnvoyXds(grpcServer *grpc.Server, xdsServer envoyserver.Server, envoyCache envoycache.SnapshotCache)
register xDS methods with GRPC server
func SnapshotCacheKey ¶ added in v1.9.25
SnapshotCacheKey returns the key used to identify a Proxy resource in a SnapshotCache
func SnapshotCacheKeys ¶ added in v1.9.25
SnapshotCacheKeys returns a list with the SnapshotCacheKey for each Proxy
Types ¶
type EnvoyServerV3 ¶ added in v1.6.0
type EnvoyServerV3 interface { envoy_service_endpoint_v3.EndpointDiscoveryServiceServer envoy_service_cluster_v3.ClusterDiscoveryServiceServer envoy_service_route_v3.RouteDiscoveryServiceServer envoy_service_listener_v3.ListenerDiscoveryServiceServer envoy_service_discovery_v3.AggregatedDiscoveryServiceServer }
Server is a collection of handlers for streaming discovery requests.
func NewEnvoyServerV3 ¶ added in v1.6.0
func NewEnvoyServerV3(genericServer server.Server) EnvoyServerV3
type EnvoySnapshot ¶
type EnvoySnapshot struct { // Endpoints are items in the EDS V3 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) Equal ¶ added in v1.6.0
func (this *EnvoySnapshot) Equal(that *EnvoySnapshot) bool
Equal checks is 2 snapshots are equal, important since reflect.DeepEqual no longer works with proto4
func (*EnvoySnapshot) GetResources ¶
func (s *EnvoySnapshot) GetResources(typ string) cache.Resources
GetResources selects snapshot resources by type.
func (*EnvoySnapshot) MakeConsistent ¶ added in v1.9.25
func (s *EnvoySnapshot) MakeConsistent()
MakeConsistent removes any items that fail to link to parent resources in the snapshot. It will also add placeholder routes for listeners referencing non-existent routes.
type GlooXdsServer ¶ added in v1.8.0
type GlooXdsServer interface { discovery_service.SoloDiscoveryServiceServer }
Server includes handlers for streaming aggregate discovery requests via the SoloDiscoveryService.
func NewGlooXdsServer ¶ added in v1.8.0
func NewGlooXdsServer(genericServer server.Server) GlooXdsServer
type MockXdsCache ¶ added in v1.17.0
type MockXdsCache struct { Called bool // Snap that is set SetSnap envoycache.Snapshot // Snap that is returned GetSnap envoycache.Snapshot }
MockXdsCache is a custom implementation for the SnapshotCache interface It was copied from `project/gloo/pkg/syncer/syncer_test_helper.MockXdsCache` It is located here for 2 reasons:
- It is now co-located with the relevant xds code
- It can be imported by other tests, without introducing import cycles
func (*MockXdsCache) ClearSnapshot ¶ added in v1.17.0
func (*MockXdsCache) ClearSnapshot(node string)
func (*MockXdsCache) CreateWatch ¶ added in v1.17.0
func (*MockXdsCache) CreateWatch(envoycache.Request) (value chan envoycache.Response, cancel func())
func (*MockXdsCache) Fetch ¶ added in v1.17.0
func (*MockXdsCache) Fetch(context.Context, envoycache.Request) (*envoycache.Response, error)
func (*MockXdsCache) GetSnapshot ¶ added in v1.17.0
func (c *MockXdsCache) GetSnapshot(node string) (envoycache.Snapshot, error)
func (*MockXdsCache) GetStatusInfo ¶ added in v1.17.0
func (*MockXdsCache) GetStatusInfo(string) envoycache.StatusInfo
func (*MockXdsCache) GetStatusKeys ¶ added in v1.17.0
func (c *MockXdsCache) GetStatusKeys() []string
func (*MockXdsCache) SetSnapshot ¶ added in v1.17.0
func (c *MockXdsCache) SetSnapshot(node string, snapshot envoycache.Snapshot)