Documentation
¶
Index ¶
- Constants
- Variables
- func RegisterHealthDiscoveryServiceServer(s grpc.ServiceRegistrar, srv HealthDiscoveryServiceServer)
- type Capability
- type Capability_Protocol
- func (Capability_Protocol) Descriptor() protoreflect.EnumDescriptor
- func (x Capability_Protocol) Enum() *Capability_Protocol
- func (Capability_Protocol) EnumDescriptor() ([]byte, []int)deprecated
- func (x Capability_Protocol) Number() protoreflect.EnumNumber
- func (x Capability_Protocol) String() string
- func (Capability_Protocol) Type() protoreflect.EnumType
- type ClusterEndpointsHealth
- func (*ClusterEndpointsHealth) Descriptor() ([]byte, []int)deprecated
- func (x *ClusterEndpointsHealth) GetClusterName() string
- func (x *ClusterEndpointsHealth) GetLocalityEndpointsHealth() []*LocalityEndpointsHealth
- func (*ClusterEndpointsHealth) ProtoMessage()
- func (x *ClusterEndpointsHealth) ProtoReflect() protoreflect.Message
- func (x *ClusterEndpointsHealth) Reset()
- func (x *ClusterEndpointsHealth) String() string
- type ClusterHealthCheck
- func (*ClusterHealthCheck) Descriptor() ([]byte, []int)deprecated
- func (x *ClusterHealthCheck) GetClusterName() string
- func (x *ClusterHealthCheck) GetHealthChecks() []*v3.HealthCheck
- func (x *ClusterHealthCheck) GetLocalityEndpoints() []*LocalityEndpoints
- func (x *ClusterHealthCheck) GetTransportSocketMatches() []*v32.Cluster_TransportSocketMatch
- func (x *ClusterHealthCheck) GetUpstreamBindConfig() *v3.BindConfig
- func (*ClusterHealthCheck) ProtoMessage()
- func (x *ClusterHealthCheck) ProtoReflect() protoreflect.Message
- func (x *ClusterHealthCheck) Reset()
- func (x *ClusterHealthCheck) String() string
- type EndpointHealth
- func (*EndpointHealth) Descriptor() ([]byte, []int)deprecated
- func (x *EndpointHealth) GetEndpoint() *v31.Endpoint
- func (x *EndpointHealth) GetHealthStatus() v3.HealthStatus
- func (*EndpointHealth) ProtoMessage()
- func (x *EndpointHealth) ProtoReflect() protoreflect.Message
- func (x *EndpointHealth) Reset()
- func (x *EndpointHealth) String() string
- type EndpointHealthResponse
- func (*EndpointHealthResponse) Descriptor() ([]byte, []int)deprecated
- func (x *EndpointHealthResponse) GetClusterEndpointsHealth() []*ClusterEndpointsHealth
- func (x *EndpointHealthResponse) GetEndpointsHealth() []*EndpointHealthdeprecated
- func (*EndpointHealthResponse) ProtoMessage()
- func (x *EndpointHealthResponse) ProtoReflect() protoreflect.Message
- func (x *EndpointHealthResponse) Reset()
- func (x *EndpointHealthResponse) String() string
- type HdsDummy
- type HealthCheckRequest
- func (*HealthCheckRequest) Descriptor() ([]byte, []int)deprecated
- func (x *HealthCheckRequest) GetCapability() *Capability
- func (x *HealthCheckRequest) GetNode() *v3.Node
- func (*HealthCheckRequest) ProtoMessage()
- func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message
- func (x *HealthCheckRequest) Reset()
- func (x *HealthCheckRequest) String() string
- type HealthCheckRequestOrEndpointHealthResponse
- func (*HealthCheckRequestOrEndpointHealthResponse) Descriptor() ([]byte, []int)deprecated
- func (x *HealthCheckRequestOrEndpointHealthResponse) GetEndpointHealthResponse() *EndpointHealthResponse
- func (x *HealthCheckRequestOrEndpointHealthResponse) GetHealthCheckRequest() *HealthCheckRequest
- func (m *HealthCheckRequestOrEndpointHealthResponse) GetRequestType() isHealthCheckRequestOrEndpointHealthResponse_RequestType
- func (*HealthCheckRequestOrEndpointHealthResponse) ProtoMessage()
- func (x *HealthCheckRequestOrEndpointHealthResponse) ProtoReflect() protoreflect.Message
- func (x *HealthCheckRequestOrEndpointHealthResponse) Reset()
- func (x *HealthCheckRequestOrEndpointHealthResponse) String() string
- type HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse
- type HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest
- type HealthCheckSpecifier
- func (*HealthCheckSpecifier) Descriptor() ([]byte, []int)deprecated
- func (x *HealthCheckSpecifier) GetClusterHealthChecks() []*ClusterHealthCheck
- func (x *HealthCheckSpecifier) GetInterval() *durationpb.Duration
- func (*HealthCheckSpecifier) ProtoMessage()
- func (x *HealthCheckSpecifier) ProtoReflect() protoreflect.Message
- func (x *HealthCheckSpecifier) Reset()
- func (x *HealthCheckSpecifier) String() string
- type HealthDiscoveryServiceClient
- type HealthDiscoveryServiceServer
- type HealthDiscoveryService_StreamHealthCheckClient
- type HealthDiscoveryService_StreamHealthCheckServer
- type LocalityEndpoints
- func (*LocalityEndpoints) Descriptor() ([]byte, []int)deprecated
- func (x *LocalityEndpoints) GetEndpoints() []*v31.Endpoint
- func (x *LocalityEndpoints) GetLocality() *v3.Locality
- func (*LocalityEndpoints) ProtoMessage()
- func (x *LocalityEndpoints) ProtoReflect() protoreflect.Message
- func (x *LocalityEndpoints) Reset()
- func (x *LocalityEndpoints) String() string
- type LocalityEndpointsHealth
- func (*LocalityEndpointsHealth) Descriptor() ([]byte, []int)deprecated
- func (x *LocalityEndpointsHealth) GetEndpointsHealth() []*EndpointHealth
- func (x *LocalityEndpointsHealth) GetLocality() *v3.Locality
- func (*LocalityEndpointsHealth) ProtoMessage()
- func (x *LocalityEndpointsHealth) ProtoReflect() protoreflect.Message
- func (x *LocalityEndpointsHealth) Reset()
- func (x *LocalityEndpointsHealth) String() string
- type UnimplementedHealthDiscoveryServiceServer
- type UnsafeHealthDiscoveryServiceServer
Constants ¶
const ( HealthDiscoveryService_StreamHealthCheck_FullMethodName = "/envoy.service.health.v3.HealthDiscoveryService/StreamHealthCheck" HealthDiscoveryService_FetchHealthCheck_FullMethodName = "/envoy.service.health.v3.HealthDiscoveryService/FetchHealthCheck" )
Variables ¶
var ( Capability_Protocol_name = map[int32]string{ 0: "HTTP", 1: "TCP", 2: "REDIS", } Capability_Protocol_value = map[string]int32{ "HTTP": 0, "TCP": 1, "REDIS": 2, } )
Enum value maps for Capability_Protocol.
var File_envoy_service_health_v3_hds_proto protoreflect.FileDescriptor
var HealthDiscoveryService_ServiceDesc = grpc.ServiceDesc{ ServiceName: "envoy.service.health.v3.HealthDiscoveryService", HandlerType: (*HealthDiscoveryServiceServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "FetchHealthCheck", Handler: _HealthDiscoveryService_FetchHealthCheck_Handler, }, }, Streams: []grpc.StreamDesc{ { StreamName: "StreamHealthCheck", Handler: _HealthDiscoveryService_StreamHealthCheck_Handler, ServerStreams: true, ClientStreams: true, }, }, Metadata: "envoy/service/health/v3/hds.proto", }
HealthDiscoveryService_ServiceDesc is the grpc.ServiceDesc for HealthDiscoveryService service. It's only intended for direct use with grpc.RegisterService, and not to be introspected or modified (even as a copy)
Functions ¶
func RegisterHealthDiscoveryServiceServer ¶
func RegisterHealthDiscoveryServiceServer(s grpc.ServiceRegistrar, srv HealthDiscoveryServiceServer)
Types ¶
type Capability ¶
type Capability struct { HealthCheckProtocols []Capability_Protocol `` /* 180-byte string literal not displayed */ // contains filtered or unexported fields }
Defines supported protocols etc, so the management server can assign proper endpoints to healthcheck.
func (*Capability) Descriptor
deprecated
func (*Capability) Descriptor() ([]byte, []int)
Deprecated: Use Capability.ProtoReflect.Descriptor instead.
func (*Capability) GetHealthCheckProtocols ¶
func (x *Capability) GetHealthCheckProtocols() []Capability_Protocol
func (*Capability) ProtoMessage ¶
func (*Capability) ProtoMessage()
func (*Capability) ProtoReflect ¶
func (x *Capability) ProtoReflect() protoreflect.Message
func (*Capability) Reset ¶
func (x *Capability) Reset()
func (*Capability) String ¶
func (x *Capability) String() string
type Capability_Protocol ¶
type Capability_Protocol int32
Different Envoy instances may have different capabilities (e.g. Redis) and/or have ports enabled for different protocols.
const ( Capability_HTTP Capability_Protocol = 0 Capability_TCP Capability_Protocol = 1 Capability_REDIS Capability_Protocol = 2 )
func (Capability_Protocol) Descriptor ¶
func (Capability_Protocol) Descriptor() protoreflect.EnumDescriptor
func (Capability_Protocol) Enum ¶
func (x Capability_Protocol) Enum() *Capability_Protocol
func (Capability_Protocol) EnumDescriptor
deprecated
func (Capability_Protocol) EnumDescriptor() ([]byte, []int)
Deprecated: Use Capability_Protocol.Descriptor instead.
func (Capability_Protocol) Number ¶
func (x Capability_Protocol) Number() protoreflect.EnumNumber
func (Capability_Protocol) String ¶
func (x Capability_Protocol) String() string
func (Capability_Protocol) Type ¶
func (Capability_Protocol) Type() protoreflect.EnumType
type ClusterEndpointsHealth ¶
type ClusterEndpointsHealth struct { ClusterName string `protobuf:"bytes,1,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` LocalityEndpointsHealth []*LocalityEndpointsHealth `` /* 132-byte string literal not displayed */ // contains filtered or unexported fields }
The health status of endpoints in a cluster. The cluster name and locality should match the corresponding fields in ClusterHealthCheck message.
func (*ClusterEndpointsHealth) Descriptor
deprecated
func (*ClusterEndpointsHealth) Descriptor() ([]byte, []int)
Deprecated: Use ClusterEndpointsHealth.ProtoReflect.Descriptor instead.
func (*ClusterEndpointsHealth) GetClusterName ¶
func (x *ClusterEndpointsHealth) GetClusterName() string
func (*ClusterEndpointsHealth) GetLocalityEndpointsHealth ¶
func (x *ClusterEndpointsHealth) GetLocalityEndpointsHealth() []*LocalityEndpointsHealth
func (*ClusterEndpointsHealth) ProtoMessage ¶
func (*ClusterEndpointsHealth) ProtoMessage()
func (*ClusterEndpointsHealth) ProtoReflect ¶
func (x *ClusterEndpointsHealth) ProtoReflect() protoreflect.Message
func (*ClusterEndpointsHealth) Reset ¶
func (x *ClusterEndpointsHealth) Reset()
func (*ClusterEndpointsHealth) String ¶
func (x *ClusterEndpointsHealth) String() string
type ClusterHealthCheck ¶
type ClusterHealthCheck struct { ClusterName string `protobuf:"bytes,1,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` HealthChecks []*v3.HealthCheck `protobuf:"bytes,2,rep,name=health_checks,json=healthChecks,proto3" json:"health_checks,omitempty"` LocalityEndpoints []*LocalityEndpoints `protobuf:"bytes,3,rep,name=locality_endpoints,json=localityEndpoints,proto3" json:"locality_endpoints,omitempty"` // Optional map that gets filtered by :ref:`health_checks.transport_socket_match_criteria <envoy_v3_api_field_config.core.v3.HealthCheck.transport_socket_match_criteria>` // on connection when health checking. For more details, see // :ref:`config.cluster.v3.Cluster.transport_socket_matches <envoy_v3_api_field_config.cluster.v3.Cluster.transport_socket_matches>`. TransportSocketMatches []*v32.Cluster_TransportSocketMatch `` /* 129-byte string literal not displayed */ // Optional configuration used to bind newly established upstream connections. // If the address and port are empty, no bind will be performed. UpstreamBindConfig *v3.BindConfig `protobuf:"bytes,5,opt,name=upstream_bind_config,json=upstreamBindConfig,proto3" json:"upstream_bind_config,omitempty"` // contains filtered or unexported fields }
The cluster name and locality is provided to Envoy for the endpoints that it health checks to support statistics reporting, logging and debugging by the Envoy instance (outside of HDS). For maximum usefulness, it should match the same cluster structure as that provided by EDS. [#next-free-field: 6]
func (*ClusterHealthCheck) Descriptor
deprecated
func (*ClusterHealthCheck) Descriptor() ([]byte, []int)
Deprecated: Use ClusterHealthCheck.ProtoReflect.Descriptor instead.
func (*ClusterHealthCheck) GetClusterName ¶
func (x *ClusterHealthCheck) GetClusterName() string
func (*ClusterHealthCheck) GetHealthChecks ¶
func (x *ClusterHealthCheck) GetHealthChecks() []*v3.HealthCheck
func (*ClusterHealthCheck) GetLocalityEndpoints ¶
func (x *ClusterHealthCheck) GetLocalityEndpoints() []*LocalityEndpoints
func (*ClusterHealthCheck) GetTransportSocketMatches ¶
func (x *ClusterHealthCheck) GetTransportSocketMatches() []*v32.Cluster_TransportSocketMatch
func (*ClusterHealthCheck) GetUpstreamBindConfig ¶
func (x *ClusterHealthCheck) GetUpstreamBindConfig() *v3.BindConfig
func (*ClusterHealthCheck) ProtoMessage ¶
func (*ClusterHealthCheck) ProtoMessage()
func (*ClusterHealthCheck) ProtoReflect ¶
func (x *ClusterHealthCheck) ProtoReflect() protoreflect.Message
func (*ClusterHealthCheck) Reset ¶
func (x *ClusterHealthCheck) Reset()
func (*ClusterHealthCheck) String ¶
func (x *ClusterHealthCheck) String() string
type EndpointHealth ¶
type EndpointHealth struct { Endpoint *v31.Endpoint `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"` HealthStatus v3.HealthStatus `` /* 137-byte string literal not displayed */ // contains filtered or unexported fields }
func (*EndpointHealth) Descriptor
deprecated
func (*EndpointHealth) Descriptor() ([]byte, []int)
Deprecated: Use EndpointHealth.ProtoReflect.Descriptor instead.
func (*EndpointHealth) GetEndpoint ¶
func (x *EndpointHealth) GetEndpoint() *v31.Endpoint
func (*EndpointHealth) GetHealthStatus ¶
func (x *EndpointHealth) GetHealthStatus() v3.HealthStatus
func (*EndpointHealth) ProtoMessage ¶
func (*EndpointHealth) ProtoMessage()
func (*EndpointHealth) ProtoReflect ¶
func (x *EndpointHealth) ProtoReflect() protoreflect.Message
func (*EndpointHealth) Reset ¶
func (x *EndpointHealth) Reset()
func (*EndpointHealth) String ¶
func (x *EndpointHealth) String() string
type EndpointHealthResponse ¶
type EndpointHealthResponse struct { // Deprecated - Flat list of endpoint health information. // // Deprecated: Marked as deprecated in envoy/service/health/v3/hds.proto. EndpointsHealth []*EndpointHealth `protobuf:"bytes,1,rep,name=endpoints_health,json=endpointsHealth,proto3" json:"endpoints_health,omitempty"` // Organize Endpoint health information by cluster. ClusterEndpointsHealth []*ClusterEndpointsHealth `` /* 129-byte string literal not displayed */ // contains filtered or unexported fields }
func (*EndpointHealthResponse) Descriptor
deprecated
func (*EndpointHealthResponse) Descriptor() ([]byte, []int)
Deprecated: Use EndpointHealthResponse.ProtoReflect.Descriptor instead.
func (*EndpointHealthResponse) GetClusterEndpointsHealth ¶
func (x *EndpointHealthResponse) GetClusterEndpointsHealth() []*ClusterEndpointsHealth
func (*EndpointHealthResponse) GetEndpointsHealth
deprecated
func (x *EndpointHealthResponse) GetEndpointsHealth() []*EndpointHealth
Deprecated: Marked as deprecated in envoy/service/health/v3/hds.proto.
func (*EndpointHealthResponse) ProtoMessage ¶
func (*EndpointHealthResponse) ProtoMessage()
func (*EndpointHealthResponse) ProtoReflect ¶
func (x *EndpointHealthResponse) ProtoReflect() protoreflect.Message
func (*EndpointHealthResponse) Reset ¶
func (x *EndpointHealthResponse) Reset()
func (*EndpointHealthResponse) String ¶
func (x *EndpointHealthResponse) String() string
type HdsDummy ¶
type HdsDummy struct {
// contains filtered or unexported fields
}
[#not-implemented-hide:] Not configuration. Workaround c++ protobuf issue with importing services: https://github.com/google/protobuf/issues/4221 and protoxform to upgrade the file.
func (*HdsDummy) Descriptor
deprecated
func (*HdsDummy) ProtoMessage ¶
func (*HdsDummy) ProtoMessage()
func (*HdsDummy) ProtoReflect ¶
func (x *HdsDummy) ProtoReflect() protoreflect.Message
type HealthCheckRequest ¶
type HealthCheckRequest struct { Node *v3.Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Capability *Capability `protobuf:"bytes,2,opt,name=capability,proto3" json:"capability,omitempty"` // contains filtered or unexported fields }
func (*HealthCheckRequest) Descriptor
deprecated
func (*HealthCheckRequest) Descriptor() ([]byte, []int)
Deprecated: Use HealthCheckRequest.ProtoReflect.Descriptor instead.
func (*HealthCheckRequest) GetCapability ¶
func (x *HealthCheckRequest) GetCapability() *Capability
func (*HealthCheckRequest) GetNode ¶
func (x *HealthCheckRequest) GetNode() *v3.Node
func (*HealthCheckRequest) ProtoMessage ¶
func (*HealthCheckRequest) ProtoMessage()
func (*HealthCheckRequest) ProtoReflect ¶
func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message
func (*HealthCheckRequest) Reset ¶
func (x *HealthCheckRequest) Reset()
func (*HealthCheckRequest) String ¶
func (x *HealthCheckRequest) String() string
type HealthCheckRequestOrEndpointHealthResponse ¶
type HealthCheckRequestOrEndpointHealthResponse struct { // Types that are assignable to RequestType: // // *HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest // *HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse RequestType isHealthCheckRequestOrEndpointHealthResponse_RequestType `protobuf_oneof:"request_type"` // contains filtered or unexported fields }
func (*HealthCheckRequestOrEndpointHealthResponse) Descriptor
deprecated
func (*HealthCheckRequestOrEndpointHealthResponse) Descriptor() ([]byte, []int)
Deprecated: Use HealthCheckRequestOrEndpointHealthResponse.ProtoReflect.Descriptor instead.
func (*HealthCheckRequestOrEndpointHealthResponse) GetEndpointHealthResponse ¶
func (x *HealthCheckRequestOrEndpointHealthResponse) GetEndpointHealthResponse() *EndpointHealthResponse
func (*HealthCheckRequestOrEndpointHealthResponse) GetHealthCheckRequest ¶
func (x *HealthCheckRequestOrEndpointHealthResponse) GetHealthCheckRequest() *HealthCheckRequest
func (*HealthCheckRequestOrEndpointHealthResponse) GetRequestType ¶
func (m *HealthCheckRequestOrEndpointHealthResponse) GetRequestType() isHealthCheckRequestOrEndpointHealthResponse_RequestType
func (*HealthCheckRequestOrEndpointHealthResponse) ProtoMessage ¶
func (*HealthCheckRequestOrEndpointHealthResponse) ProtoMessage()
func (*HealthCheckRequestOrEndpointHealthResponse) ProtoReflect ¶
func (x *HealthCheckRequestOrEndpointHealthResponse) ProtoReflect() protoreflect.Message
func (*HealthCheckRequestOrEndpointHealthResponse) Reset ¶
func (x *HealthCheckRequestOrEndpointHealthResponse) Reset()
func (*HealthCheckRequestOrEndpointHealthResponse) String ¶
func (x *HealthCheckRequestOrEndpointHealthResponse) String() string
type HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse ¶
type HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse struct {
EndpointHealthResponse *EndpointHealthResponse `protobuf:"bytes,2,opt,name=endpoint_health_response,json=endpointHealthResponse,proto3,oneof"`
}
type HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest ¶
type HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest struct {
HealthCheckRequest *HealthCheckRequest `protobuf:"bytes,1,opt,name=health_check_request,json=healthCheckRequest,proto3,oneof"`
}
type HealthCheckSpecifier ¶
type HealthCheckSpecifier struct { ClusterHealthChecks []*ClusterHealthCheck `protobuf:"bytes,1,rep,name=cluster_health_checks,json=clusterHealthChecks,proto3" json:"cluster_health_checks,omitempty"` // The default is 1 second. Interval *durationpb.Duration `protobuf:"bytes,2,opt,name=interval,proto3" json:"interval,omitempty"` // contains filtered or unexported fields }
func (*HealthCheckSpecifier) Descriptor
deprecated
func (*HealthCheckSpecifier) Descriptor() ([]byte, []int)
Deprecated: Use HealthCheckSpecifier.ProtoReflect.Descriptor instead.
func (*HealthCheckSpecifier) GetClusterHealthChecks ¶
func (x *HealthCheckSpecifier) GetClusterHealthChecks() []*ClusterHealthCheck
func (*HealthCheckSpecifier) GetInterval ¶
func (x *HealthCheckSpecifier) GetInterval() *durationpb.Duration
func (*HealthCheckSpecifier) ProtoMessage ¶
func (*HealthCheckSpecifier) ProtoMessage()
func (*HealthCheckSpecifier) ProtoReflect ¶
func (x *HealthCheckSpecifier) ProtoReflect() protoreflect.Message
func (*HealthCheckSpecifier) Reset ¶
func (x *HealthCheckSpecifier) Reset()
func (*HealthCheckSpecifier) String ¶
func (x *HealthCheckSpecifier) String() string
type HealthDiscoveryServiceClient ¶
type HealthDiscoveryServiceClient interface { // 1. Envoy starts up and if its can_healthcheck option in the static // bootstrap config is enabled, sends HealthCheckRequest to the management // server. It supplies its capabilities (which protocol it can health check // with, what zone it resides in, etc.). // 2. In response to (1), the management server designates this Envoy as a // healthchecker to health check a subset of all upstream hosts for a given // cluster (for example upstream Host 1 and Host 2). It streams // HealthCheckSpecifier messages with cluster related configuration for all // clusters this Envoy is designated to health check. Subsequent // HealthCheckSpecifier message will be sent on changes to: // a. Endpoints to health checks // b. Per cluster configuration change // 3. Envoy creates a health probe based on the HealthCheck config and sends // it to endpoint(ip:port) of Host 1 and 2. Based on the HealthCheck // configuration Envoy waits upon the arrival of the probe response and // looks at the content of the response to decide whether the endpoint is // healthy or not. If a response hasn't been received within the timeout // interval, the endpoint health status is considered TIMEOUT. // 4. Envoy reports results back in an EndpointHealthResponse message. // Envoy streams responses as often as the interval configured by the // management server in HealthCheckSpecifier. // 5. The management Server collects health statuses for all endpoints in the // cluster (for all clusters) and uses this information to construct // EndpointDiscoveryResponse messages. // 6. Once Envoy has a list of upstream endpoints to send traffic to, it load // balances traffic to them without additional health checking. It may // use inline healthcheck (i.e. consider endpoint UNHEALTHY if connection // failed to a particular endpoint to account for health status propagation // delay between HDS and EDS). // // By default, can_healthcheck is true. If can_healthcheck is false, Cluster // configuration may not contain HealthCheck message. // TODO(htuch): How is can_healthcheck communicated to CDS to ensure the above // invariant? // TODO(htuch): Add @amb67's diagram. StreamHealthCheck(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[HealthCheckRequestOrEndpointHealthResponse, HealthCheckSpecifier], error) // TODO(htuch): Unlike the gRPC version, there is no stream-based binding of // request/response. Should we add an identifier to the HealthCheckSpecifier // to bind with the response? FetchHealthCheck(ctx context.Context, in *HealthCheckRequestOrEndpointHealthResponse, opts ...grpc.CallOption) (*HealthCheckSpecifier, error) }
HealthDiscoveryServiceClient is the client API for HealthDiscoveryService service.
For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
HDS is Health Discovery Service. It compliments Envoy’s health checking service by designating this Envoy to be a healthchecker for a subset of hosts in the cluster. The status of these health checks will be reported to the management server, where it can be aggregated etc and redistributed back to Envoy through EDS.
func NewHealthDiscoveryServiceClient ¶
func NewHealthDiscoveryServiceClient(cc grpc.ClientConnInterface) HealthDiscoveryServiceClient
type HealthDiscoveryServiceServer ¶
type HealthDiscoveryServiceServer interface { // 1. Envoy starts up and if its can_healthcheck option in the static // bootstrap config is enabled, sends HealthCheckRequest to the management // server. It supplies its capabilities (which protocol it can health check // with, what zone it resides in, etc.). // 2. In response to (1), the management server designates this Envoy as a // healthchecker to health check a subset of all upstream hosts for a given // cluster (for example upstream Host 1 and Host 2). It streams // HealthCheckSpecifier messages with cluster related configuration for all // clusters this Envoy is designated to health check. Subsequent // HealthCheckSpecifier message will be sent on changes to: // a. Endpoints to health checks // b. Per cluster configuration change // 3. Envoy creates a health probe based on the HealthCheck config and sends // it to endpoint(ip:port) of Host 1 and 2. Based on the HealthCheck // configuration Envoy waits upon the arrival of the probe response and // looks at the content of the response to decide whether the endpoint is // healthy or not. If a response hasn't been received within the timeout // interval, the endpoint health status is considered TIMEOUT. // 4. Envoy reports results back in an EndpointHealthResponse message. // Envoy streams responses as often as the interval configured by the // management server in HealthCheckSpecifier. // 5. The management Server collects health statuses for all endpoints in the // cluster (for all clusters) and uses this information to construct // EndpointDiscoveryResponse messages. // 6. Once Envoy has a list of upstream endpoints to send traffic to, it load // balances traffic to them without additional health checking. It may // use inline healthcheck (i.e. consider endpoint UNHEALTHY if connection // failed to a particular endpoint to account for health status propagation // delay between HDS and EDS). // // By default, can_healthcheck is true. If can_healthcheck is false, Cluster // configuration may not contain HealthCheck message. // TODO(htuch): How is can_healthcheck communicated to CDS to ensure the above // invariant? // TODO(htuch): Add @amb67's diagram. StreamHealthCheck(grpc.BidiStreamingServer[HealthCheckRequestOrEndpointHealthResponse, HealthCheckSpecifier]) error // TODO(htuch): Unlike the gRPC version, there is no stream-based binding of // request/response. Should we add an identifier to the HealthCheckSpecifier // to bind with the response? FetchHealthCheck(context.Context, *HealthCheckRequestOrEndpointHealthResponse) (*HealthCheckSpecifier, error) // contains filtered or unexported methods }
HealthDiscoveryServiceServer is the server API for HealthDiscoveryService service. All implementations must embed UnimplementedHealthDiscoveryServiceServer for forward compatibility.
HDS is Health Discovery Service. It compliments Envoy’s health checking service by designating this Envoy to be a healthchecker for a subset of hosts in the cluster. The status of these health checks will be reported to the management server, where it can be aggregated etc and redistributed back to Envoy through EDS.
type HealthDiscoveryService_StreamHealthCheckClient ¶
type HealthDiscoveryService_StreamHealthCheckClient = grpc.BidiStreamingClient[HealthCheckRequestOrEndpointHealthResponse, HealthCheckSpecifier]
This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type HealthDiscoveryService_StreamHealthCheckServer ¶
type HealthDiscoveryService_StreamHealthCheckServer = grpc.BidiStreamingServer[HealthCheckRequestOrEndpointHealthResponse, HealthCheckSpecifier]
This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type LocalityEndpoints ¶
type LocalityEndpoints struct { Locality *v3.Locality `protobuf:"bytes,1,opt,name=locality,proto3" json:"locality,omitempty"` Endpoints []*v31.Endpoint `protobuf:"bytes,2,rep,name=endpoints,proto3" json:"endpoints,omitempty"` // contains filtered or unexported fields }
func (*LocalityEndpoints) Descriptor
deprecated
func (*LocalityEndpoints) Descriptor() ([]byte, []int)
Deprecated: Use LocalityEndpoints.ProtoReflect.Descriptor instead.
func (*LocalityEndpoints) GetEndpoints ¶
func (x *LocalityEndpoints) GetEndpoints() []*v31.Endpoint
func (*LocalityEndpoints) GetLocality ¶
func (x *LocalityEndpoints) GetLocality() *v3.Locality
func (*LocalityEndpoints) ProtoMessage ¶
func (*LocalityEndpoints) ProtoMessage()
func (*LocalityEndpoints) ProtoReflect ¶
func (x *LocalityEndpoints) ProtoReflect() protoreflect.Message
func (*LocalityEndpoints) Reset ¶
func (x *LocalityEndpoints) Reset()
func (*LocalityEndpoints) String ¶
func (x *LocalityEndpoints) String() string
type LocalityEndpointsHealth ¶
type LocalityEndpointsHealth struct { Locality *v3.Locality `protobuf:"bytes,1,opt,name=locality,proto3" json:"locality,omitempty"` EndpointsHealth []*EndpointHealth `protobuf:"bytes,2,rep,name=endpoints_health,json=endpointsHealth,proto3" json:"endpoints_health,omitempty"` // contains filtered or unexported fields }
Group endpoint health by locality under each cluster.
func (*LocalityEndpointsHealth) Descriptor
deprecated
func (*LocalityEndpointsHealth) Descriptor() ([]byte, []int)
Deprecated: Use LocalityEndpointsHealth.ProtoReflect.Descriptor instead.
func (*LocalityEndpointsHealth) GetEndpointsHealth ¶
func (x *LocalityEndpointsHealth) GetEndpointsHealth() []*EndpointHealth
func (*LocalityEndpointsHealth) GetLocality ¶
func (x *LocalityEndpointsHealth) GetLocality() *v3.Locality
func (*LocalityEndpointsHealth) ProtoMessage ¶
func (*LocalityEndpointsHealth) ProtoMessage()
func (*LocalityEndpointsHealth) ProtoReflect ¶
func (x *LocalityEndpointsHealth) ProtoReflect() protoreflect.Message
func (*LocalityEndpointsHealth) Reset ¶
func (x *LocalityEndpointsHealth) Reset()
func (*LocalityEndpointsHealth) String ¶
func (x *LocalityEndpointsHealth) String() string
type UnimplementedHealthDiscoveryServiceServer ¶
type UnimplementedHealthDiscoveryServiceServer struct{}
UnimplementedHealthDiscoveryServiceServer must be embedded to have forward compatible implementations.
NOTE: this should be embedded by value instead of pointer to avoid a nil pointer dereference when methods are called.
func (UnimplementedHealthDiscoveryServiceServer) FetchHealthCheck ¶
func (UnimplementedHealthDiscoveryServiceServer) FetchHealthCheck(context.Context, *HealthCheckRequestOrEndpointHealthResponse) (*HealthCheckSpecifier, error)
func (UnimplementedHealthDiscoveryServiceServer) StreamHealthCheck ¶
func (UnimplementedHealthDiscoveryServiceServer) StreamHealthCheck(grpc.BidiStreamingServer[HealthCheckRequestOrEndpointHealthResponse, HealthCheckSpecifier]) error
type UnsafeHealthDiscoveryServiceServer ¶
type UnsafeHealthDiscoveryServiceServer interface {
// contains filtered or unexported methods
}
UnsafeHealthDiscoveryServiceServer may be embedded to opt out of forward compatibility for this service. Use of this interface is not recommended, as added methods to HealthDiscoveryServiceServer will result in compilation errors.