Documentation
¶
Overview ¶
Package v1 contains API Schema definitions for the lb v1 API group +kubebuilder:object:generate=true +groupName=lb.lbconfig.carlosedp.com
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // GroupVersion is group version used to register these objects GroupVersion = schema.GroupVersion{Group: "lb.lbconfig.carlosedp.com", Version: "v1"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme SchemeBuilder = &runtime.SchemeBuilder{} // AddToScheme adds the types in this group-version to the given scheme. AddToScheme = SchemeBuilder.AddToScheme )
Functions ¶
This section is empty.
Types ¶
type ExternalLoadBalancer ¶
type ExternalLoadBalancer struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ExternalLoadBalancerSpec `json:"spec,omitempty"`
Status ExternalLoadBalancerStatus `json:"status,omitempty"`
}
ExternalLoadBalancer is the Schema for the externalloadbalancers API +kubebuilder:object:root=true +kubebuilder:subresource:status +operator-sdk:csv:customresourcedefinitions:displayName="ExternalLoadBalancer Instance",resources={{ExternalLoadBalancer,lb.lbconfig.carlosedp.com/v1,externalloadbalancer},} +kubebuilder:resource:path="externalloadbalancers" +kubebuilder:resource:singular="externalloadbalancer" +kubebuilder:resource:shortName="elb" +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +kubebuilder:printcolumn:name="VIP",type="string",JSONPath=".spec.vip",description="Load Balancer VIP" +kubebuilder:printcolumn:name="Ports",type="string",JSONPath=".spec.ports",description="Load Balancer Ports" +kubebuilder:printcolumn:name="Provider",type="string",JSONPath=".spec.provider.vendor",description="Load Balancer Provider Backend" +kubebuilder:printcolumn:name="Nodes",type="string",JSONPath=".status.numnodes",description="Amount of nodes in the load balancer" +kubebuilder:printcolumn:name="Type",type="string",JSONPath=".spec.type",description="Type of nodes in this Load Balancer" +kubebuilder:printcolumn:name="Matching Node Labels",type="string",JSONPath=".status.labels",description="Node Labels matching this Load Balancer"
func (*ExternalLoadBalancer) DeepCopy ¶
func (in *ExternalLoadBalancer) DeepCopy() *ExternalLoadBalancer
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalLoadBalancer.
func (*ExternalLoadBalancer) DeepCopyInto ¶
func (in *ExternalLoadBalancer) DeepCopyInto(out *ExternalLoadBalancer)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ExternalLoadBalancer) DeepCopyObject ¶
func (in *ExternalLoadBalancer) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ExternalLoadBalancerList ¶
type ExternalLoadBalancerList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []ExternalLoadBalancer `json:"items"`
}
ExternalLoadBalancerList contains a list of ExternalLoadBalancer
func (*ExternalLoadBalancerList) DeepCopy ¶
func (in *ExternalLoadBalancerList) DeepCopy() *ExternalLoadBalancerList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalLoadBalancerList.
func (*ExternalLoadBalancerList) DeepCopyInto ¶
func (in *ExternalLoadBalancerList) DeepCopyInto(out *ExternalLoadBalancerList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ExternalLoadBalancerList) DeepCopyObject ¶
func (in *ExternalLoadBalancerList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ExternalLoadBalancerSpec ¶
type ExternalLoadBalancerSpec struct {
// Vip is the Virtual IP configured in this LoadBalancer instance
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=15
Vip string `json:"vip"`
// Type is the node role type (master or infra) for the LoadBalancer instance
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Optional
// +kubebuilder:validation:Enum=master;infra
Type string `json:"type,omitempty"`
// NodeLabels are the node labels used for router sharding as an alternative to "type". Optional.
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Optional
NodeLabels map[string]string `json:"nodelabels,omitempty"`
// Ports is the ports exposed by this LoadBalancer instance
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinItems=1
// +kubebuilder:validation:MaxItems=128
Ports []int `json:"ports"`
// Monitor is the path and port to monitor the LoadBalancer members
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Required
Monitor Monitor `json:"monitor"`
// Provider is the LoadBalancer backend provider
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Required
Provider Provider `json:"provider"`
}
ExternalLoadBalancerSpec is the spec of a LoadBalancer instance.
func (*ExternalLoadBalancerSpec) DeepCopy ¶
func (in *ExternalLoadBalancerSpec) DeepCopy() *ExternalLoadBalancerSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalLoadBalancerSpec.
func (*ExternalLoadBalancerSpec) DeepCopyInto ¶
func (in *ExternalLoadBalancerSpec) DeepCopyInto(out *ExternalLoadBalancerSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ExternalLoadBalancerStatus ¶
type ExternalLoadBalancerStatus struct {
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +operator-sdk:csv:customresourcedefinitions:type=status
VIPs []VIP `json:"vips"`
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +operator-sdk:csv:customresourcedefinitions:type=status
Ports []int `json:"ports"`
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +operator-sdk:csv:customresourcedefinitions:type=status
Monitor Monitor `json:"monitor"`
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +operator-sdk:csv:customresourcedefinitions:type=status
Nodes []Node `json:"nodes,omitempty"`
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +operator-sdk:csv:customresourcedefinitions:type=status
Pools []Pool `json:"pools,omitempty"`
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +operator-sdk:csv:customresourcedefinitions:type=status
Provider Provider `json:"provider,omitempty"`
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +operator-sdk:csv:customresourcedefinitions:type=status
Labels map[string]string `json:"labels,omitempty"`
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +operator-sdk:csv:customresourcedefinitions:type=status
NumNodes int `json:"numnodes,omitempty"`
}
ExternalLoadBalancerStatus defines the observed state of ExternalLoadBalancer
func (*ExternalLoadBalancerStatus) DeepCopy ¶
func (in *ExternalLoadBalancerStatus) DeepCopy() *ExternalLoadBalancerStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalLoadBalancerStatus.
func (*ExternalLoadBalancerStatus) DeepCopyInto ¶
func (in *ExternalLoadBalancerStatus) DeepCopyInto(out *ExternalLoadBalancerStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Monitor ¶
type Monitor struct {
// Name is the monitor name, it is set by the controller
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Optional
Name string `json:"name,omitempty"`
// Path is the path URL to check for the pool members in the format `/healthz`
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Path string `json:"path"`
// Port is the port this monitor should check the pool members
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Required
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=65535
Port int `json:"port"`
// MonitorType is the monitor parent type. <monitorType> must be one of "http", "https",
// +operator-sdk:csv:customresourcedefinitions:type=spec
// "icmp".
// +kubebuilder:validation:Required
// +kubebuilder:validation:Enum=http;https;icmp
MonitorType string `json:"monitortype"`
}
Monitor defines a monitor object in the LoadBalancer.
func (*Monitor) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Monitor.
func (*Monitor) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Node ¶
type Node struct {
// Name is the host name set dynamically by the controller
Name string `json:"name,omitempty"`
// Host is the host IP set dynamically by the controller
Host string `json:"host"`
// Label is the node labels this node has
Labels map[string]string `json:"label,omitempty"`
}
Node defines a host object in the LoadBalancer.
func (*Node) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Node.
func (*Node) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Pool ¶
type Pool struct {
// Name is the Pool name, it is set by the controller
Name string `json:"name,omitempty"`
// Members is the host members of this pool
Members []PoolMember `json:"members,omitempty"`
// Monitor is the monitor name used on this pool
Monitor string `json:"monitor"`
}
Pool defines a pool object in the LoadBalancer.
func (*Pool) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Pool.
func (*Pool) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PoolMember ¶
type PoolMember struct {
// Node is the node part of a pool
Node Node `json:"node"`
// Port is the port for this pool member
Port int `json:"port"`
}
PoolMember defines a host object in the LoadBalancer.
func (*PoolMember) DeepCopy ¶
func (in *PoolMember) DeepCopy() *PoolMember
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PoolMember.
func (*PoolMember) DeepCopyInto ¶
func (in *PoolMember) DeepCopyInto(out *PoolMember)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Provider ¶
type Provider struct {
// Vendor is the backend provider vendor
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Required
// +kubebuilder:validation:Enum=Dummy;F5_BigIP;Citrix_ADC;HAProxy
Vendor string `json:"vendor"`
// Host is the Load Balancer API IP or Hostname in URL format. Eg. `http://10.25.10.10`.
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=255
Host string `json:"host"`
// Port is the Load Balancer API Port.
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Required
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=65535
Port int `json:"port"`
// Creds is the credentials secret holding the "username" and "password" keys.
// Generate with: `kubectl create secret generic <secret-name> --from-literal=username=<username> --from-literal=password=<password>`
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Required
Creds string `json:"creds"`
// Partition is the F5 partition to create the Load Balancer instances. Defaults to "Common". (F5 BigIP only)
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Optional
Partition string `json:"partition,omitempty"`
// ValidateCerts is a flag to validate or not the Load Balancer API certificate. Defaults to false.
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Enum=true;false
// +kubebuilder:validation:Optional
// +kubebuilder:default=false
ValidateCerts bool `json:"validatecerts,omitempty"`
// Debug is a flag to enable debug on the backend log output. Defaults to false.
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Optional
// +kubebuilder:validation:Enum=true;false
// +kubebuilder:default=false
Debug bool `json:"debug,omitempty"`
// Type is the Load-Balancing method. Defaults to "round-robin".
// Options are: ROUNDROBIN, LEASTCONNECTION, LEASTRESPONSETIME
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +kubebuilder:validation:Optional
// +kubebuilder:validation:Enum=ROUNDROBIN;LEASTCONNECTION;LEASTRESPONSETIME
// +kubebuilder:default=ROUNDROBIN
LBMethod string `json:"lbmethod,omitempty"`
}
Provider is a backend provider for F5 Big IP Load Balancers
func (*Provider) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Provider.
func (*Provider) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type VIP ¶
type VIP struct {
// Name is the VIP instance name
Name string `json:"name"`
// Pool is the associated pool with this VIP
Pool string `json:"pool"`
// IP is the IP address this VIP instance listens to
IP string `json:"ip"`
// Port is the port this VIP listens to
Port int `json:"port"`
}
VIP defines VIP instance in the LoadBalancer with a pool and port
func (*VIP) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VIP.
func (*VIP) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.