KubeLB Enterprise Edition CRD References

Enterprise Edition

Packages

kubelb.k8c.io/v1alpha1

Package v1alpha1 contains API Schema definitions for the kubelb.k8c.io v1alpha1 API group

Resource Types

Addresses

Addresses is the Schema for the addresses API

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringkubelb.k8c.io/v1alpha1
kind stringAddresses
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec AddressesSpec
status AddressesStatus

AddressesList

AddressesList contains a list of Addresses

FieldDescriptionDefaultValidation
apiVersion stringkubelb.k8c.io/v1alpha1
kind stringAddressesList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.
items Addresses array

AddressesSpec

AddressesSpec defines the desired state of Addresses

Appears in:

FieldDescriptionDefaultValidation
addresses EndpointAddress arrayAddresses contains a list of addresses.MinItems: 1

AddressesStatus

AddressesStatus defines the observed state of Addresses

Appears in:

AnnotationSettings

Appears in:

FieldDescriptionDefaultValidation
propagatedAnnotations map[string]stringPropagatedAnnotations defines the list of annotations(key-value pairs) that will be propagated to the LoadBalancer service. Keep the value field empty in the key-value pair to allow any value.This will have a higher precedence than the annotations specified at the Config level.
propagateAllAnnotations booleanPropagateAllAnnotations defines whether all annotations will be propagated to the LoadBalancer service. If set to true, PropagatedAnnotations will be ignored.This will have a higher precedence than the value specified at the Config level.

CertificatesSettings

CertificatesSettings defines the settings for the certificates.

Appears in:

FieldDescriptionDefaultValidation
disable booleanDisable is a flag that can be used to disable certificate automation for a tenant.
defaultClusterIssuer stringDefaultClusterIssuer is the Cluster Issuer to use for the certificates by default. This is applied when the cluster issuer is not specified in the annotations on the resource itself.
allowedDomains string arrayAllowedDomains is a list of allowed domains for automated Certificate management. Has a higher precedence than the value specified in the Config.If empty, the value specified in tenant.spec.allowedDomains will be used.Examples:- [".example.com"] -> this allows subdomains at the root level such as example.com and test.example.com but won’t allow domains at one level above like test.test.example.com- [".example.com"] -> this allows all subdomains of example.com such as test.dns.example.com and dns.example.com- [“example.com”] -> this allows only example.com- [""] or [""] -> this allows all domainsNote: “**” was added as a special case to allow any levels of subdomains that come before it. “*” works for only 1 level.

Config

Config is the object that represents the Config for the KubeLB management controller.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringkubelb.k8c.io/v1alpha1
kind stringConfig
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec ConfigSpec

ConfigCertificatesSettings

ConfigCertificatesSettings defines the global settings for the certificates.

Appears in:

FieldDescriptionDefaultValidation
disable booleanDisable is a flag that can be used to disable certificate automation globally for all the tenants.
defaultClusterIssuer stringDefaultClusterIssuer is the Cluster Issuer to use for the certificates by default. This is applied when the cluster issuer is not specified in the annotations on the resource itself.

ConfigDNSSettings

ConfigDNSSettings defines the global settings for the DNS.

Appears in:

FieldDescriptionDefaultValidation
disable booleanDisable is a flag that can be used to disable DNS automation globally for all the tenants.

ConfigList

ConfigList contains a list of Config

FieldDescriptionDefaultValidation
apiVersion stringkubelb.k8c.io/v1alpha1
kind stringConfigList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.
items Config array

ConfigSpec

ConfigSpec defines the desired state of the Config

Appears in:

FieldDescriptionDefaultValidation
propagatedAnnotations map[string]stringPropagatedAnnotations defines the list of annotations(key-value pairs) that will be propagated to the LoadBalancer service. Keep the value field empty in the key-value pair to allow any value.This will have a higher precedence than the annotations specified at the Config level.
propagateAllAnnotations booleanPropagateAllAnnotations defines whether all annotations will be propagated to the LoadBalancer service. If set to true, PropagatedAnnotations will be ignored.This will have a higher precedence than the value specified at the Config level.
envoyProxy EnvoyProxyEnvoyProxy defines the desired state of the Envoy Proxy
loadBalancer LoadBalancerSettings
ingress IngressSettings
gatewayAPI GatewayAPISettings
dns ConfigDNSSettings
certificates ConfigCertificatesSettings

DNSSettings

DNSSettings defines the settings for the DNS.

Appears in:

FieldDescriptionDefaultValidation
disable booleanDisable is a flag that can be used to disable DNS automation for a tenant.
allowedDomains string arrayAllowedDomains is a list of allowed domains for automated DNS management. Has a higher precedence than the value specified in the Config.If empty, the value specified in tenant.spec.allowedDomains will be used.Examples:- [".example.com"] -> this allows subdomains at the root level such as example.com and test.example.com but won’t allow domains at one level above like test.test.example.com- [".example.com"] -> this allows all subdomains of example.com such as test.dns.example.com and dns.example.com- [“example.com”] -> this allows only example.com- [""] or [""] -> this allows all domainsNote: “**” was added as a special case to allow any levels of subdomains that come before it. “*” works for only 1 level.

EndpointAddress

EndpointAddress is a tuple that describes single IP address.

Appears in:

FieldDescriptionDefaultValidation
ip stringThe IP of this endpoint.May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16),or link-local multicast ((224.0.0.0/24).MinLength: 7
hostname stringThe Hostname of this endpoint

EndpointPort

EndpointPort is a tuple that describes a single port.

Appears in:

FieldDescriptionDefaultValidation
name stringThe name of this port. This must match the ’name’ field in thecorresponding ServicePort.Must be a DNS_LABEL.Optional only if one port is defined.
port integerThe port number of the endpoint.
protocol ProtocolThe IP protocol for this port. Defaults to “TCP”.Enum: [TCP UDP]

EnvoyProxy

EnvoyProxy defines the desired state of the EnvoyProxy

Appears in:

FieldDescriptionDefaultValidation
topology EnvoyProxyTopologyTopology defines the deployment topology for Envoy Proxy. Valid values are: shared and global.DEPRECATION NOTICE: The value “dedicated” is deprecated and will be removed in a future release. Dedicated topology will now default to shared topology.sharedEnum: [shared dedicated global]
useDaemonset booleanUseDaemonset defines whether Envoy Proxy will run as daemonset. By default, Envoy Proxy will run as deployment.If set to true, Replicas will be ignored.
replicas integerReplicas defines the number of replicas for Envoy Proxy. This field is ignored if UseDaemonset is set to true.3Minimum: 1
singlePodPerNode booleanSinglePodPerNode defines whether Envoy Proxy pods will be spread across nodes. This ensures that multiple replicas are not running on the same node.
nodeSelector object (keys:string, values:string)NodeSelector is used to select nodes to run Envoy Proxy. If specified, the node must have all the indicated labels.
tolerations Toleration arrayTolerations is used to schedule Envoy Proxy pods on nodes with matching taints.
resources ResourceRequirementsResources defines the resource requirements for Envoy Proxy.
affinity AffinityAffinity is used to schedule Envoy Proxy pods on nodes with matching affinity.

EnvoyProxyTopology

Underlying type: string

Appears in:

FieldDescription
shared
dedicated
global

GatewayAPISettings

GatewayAPISettings defines the settings for the gateway API.

Appears in:

FieldDescriptionDefaultValidation
class stringClass is the class of the gateway API to use. This can be used to specify a specific gateway API implementation.This has higher precedence than the value specified in the Config.
disable booleanDisable is a flag that can be used to disable Gateway API for a tenant.
gateway GatewaySettings
disableHTTPRoute boolean
disableGRPCRoute boolean
disableTCPRoute boolean
disableUDPRoute boolean
disableTLSRoute boolean

GatewayAPIsSettings

Appears in:

FieldDescriptionDefaultValidation
disableHTTPRoute boolean
disableGRPCRoute boolean
disableTCPRoute boolean
disableUDPRoute boolean
disableTLSRoute boolean

GatewaySettings

GatewaySettings defines the settings for the gateway resource.

Appears in:

FieldDescriptionDefaultValidation
limit integerLimit is the maximum number of gateways to create.If a lower limit is set than the number of reources that exist, the limit will be disallow creation of new resources but will not delete existing resources. The reason behind thisis that it is not possible for KubeLB to know which resources are safe to remove.

IngressSettings

IngressSettings defines the settings for the ingress.

Appears in:

FieldDescriptionDefaultValidation
class stringClass is the class of the ingress to use.This has higher precedence than the value specified in the Config.
disable booleanDisable is a flag that can be used to disable Ingress for a tenant.

KubernetesSource

Appears in:

FieldDescriptionDefaultValidation
resource UnstructuredEmbeddedResource: {}
services UpstreamService arrayServices contains the list of services that are used as the source for the Route.

LoadBalancer

LoadBalancer is the Schema for the loadbalancers API

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringkubelb.k8c.io/v1alpha1
kind stringLoadBalancer
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec LoadBalancerSpec
status LoadBalancerStatus

LoadBalancerEndpoints

LoadBalancerEndpoints is a group of addresses with a common set of ports. The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given:

{ Addresses: [{“ip”: “10.10.1.1”}, {“ip”: “10.10.2.2”}], Ports: [{“name”: “a”, “port”: 8675}, {“name”: “b”, “port”: 309}] }

The resulting set of endpoints can be viewed as:

a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], b: [ 10.10.1.1:309, 10.10.2.2:309 ]

Appears in:

FieldDescriptionDefaultValidation
name stringName is the name of the endpoints.
addresses EndpointAddress arrayIP addresses which offer the related ports that are marked as ready. These endpointsshould be considered safe for load balancers and clients to utilize.MinItems: 1
addressesReference ObjectReferenceAddressesReference is a reference to the Addresses object that contains the IP addresses.If this field is set, the Addresses field will be ignored.
ports EndpointPort arrayPort numbers available on the related IP addresses.This field is ignored for routes that are using kubernetes resources as the source.MinItems: 1

LoadBalancerList

LoadBalancerList contains a list of LoadBalancer

FieldDescriptionDefaultValidation
apiVersion stringkubelb.k8c.io/v1alpha1
kind stringLoadBalancerList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.
items LoadBalancer array

LoadBalancerPort

LoadBalancerPort contains information on service’s port.

Appears in:

FieldDescriptionDefaultValidation
name stringThe name of this port within the service. This must be a DNS_LABEL.All ports within a Spec must have unique names. When consideringthe endpoints for a Service, this must match the ’name’ field in theEndpointPort.Optional if only one ServicePort is defined on this service.
protocol ProtocolThe IP protocol for this port. Defaults to “TCP”.Enum: [TCP UDP]
port integerThe port that will be exposed by the LoadBalancer.

LoadBalancerSettings

LoadBalancerSettings defines the settings for the load balancers.

Appears in:

FieldDescriptionDefaultValidation
class stringClass is the class of the load balancer to use.This has higher precedence than the value specified in the Config.
limit integerLimit is the maximum number of load balancers to create.If a lower limit is set than the number of reources that exist, the limit will be disallow creation of new resources but will not delete existing resources. The reason behind thisis that it is not possible for KubeLB to know which resources are safe to remove.
disable booleanDisable is a flag that can be used to disable L4 load balancing for a tenant.

LoadBalancerSpec

LoadBalancerSpec defines the desired state of LoadBalancer

Appears in:

FieldDescriptionDefaultValidation
endpoints LoadBalancerEndpoints arraySets of addresses and ports that comprise an exposed user service on a cluster.MinItems: 1
ports LoadBalancerPort arrayThe list of ports that are exposed by the load balancer service.only needed for layer 4
type ServiceTypetype determines how the Service is exposed. Defaults to ClusterIP. Validoptions are ExternalName, ClusterIP, NodePort, and LoadBalancer.“ExternalName” maps to the specified externalName.“ClusterIP” allocates a cluster-internal IP address for load-balancing toendpoints. Endpoints are determined by the selector or if that is notspecified, by manual construction of an Endpoints object. If clusterIP is“None”, no virtual IP is allocated and the endpoints are published as aset of endpoints rather than a stable IP.“NodePort” builds on ClusterIP and allocates a port on every node whichroutes to the clusterIP.“LoadBalancer” builds on NodePort and creates anexternal load-balancer (if supported in the current cloud) which routesto the clusterIP.More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-typesClusterIP

LoadBalancerStatus

LoadBalancerStatus defines the observed state of LoadBalancer

Appears in:

FieldDescriptionDefaultValidation
loadBalancer LoadBalancerStatusLoadBalancer contains the current status of the load-balancer,if one is present.
service ServiceStatusService contains the current status of the LB service.

ResourceState

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringAPIVersion is the API version of the resource.
name stringName is the name of the resource.
namespace stringNamespace is the namespace of the resource.
generatedName stringGeneratedName is the generated name of the resource.
status RawExtensionStatus is the actual status of the resource.
conditions Condition array

Route

Route is the object that represents a route in the cluster.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringkubelb.k8c.io/v1alpha1
kind stringRoute
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec RouteSpec
status RouteStatus

RouteList

RouteList contains a list of Routes

FieldDescriptionDefaultValidation
apiVersion stringkubelb.k8c.io/v1alpha1
kind stringRouteList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.
items Route array

RouteResourcesStatus

Appears in:

FieldDescriptionDefaultValidation
source string
services object (keys:string, values:RouteServiceStatus)
route ResourceState

RouteServiceStatus

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringAPIVersion is the API version of the resource.
name stringName is the name of the resource.
namespace stringNamespace is the namespace of the resource.
generatedName stringGeneratedName is the generated name of the resource.
status RawExtensionStatus is the actual status of the resource.
conditions Condition array
ports ServicePort array

RouteSource

Appears in:

FieldDescriptionDefaultValidation
kubernetes KubernetesSourceKubernetes contains the information about the Kubernetes source.This field is automatically populated by the KubeLB CCM and in most cases, users should not set this field manually.

RouteSpec

RouteSpec defines the desired state of the Route.

Appears in:

FieldDescriptionDefaultValidation
endpoints LoadBalancerEndpoints arraySets of addresses and ports that comprise an exposed user service on a cluster.MinItems: 1
source RouteSourceSource contains the information about the source of the route. This is used when the route is created from external sources.

RouteStatus

RouteStatus defines the observed state of the Route.

Appears in:

FieldDescriptionDefaultValidation
resources RouteResourcesStatusResources contains the list of resources that are created/processed as a result of the Route.

ServicePort

ServicePort contains information on service’s port.

Appears in:

FieldDescriptionDefaultValidation
name stringThe name of this port within the service. This must be a DNS_LABEL.All ports within a ServiceSpec must have unique names. When consideringthe endpoints for a Service, this must match the ’name’ field in theEndpointPort.Optional if only one ServicePort is defined on this service.
protocol ProtocolThe IP protocol for this port. Supports “TCP”, “UDP”, and “SCTP”.Default is TCP.
appProtocol stringThe application protocol for this port.This is used as a hint for implementations to offer richer behavior for protocols that they understand.This field follows standard Kubernetes label syntax.Valid values are either:Un-prefixed protocol names - reserved for IANA standard service names (as perRFC-6335 and https://www.iana.org/assignments/service-names). Kubernetes-defined prefixed names: ‘kubernetes.io/h2c’ - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- ‘kubernetes.io/ws’ - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 ‘kubernetes.io/wss’ - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 Other protocols should use implementation-defined prefixed names such asmycompany.com/my-custom-protocol.
port integerThe port that will be exposed by this service.
targetPort IntOrStringNumber or name of the port to access on the pods targeted by the service.Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.If this is a string, it will be looked up as a named port in thetarget Pod’s container ports. If this is not specified, the valueof the ‘port’ field is used (an identity map).This field is ignored for services with clusterIP=None, and should beomitted or set equal to the ‘port’ field.More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
nodePort integerThe port on each node on which this service is exposed when type isNodePort or LoadBalancer. Usually assigned by the system. If a value isspecified, in-range, and not in use it will be used, otherwise theoperation will fail. If not specified, a port will be allocated if thisService requires one. If this field is specified when creating aService which does not need it, creation will fail. This field will bewiped when updating a Service to no longer need it (e.g. changing typefrom NodePort to ClusterIP).More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
upstreamTargetPort integer

ServiceStatus

Appears in:

FieldDescriptionDefaultValidation
ports ServicePort array

SyncSecret

SyncSecret is a wrapper over Kubernetes Secret object. This is used to sync secrets from tenants to the LB cluster in a controlled and secure way.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringkubelb.k8c.io/v1alpha1
kind stringSyncSecret
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
immutable boolean
data object (keys:string, values:integer array)
stringData object (keys:string, values:string)
type SecretType

SyncSecretList

SyncSecretList contains a list of SyncSecrets

FieldDescriptionDefaultValidation
apiVersion stringkubelb.k8c.io/v1alpha1
kind stringSyncSecretList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.
items SyncSecret array

Tenant

Tenant is the Schema for the tenants API

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringkubelb.k8c.io/v1alpha1
kind stringTenant
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec TenantSpec
status TenantStatus

TenantList

TenantList contains a list of Tenant

FieldDescriptionDefaultValidation
apiVersion stringkubelb.k8c.io/v1alpha1
kind stringTenantList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.
items Tenant array

TenantSpec

TenantSpec defines the desired state of Tenant

Appears in:

FieldDescriptionDefaultValidation
propagatedAnnotations map[string]stringPropagatedAnnotations defines the list of annotations(key-value pairs) that will be propagated to the LoadBalancer service. Keep the value field empty in the key-value pair to allow any value.This will have a higher precedence than the annotations specified at the Config level.
propagateAllAnnotations booleanPropagateAllAnnotations defines whether all annotations will be propagated to the LoadBalancer service. If set to true, PropagatedAnnotations will be ignored.This will have a higher precedence than the value specified at the Config level.
loadBalancer LoadBalancerSettings
ingress IngressSettings
gatewayAPI GatewayAPISettings
dns DNSSettings
certificates CertificatesSettings
allowedDomains string arrayList of allowed domains for the tenant. This is used to restrict the domains that can be usedfor the tenant. If specified, applies on all the components such as Ingress, GatewayAPI, DNS, certificates, etc.Examples:- [".example.com"] -> this allows subdomains at the root level such as example.com and test.example.com but won’t allow domains at one level above like test.test.example.com- [".example.com"] -> this allows all subdomains of example.com such as test.dns.example.com and dns.example.com- [“example.com”] -> this allows only example.com- [""] or [""] -> this allows all domainsNote: “” was added as a special case to allow any levels of subdomains that come before it. “*” works for only 1 level.Default: value is [""] and all domains are allowed.[**]

TenantStatus

TenantStatus defines the observed state of Tenant

Appears in:

UpstreamService

UpstreamService is a wrapper over the corev1.Service object. This is required as kubebuilder:validation:EmbeddedResource marker adds the x-kubernetes-embedded-resource to the array instead of the elements within it. Which results in a broken CRD; validation error. Without this marker, the embedded resource is not properly serialized to the CRD.

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec ServiceSpecSpec defines the behavior of a service.https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status ServiceStatusMost recently observed status of the service.Populated by the system.Read-only.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status