destination.proto

Package : discovery.mesh.gloo.solo.io

Top

destination.proto

Table of Contents

DestinationSpec

The Destination is an abstraction for any entity capable of receiving networking requests.

Field Type Label Description
kubeService discovery.mesh.gloo.solo.io.DestinationSpec.KubeService KubeService is a kube-native Destination representing a kubernetes service running inside of a kubernetes cluster.
externalService discovery.mesh.gloo.solo.io.DestinationSpec.ExternalService ExternalService is a Destination representing a service external to the Mesh. It can be used to expose a given hostname or IP address to all clusters in the Virtual Mesh.
mesh core.skv2.solo.io.ObjectRef The mesh that controls this Destination. Can be omitted if the Destination isn't associated with any particular mesh, eg for External Services.

DestinationSpec.ExternalService

Describes a service external to the mesh

Field Type Label Description
name string The name of the service
hosts []string repeated The list of hosts which will resolve to this Destination for services within the Virtual Mesh.
addresses []string repeated The List of addresses which will resolve to this service for services within the Virtual Mesh.
ports []discovery.mesh.gloo.solo.io.DestinationSpec.ExternalService.ServicePort repeated The associated ports of the external service
endpoints []discovery.mesh.gloo.solo.io.DestinationSpec.ExternalService.ExternalEndpoint repeated List of endpoints, to which any requests to this Destionation will be load balanced across.

DestinationSpec.ExternalService.ExternalEndpoint

ExternalEndpoint represents the address/port(s) of the external service which will receive requests sent to this Destination.

Field Type Label Description
address string The address of the external service. Can be a domain or an IP.
ports []discovery.mesh.gloo.solo.io.DestinationSpec.ExternalService.ExternalEndpoint.PortsEntry repeated The port(s) of the external endpoint. Eg: https: 443

DestinationSpec.ExternalService.ExternalEndpoint.PortsEntry

Field Type Label Description
key string
value uint32

DestinationSpec.ExternalService.ServicePort

ServicePort describes a port accessible on this Destination

Field Type Label Description
number uint32 The port number. Must be a valid, non-negative integer port number.
name string A label for the port, eg “http”
protocol string The protocol used in communications with this Destination MUST BE one of HTTP

DestinationSpec.KubeService

Describes a Kubernetes service.

Field Type Label Description
ref core.skv2.solo.io.ClusterObjectRef Reference to the Kubernetes service object.
workloadSelectorLabels []discovery.mesh.gloo.solo.io.DestinationSpec.KubeService.WorkloadSelectorLabelsEntry repeated Selectors for the set of pods targeted by the Kubernetes service.
labels []discovery.mesh.gloo.solo.io.DestinationSpec.KubeService.LabelsEntry repeated Labels on the Kubernetes service.
ports []discovery.mesh.gloo.solo.io.DestinationSpec.KubeService.KubeServicePort repeated The ports exposed by the underlying service.
subsets []discovery.mesh.gloo.solo.io.DestinationSpec.KubeService.SubsetsEntry repeated Subsets for routing, based on labels.
region string The region the service resides in, typically representing a large geographic area.
endpointSubsets []discovery.mesh.gloo.solo.io.DestinationSpec.KubeService.EndpointsSubset repeated Each endpoints subset is a group of endpoints arranged in terms of IP/port pairs. This API mirrors the Kubernetes Endpoints API.
externalAddresses []discovery.mesh.gloo.solo.io.DestinationSpec.KubeService.ExternalAddress repeated Describes the address data for Kubernetes Services exposed to external traffic (i.e. for non ClusterIP type Services).
serviceType discovery.mesh.gloo.solo.io.DestinationSpec.KubeService.ServiceType Describes the Kubernetes Service type.

DestinationSpec.KubeService.EndpointPort

Describes the endpoints's ports. See here for more information.

Field Type Label Description
port uint32 Port on which the endpoints can be reached
name string Name of the port
protocol string Protocol on which this port serves traffic (HTTP, TCP, UDP, etc…)
appProtocol string Available in Kubernetes 1.18+, describes the application protocol.

DestinationSpec.KubeService.EndpointsSubset

A series of IP addresses and their associated ports. The list of IP and port pairs is the cartesian product of the endpoint and port lists.

Field Type Label Description
endpoints []discovery.mesh.gloo.solo.io.DestinationSpec.KubeService.EndpointsSubset.Endpoint repeated
ports []discovery.mesh.gloo.solo.io.DestinationSpec.KubeService.EndpointPort repeated

DestinationSpec.KubeService.EndpointsSubset.Endpoint

An endpoint exposed by this service.

Field Type Label Description
ipAddress string
labels []discovery.mesh.gloo.solo.io.DestinationSpec.KubeService.EndpointsSubset.Endpoint.LabelsEntry repeated Labels which belong to this IP. These are taken from the backing workload instance.
subLocality discovery.mesh.gloo.solo.io.DestinationSpec.KubeService.EndpointsSubset.Endpoint.SubLocality The zone and sub-zone (if controlled by Istio) of the endpoint.

DestinationSpec.KubeService.EndpointsSubset.Endpoint.LabelsEntry

Field Type Label Description
key string
value string

DestinationSpec.KubeService.EndpointsSubset.Endpoint.SubLocality

A subdivision of a region representing a set of physically colocated compute resources.

Field Type Label Description
zone string A subdivision of a geographical region, see here for more information.
subZone string A subdivision of zone. Only applies to Istio-controlled Destinations, see here for more information.

DestinationSpec.KubeService.ExternalAddress

Describes the address data for Kubernetes Services exposed to external traffic (i.e. for non ClusterIP type Services).

Field Type Label Description
dnsName string An externally accessible DNS name.
ip string An externally accessible IP address.

DestinationSpec.KubeService.KubeServicePort

Describes the service's ports. See here for more information.

Field Type Label Description
port uint32 External-facing port for this Kubernetes service (not the service's target port on the targeted pods).
name string Name of the port
protocol string Protocol on which this port serves traffic (HTTP, TCP, UDP, etc…)
appProtocol string Available in Kubernetes 1.18+, describes the application protocol.
targetPortName string Name of the target port
targetPortNumber uint32 Number of the target port
nodePort uint32 Populated for NodePort or LoadBalancer Services.

DestinationSpec.KubeService.LabelsEntry

Field Type Label Description
key string
value string

DestinationSpec.KubeService.Subset

Subsets for routing, based on labels.

Field Type Label Description
values []string repeated

DestinationSpec.KubeService.SubsetsEntry

Field Type Label Description
key string
value discovery.mesh.gloo.solo.io.DestinationSpec.KubeService.Subset

DestinationSpec.KubeService.WorkloadSelectorLabelsEntry

Field Type Label Description
key string
value string

DestinationStatus

Field Type Label Description
observedGeneration int64 The most recent generation observed in the the TrafficPolicy metadata. If the observedGeneration does not match metadata.generation, Gloo Mesh has not processed the most recent version of this resource.
appliedTrafficPolicies []networking.mesh.gloo.solo.io.AppliedTrafficPolicy repeated The set of TrafficPolicies that have been applied to this Destination. {{/* Note: validation of this field disabled because it slows down cue tremendously*/}}
appliedAccessPolicies []discovery.mesh.gloo.solo.io.DestinationStatus.AppliedAccessPolicy repeated The set of AccessPolicies that have been applied to this Destination.
localFqdn string The fully qualified domain name for requests originating from a source coloated with this Destination. For Kubernetes services, “colocated” means within the same Kubernetes cluster.
appliedFederation discovery.mesh.gloo.solo.io.DestinationStatus.AppliedFederation Federation metadata. Only populated if this Destination is federated through a VirtualMesh.
requiredSubsets []discovery.mesh.gloo.solo.io.RequiredSubsets repeated The set of TrafficPolicy traffic shifts that reference subsets on this Destination.

DestinationStatus.AppliedAccessPolicy

Describes an AccessPolicy that applies to this Destination. If an existing AccessPolicy becomes invalid, the last valid applied policy will be used.

Field Type Label Description
ref core.skv2.solo.io.ObjectRef Reference to the AccessPolicy object.
observedGeneration int64 The observed generation of the accepted AccessPolicy.
spec networking.mesh.gloo.solo.io.AccessPolicySpec The spec of the last known valid AccessPolicy.

DestinationStatus.AppliedFederation

Describes the federation configuration applied to this Destination through a VirtualMesh. Federation allows access to the Destination from other meshes/clusters.

Field Type Label Description
federatedHostname string For any Workload that this Destination has been federated to (i.e., any Workload controlled by a Mesh whose reference appears in federated_to_meshes), that Workload will be able to reach this Destination using this DNS name. For Kubernetes Destinations this includes Workloads on clusters other than the one hosting this Destination.
federatedToMeshes []core.skv2.solo.io.ObjectRef repeated The list of Meshes which are able to resolve this Destination's federated_hostname.
flatNetwork bool Whether the Destination has been federated to the given meshes using a VirtualMesh where Federation.FlatNetwork is true.
virtualMeshRef core.skv2.solo.io.ObjectRef Reference to the VirtualMesh object.
tcpKeepalive common.mesh.gloo.solo.io.TCPKeepalive Specify a keepalive rule for all requests made within the VirtualMesh which cross clusters within that VirtualMesh, as well as any requests to externalService type destinations.

RequiredSubsets

Describes a TrafficPolicy that references subsets on this Destination in a traffic shift. Note: this is an Istio-specific feature.

Field Type Label Description
trafficPolicyRef core.skv2.solo.io.ObjectRef Reference to the TrafficPolicy object.
observedGeneration int64 The observed generation of the TrafficPolicy.
trafficShift networking.mesh.gloo.solo.io.TrafficPolicySpec.Policy.MultiDestination The applied traffic shift.

DestinationSpec.KubeService.ServiceType

Describes the Kubernetes Service type.

Name Number Description
CLUSTER_IP 0 A ClusterIP Service.
NODE_PORT 1 A NodePort Service.
LOAD_BALANCER 2 A LoadBalancer Service.
EXTERNAL_NAME 3 An ExternalName Service.