package xds

import "google.golang.org/grpc/xds"

Package xds contains an implementation of the xDS suite of protocols, to be used by gRPC client and server applications.

On the client-side, users simply need to import this package to get all xDS functionality. On the server-side, users need to use the GRPCServer type exported by this package instead of the regular grpc.Server.

See https://github.com/grpc/grpc-go/tree/master/examples/features/xds for example.

Index

Functions

func BootstrapContentsForTesting

func BootstrapContentsForTesting(contents []byte) grpc.ServerOption

BootstrapContentsForTesting returns a grpc.ServerOption which allows users to inject a bootstrap configuration used by only this server, instead of the global configuration from the environment variables.

Testing Only

This function should ONLY be used for testing and may not work with some other features, including the CSDS service.

Experimental

Notice: This API is EXPERIMENTAL and may be changed or removed in a later release.

func NewXDSResolverWithConfigForTesting

func NewXDSResolverWithConfigForTesting(bootstrapConfig []byte) (resolver.Builder, error)

NewXDSResolverWithConfigForTesting creates a new xDS resolver builder using the provided xDS bootstrap config instead of the global configuration from the supported environment variables. The resolver.Builder is meant to be used in conjunction with the grpc.WithResolvers DialOption.

Testing Only

This function should ONLY be used for testing and may not work with some other features, including the CSDS service.

Experimental

Notice: This API is EXPERIMENTAL and may be changed or removed in a later release.

func ServingModeCallback

func ServingModeCallback(cb ServingModeCallbackFunc) grpc.ServerOption

ServingModeCallback returns a grpc.ServerOption which allows users to register a callback to get notified about serving mode changes.

Types

type GRPCServer

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

GRPCServer wraps a gRPC server and provides server-side xDS functionality, by communication with a management server using xDS APIs. It implements the grpc.ServiceRegistrar interface and can be passed to service registration functions in IDL generated code.

func NewGRPCServer

func NewGRPCServer(opts ...grpc.ServerOption) (*GRPCServer, error)

NewGRPCServer creates an xDS-enabled gRPC server using the passed in opts. The underlying gRPC server has no service registered and has not started to accept requests yet.

func (*GRPCServer) GetServiceInfo

func (s *GRPCServer) GetServiceInfo() map[string]grpc.ServiceInfo

GetServiceInfo returns a map from service names to ServiceInfo. Service names include the package names, in the form of <package>.<service>.

func (*GRPCServer) GracefulStop

func (s *GRPCServer) GracefulStop()

GracefulStop stops the underlying gRPC server gracefully. It stops the server from accepting new connections and RPCs and blocks until all the pending RPCs are finished.

func (*GRPCServer) RegisterService

func (s *GRPCServer) RegisterService(sd *grpc.ServiceDesc, ss any)

RegisterService registers a service and its implementation to the underlying gRPC server. It is called from the IDL generated code. This must be called before invoking Serve.

func (*GRPCServer) Serve

func (s *GRPCServer) Serve(lis net.Listener) error

Serve gets the underlying gRPC server to accept incoming connections on the listener lis, which is expected to be listening on a TCP port.

A connection to the management server, to receive xDS configuration, is initiated here.

Serve will return a non-nil error unless Stop or GracefulStop is called.

func (*GRPCServer) Stop

func (s *GRPCServer) Stop()

Stop stops the underlying gRPC server. It immediately closes all open connections. It cancels all active RPCs on the server side and the corresponding pending RPCs on the client side will get notified by connection errors.

type ServingModeCallbackFunc

type ServingModeCallbackFunc func(addr net.Addr, args ServingModeChangeArgs)

ServingModeCallbackFunc is the callback that users can register to get notified about the server's serving mode changes. The callback is invoked with the address of the listener and its new mode.

Users must not perform any blocking operations in this callback.

type ServingModeChangeArgs

type ServingModeChangeArgs struct {
	// Mode is the new serving mode of the server listener.
	Mode connectivity.ServingMode
	// Err is set to a non-nil error if the server has transitioned into
	// not-serving mode.
	Err error
}

ServingModeChangeArgs wraps the arguments passed to the serving mode callback function.

Source Files

server.go server_options.go xds.go

Directories

PathSynopsis
xds/bootstrapPackage bootstrap provides the functionality to register possible options for aspects of the xDS client through the bootstrap file.
xds/csdsPackage csds implements features to dump the status (xDS responses) the xds_client is using.
xds/googledirectpathPackage googledirectpath implements a resolver that configures xds to make cloud to prod directpath connection.
xds/internalPackage internal contains functions/structs shared by xds balancers/resolvers.
Version
v1.70.0 (latest)
Published
Jan 23, 2025
Platform
linux/amd64
Imports
31 packages
Last checked
17 hours ago

Tools for package owners.