API Version
kubelb.k8c.io/v1alpha1
Spec Fields
Sets of addresses and ports that comprise an exposed user service on a cluster. The expanded set of endpoints is the Cartesian product of Addresses x Ports.Minimum items: 1
Name of the endpoint group.
IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize.Minimum items: 1. Ignored if
addressesReference is set.The IP of the endpoint. This can be an IPv4 or IPv6 address. The IP address must not be IP CIDR, Loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast (224.0.0.0/24) addresses.
The hostname of this endpoint.
Reference to an Addresses object that contains the IP addresses. If this field is set, the
addresses field will be ignored.Port numbers available on the related IP addresses. This field is ignored for routes that are using kubernetes resources as the source.Minimum items: 1
The name of this port. This must match the ‘name’ field in the corresponding ServicePort. Must be a DNS_LABEL. Optional only if one port is defined.
The port number of the endpoint.
The IP protocol for this port. Defaults to “TCP”.Allowed values:
TCP, UDPThe list of ports that are exposed by the load balancer service. Only needed for Layer 4 load balancing.
The name of this port within the service. This must be a DNS_LABEL. All ports within a Spec must have unique names. When considering the endpoints for a Service, this must match the ‘name’ field in the EndpointPort. Optional if only one ServicePort is defined on this service.
The IP protocol for this port. Defaults to “TCP”.Allowed values:
TCP, UDPThe port that will be exposed by the LoadBalancer.
Hostname is the domain name at which the load balancer service will be accessible. When hostname is set, KubeLB will create a route (ingress or httproute) for the service, and expose it with TLS on the given hostname. Currently, only HTTP protocol is supported.
Type determines how the Service is exposed. Valid options are
ExternalName, ClusterIP, NodePort, and LoadBalancer.ExternalNamemaps to the specified externalNameClusterIPallocates a cluster-internal IP address for load-balancing to endpointsNodePortbuilds on ClusterIP and allocates a port on every node which routes to the clusterIPLoadBalancerbuilds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the clusterIP
Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. “Local” preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. “Cluster” obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading.
Status Fields
Contains the current status of the load-balancer, if one is present.
Ingress is a list containing ingress points for the load-balancer.
Contains the current status of the LB service.
List of service ports.
Contains the status for hostname resources.
Hostname of the load-balancer.
True if certificate is created for the hostname.
True if DNS record is created for the hostname.
Example
Layer 4 LoadBalancer
LoadBalancer with Hostname
LoadBalancer with AddressesReference
Annotations
Controls the annotations propagation. It is possible to provide an optional list of comma-separated values after ’=’. Annotations not represented by any key or not matching the optional values are dropped.To configure multiple different annotations, you can provide unique suffixes, e.g.,
kubelb.k8c.io/propagate-annotation-1.Labels
Name of the original resource in the tenant cluster.
Namespace of the original resource in the tenant cluster.
