Documentation
¶
Index ¶
- Constants
- Variables
- func AreAllLoadBalancerSetsForLBButDownscaled(ctx context.Context, c client.Client, lb *yawolv1beta1.LoadBalancer, ...) (bool, error)
- func CheckEnvoyVersion(ctx context.Context, c client.StatusWriter, ...) error
- func CreateEnvoyConfig(r record.EventRecorder, oldSnapshot *envoycache.Snapshot, ...) (bool, envoycache.Snapshot, error)
- func CreateLoadBalancerSet(ctx context.Context, c client.Client, lb *yawolv1beta1.LoadBalancer, ...) error
- func GenerateUserData(kubeconfig string, loadBalancerName string, loadBalancerMachineName string, ...) string
- func GetDebugSettings(svc *coreV1.Service) yawolv1beta1.LoadBalancerDebugSettings
- func GetDesiredSecGroupRulesForLoadBalancer(r record.EventRecorder, lb *yawolv1beta1.LoadBalancer, secGroupID string) []rules.SecGroupRule
- func GetExistingFloatingIPFromAnnotation(svc *coreV1.Service) *string
- func GetFlavorID(spec yawolv1beta1.OpenstackFlavorRef) (string, error)
- func GetHashForLoadBalancerMachineSpecFromLoadBalancer(lb *yawolv1beta1.LoadBalancer) (string, error)
- func GetIPFromStatus(svc *coreV1.Service) *string
- func GetImageID(spec yawolv1beta1.OpenstackImageRef) (string, error)
- func GetLoadBalancerForLoadBalancerSet(ctx context.Context, c client.Client, ...) (*yawolv1beta1.LoadBalancer, error)
- func GetLoadBalancerNameFromService(service *coreV1.Service) string
- func GetLoadBalancerSetForHash(ctx context.Context, c client.Client, filterLabels map[string]string, ...) (*yawolv1beta1.LoadBalancerSet, error)
- func GetLoadBalancerSetLabelsFromLoadBalancer(lb *yawolv1beta1.LoadBalancer) map[string]string
- func GetLoadBalancerSetsForLoadBalancer(ctx context.Context, c client.Client, lb *yawolv1beta1.LoadBalancer) (yawolv1beta1.LoadBalancerSetList, error)
- func GetLoadBalancerSourceRanges(lb *yawolv1beta1.LoadBalancer) []string
- func GetNextRevisionFromLB(ctx context.Context, c client.Client, lb *yawolv1beta1.LoadBalancer) (int, error)
- func GetOpenStackReconcileHash(lb *yawolv1beta1.LoadBalancer) (string, error)
- func GetOptions(svc *coreV1.Service) yawolv1beta1.LoadBalancerOptions
- func GetOwnersReferenceForLB(lb *yawolv1beta1.LoadBalancer) metaV1.OwnerReference
- func GetReplicasFromService(service *coreV1.Service) int
- func GetRoleRules(loadBalancer *yawolv1beta1.LoadBalancer, ...) []rbac.PolicyRule
- func HashData(data interface{}) (string, error)
- func LoadBalancerMachineOpenstackReconcileIsNeeded(lbm *yawolv1beta1.LoadBalancerMachine) bool
- func LoadBalancerOpenstackReconcileIsNeeded(lb *yawolv1beta1.LoadBalancer) bool
- func LoadBalancerSetConditionIsFalse(condition v1.NodeCondition) bool
- func LoadBalancerSetIsReady(ctx context.Context, c client.Client, lb *yawolv1beta1.LoadBalancer, ...) (bool, error)
- func ParseLoadBalancerMachineMetrics(loadBalancerMachine *yawolv1beta1.LoadBalancerMachine, ...)
- func ParseLoadBalancerMetrics(lb yawolv1beta1.LoadBalancer, metrics *helpermetrics.LoadBalancerMetricList)
- func ParseLoadBalancerSetMetrics(lbs yawolv1beta1.LoadBalancerSet, ...)
- func PatchLBMStatus(ctx context.Context, sw client.StatusWriter, ...) error
- func PatchLBStatus(ctx context.Context, sw client.StatusWriter, lb *yawolv1beta1.LoadBalancer, ...) error
- func PatchLoadBalancerRevision(ctx context.Context, c client.Client, lb *yawolv1beta1.LoadBalancer, ...) error
- func PatchLoadBalancerSetReplicas(ctx context.Context, c client.Client, lbs *yawolv1beta1.LoadBalancerSet, ...) error
- func PatchServiceStatus(ctx context.Context, sw client.StatusWriter, svc *coreV1.Service, ...) error
- func ReadCurrentRevisionFromLB(lb *yawolv1beta1.LoadBalancer) (int, error)
- func ReadRevisionFromLBS(lbs *yawolv1beta1.LoadBalancerSet) (int, error)
- func RemoveFromLBMStatus(ctx context.Context, sw client.StatusWriter, ...) error
- func RemoveFromLBStatus(ctx context.Context, sw client.StatusWriter, lb *yawolv1beta1.LoadBalancer, ...) error
- func RemoveLoadBalancerMachineMetrics(loadBalancerMachine *yawolv1beta1.LoadBalancerMachine, ...)
- func RemoveLoadBalancerMetrics(lb yawolv1beta1.LoadBalancer, metrics *helpermetrics.LoadBalancerMetricList)
- func RemoveLoadBalancerSetMetrics(lbs yawolv1beta1.LoadBalancerSet, ...)
- func ScaleDownAllLoadBalancerSetsForLBBut(ctx context.Context, c client.Client, lb *yawolv1beta1.LoadBalancer, ...) (ctrl.Result, error)
- func UpdateEnvoyStatus(ctx context.Context, c client.StatusWriter, ...) error
- func UpdateKeepalivedStatus(ctx context.Context, c client.StatusWriter, keepalivedStatsFile string, ...) error
- func UpdateLBMConditions(ctx context.Context, c client.StatusWriter, ...) error
- func ValidateService(svc *coreV1.Service) error
- func WriteLBMMetrics(ctx context.Context, c client.StatusWriter, keepalivedStatsFile string, ...) error
- type LoadbalancerCondition
- type LoadbalancerConditionStatus
- type LoadbalancerMetric
Constants ¶
const ( DefaultRequeueTime = 10 * time.Millisecond RevisionAnnotation = "loadbalancer.yawol.stackit.cloud/revision" HashLabel = "lbm-template-hash" LoadBalancerKind = "LoadBalancer" VRRPInstanceName = "ENVOY" )
Variables ¶
var ( ErrFailToReadRevisionFromAnnotation = errors.New("failed to read revision from annotation") ErrNotAValidIP = errors.New("not a valid IP address") ErrNoFixedIPForLBPort = errors.New("no fixed ip for loadbalancer port") ErrCouldNotReadSvcNameSpacedNameFromAnno = errors.New("could not read service namespacedname from annotation") ErrNoEventFound = errors.New("no event found") ErrMaxTriesExceeded = errors.New("max tries exceeded") ErrSourceRangesAreWrong = errors.New("source ranges are wrong") ErrEndpointValuesWrong = errors.New("endpoint values wrong") ErrPortValuesWrong = errors.New("port values wrong") ErrLBMustNotBeNil = errors.New("LoadBalancer must no be nil") ErrLBUIDMustNotBeNil = errors.New("LoadBalancer.UID must not be nil") ErrFailedToCreatePortForLBM = errors.New("failed to create port for lbm") ErrLBOrLBMPortsAreNil = errors.New("lb or lbm ports are nil") ErrLBMPortNotSet = errors.New("load balancer machine port not set") ErrLBPortNotSet = errors.New("load balancer port not set") ErrFIPIDEmpty = errors.New("fip was successfully created but fip id is empty") ErrPortIDEmpty = errors.New("port was successfully created but port id is empty") ErrSecGroupIDEmpty = errors.New("secGroup was successfully created but secGroup id is empty") ErrSecGroupNil = errors.New("SecGroup is nil, cannot create rules") ErrIPNotInStatus = errors.New("ip not in status") ErrIPSetInStatusLBNotReady = errors.New("ip is set in status but lb is not ready") ErrIncorrectEvent = errors.New("event not correct") ErrSvcEventNotFound = errors.New("event on service not found") ErrLBOnlyOneIPFamily = errors.New("LB only has one IP family type") ErrNoExistingFIP = errors.New("no existingFloatingIP set") ErrFIPNotFound = errors.New("FIP not found") ErrInvalidClassname = errors.New("invalid classname LB created") ErrInvalidProtocol = errors.New("invalid protocol LB created") ErrLBNotCleanedUp = errors.New("load balancer didn't clean up") ErrSourceRangesWrongLength = errors.New("source ranges update length does not match") ErrNoSourceRangesEvent = errors.New("no source ranges event found") ErrZeroOrMoreThanOnePortFoundInLB = errors.New("zero or more than one port found in LB") ErrZeroOrMoreThanOneSRFoundInLB = errors.New("zero or more than one source range in LB found") ErrEndpointDoesNotMatchingNodeCount = errors.New("less or more than two endpoint in LB found") ErrWaitingForPortsAndEndpoints = errors.New("wait for ports and endpoints") ErrEndpointsFound = errors.New("endpoints found") ErrNoEndpointFound = errors.New("no endpoint in LB found") ErrNotAllConditionsSet = errors.New("no or not all conditions are set") ErrConfigNotReady = errors.New("config not ready") ErrEnvoyNotReady = errors.New("envoy not ready") ErrEnvoyNotUpToDate = errors.New("envoy not upToDate") ErrEnvoyListenerNotFound = errors.New("envoy listener not found") ErrPortProtocolNotSupported = errors.New("port is not of supported protocol") ErrPortInvalidRange = errors.New("port is not between 1 and 65535") ErrNodePortInvalidRange = errors.New("NodePort is not between 1 and 65535") ErrEndpointAddressesNil = errors.New("endpoint addresses are nil") ErrEndpointAddressWrongFormat = errors.New("endpoint address wrong address format (DNS name) not correct") ErrInvalidRevision = errors.New("revision number for lb must be >0") ErrYawolletRequiredFlags = errors.New("namespace, loadbalancer-name and loadbalancer-machine-name are required flags") ErrYawolletIPNotFound = errors.New("listen-interface is set but no IP found") ErrUnexpectedOpenstackStatus = errors.New("unexpected openstack status") ErrSecretNotFound = errors.New("secret not found") ErrTokenNotFoundInSecret = errors.New("token in secret not found") ErrCANotFoundInSecret = errors.New("ca in secret not found") ErrNoNetworkID = errors.New("cant get networkID for loadbalancer") ErrCouldNotParseSourceRange = errors.New("could not parse LoadBalancerSourceRange") ErrListingChildLBMs = errors.New("unable to list child loadbalancerMachines") ErrUnsupportedProtocol = errors.New("unsupported protocol used (TCP and UDP is supported)") )
Functions ¶
func AreAllLoadBalancerSetsForLBButDownscaled ¶
func AreAllLoadBalancerSetsForLBButDownscaled( ctx context.Context, c client.Client, lb *yawolv1beta1.LoadBalancer, exceptionName string, ) (bool, error)
Checks if LoadBalancerSets deriving from LoadBalancers are downscaled except for the LoadBalancerSet with the name of exceptionName Returns true if all are downscaled; false if not Follows error contract of getLoadBalancerSetsForLoadBalancer
func CheckEnvoyVersion ¶
func CheckEnvoyVersion( ctx context.Context, c client.StatusWriter, lbm *yawolv1beta1.LoadBalancerMachine, snapshot envoycache.Snapshot, ) error
func CreateEnvoyConfig ¶
func CreateEnvoyConfig( r record.EventRecorder, oldSnapshot *envoycache.Snapshot, lb *yawolv1beta1.LoadBalancer, listen string, ) (bool, envoycache.Snapshot, error)
CreateEnvoyConfig create a new envoy snapshot and checks if the new snapshot has changes
func CreateLoadBalancerSet ¶
func CreateLoadBalancerSet( ctx context.Context, c client.Client, lb *yawolv1beta1.LoadBalancer, machineSpec *yawolv1beta1.LoadBalancerMachineSpec, hash string, revision int, ) error
func GenerateUserData ¶
func GetDebugSettings ¶
func GetDebugSettings(svc *coreV1.Service) yawolv1beta1.LoadBalancerDebugSettings
GetDebugSettings return loadbalancer debug settings for a service
func GetDesiredSecGroupRulesForLoadBalancer ¶
func GetDesiredSecGroupRulesForLoadBalancer(r record.EventRecorder, lb *yawolv1beta1.LoadBalancer, secGroupID string) []rules.SecGroupRule
GetDesiredSecGroupRules returns all SecGroupRules that are needed. Based on default rules, ports, debug settings.
func GetExistingFloatingIPFromAnnotation ¶
GetExistingFloatingIPFromAnnotation return ip from the ServiceExistingFloatingIP annotation
func GetFlavorID ¶
func GetFlavorID(spec yawolv1beta1.OpenstackFlavorRef) (string, error)
func GetHashForLoadBalancerMachineSpecFromLoadBalancer ¶
func GetHashForLoadBalancerMachineSpecFromLoadBalancer(lb *yawolv1beta1.LoadBalancer) (string, error)
func GetIPFromStatus ¶
GetIPFromStatus return ip from service (Status.LoadBalancer.Ingress[0].IP)
func GetImageID ¶
func GetImageID(spec yawolv1beta1.OpenstackImageRef) (string, error)
func GetLoadBalancerForLoadBalancerSet ¶
func GetLoadBalancerForLoadBalancerSet( ctx context.Context, c client.Client, loadBalancerSet *yawolv1beta1.LoadBalancerSet, ) (*yawolv1beta1.LoadBalancer, error)
func GetLoadBalancerSetForHash ¶
func GetLoadBalancerSetForHash( ctx context.Context, c client.Client, filterLabels map[string]string, hash string, ) (*yawolv1beta1.LoadBalancerSet, error)
Returns nil if no matching exists If there are multiple: Returns one with highest RevisionAnnotation annotation If there is a single one: returns the one fetched
func GetLoadBalancerSetLabelsFromLoadBalancer ¶
func GetLoadBalancerSetLabelsFromLoadBalancer(lb *yawolv1beta1.LoadBalancer) map[string]string
func GetLoadBalancerSetsForLoadBalancer ¶
func GetLoadBalancerSetsForLoadBalancer( ctx context.Context, c client.Client, lb *yawolv1beta1.LoadBalancer, ) (yawolv1beta1.LoadBalancerSetList, error)
This returns all LoadBalancerSets for a given LoadBalancer Returns an error if lb is nil Returns an error if lb.UID is empty Returns an error if kube api-server problems occurred
func GetLoadBalancerSourceRanges ¶
func GetLoadBalancerSourceRanges(lb *yawolv1beta1.LoadBalancer) []string
GetLoadBalancerSourceRanges returns the LoadBalancerSourceRanges from the spec. If not set it uses "0.0.0.0/0", "::/0" as default to enable all sources.
func GetNextRevisionFromLB ¶
func GetNextRevisionFromLB(ctx context.Context, c client.Client, lb *yawolv1beta1.LoadBalancer) (int, error)
func GetOpenStackReconcileHash ¶
func GetOpenStackReconcileHash(lb *yawolv1beta1.LoadBalancer) (string, error)
GetOpenStackReconcileHash returns a 16 char hash for all openstack relevant data to check if an openstack reconcile is needed.
func GetOptions ¶
func GetOptions(svc *coreV1.Service) yawolv1beta1.LoadBalancerOptions
GetOptions return loadbalancer option settings for a service
func GetOwnersReferenceForLB ¶
func GetOwnersReferenceForLB(lb *yawolv1beta1.LoadBalancer) metaV1.OwnerReference
GetOwnersReferenceForLB returns OwnerReference for LoadBalancer
func GetReplicasFromService ¶
GetReplicasFromService retruns replicas from Annotation. Default is 1
func GetRoleRules ¶
func GetRoleRules( loadBalancer *yawolv1beta1.LoadBalancer, loadBalancerMachine *yawolv1beta1.LoadBalancerMachine, ) []rbac.PolicyRule
func LoadBalancerMachineOpenstackReconcileIsNeeded ¶
func LoadBalancerMachineOpenstackReconcileIsNeeded(lbm *yawolv1beta1.LoadBalancerMachine) bool
LoadBalancerOpenstackReconcileIsNeeded returns true if an openstack reconcile is needed.
func LoadBalancerOpenstackReconcileIsNeeded ¶
func LoadBalancerOpenstackReconcileIsNeeded(lb *yawolv1beta1.LoadBalancer) bool
LoadBalancerOpenstackReconcileIsNeeded returns true if an openstack reconcile is needed.
func LoadBalancerSetConditionIsFalse ¶
func LoadBalancerSetConditionIsFalse(condition v1.NodeCondition) bool
func LoadBalancerSetIsReady ¶
func LoadBalancerSetIsReady( ctx context.Context, c client.Client, lb *yawolv1beta1.LoadBalancer, currentSet *yawolv1beta1.LoadBalancerSet, ) (bool, error)
func ParseLoadBalancerMachineMetrics ¶
func ParseLoadBalancerMachineMetrics( loadBalancerMachine *yawolv1beta1.LoadBalancerMachine, metrics *helpermetrics.LoadBalancerMachineMetricList, )
func ParseLoadBalancerMetrics ¶
func ParseLoadBalancerMetrics( lb yawolv1beta1.LoadBalancer, metrics *helpermetrics.LoadBalancerMetricList, )
func ParseLoadBalancerSetMetrics ¶
func ParseLoadBalancerSetMetrics( lbs yawolv1beta1.LoadBalancerSet, metrics *helpermetrics.LoadBalancerSetMetricList, )
func PatchLBMStatus ¶
func PatchLBMStatus( ctx context.Context, sw client.StatusWriter, lbm *yawolv1beta1.LoadBalancerMachine, lbmStatus yawolv1beta1.LoadBalancerMachineStatus, ) error
PatchLBMStatus patch loadbalancermachine status
func PatchLBStatus ¶
func PatchLBStatus( ctx context.Context, sw client.StatusWriter, lb *yawolv1beta1.LoadBalancer, lbStatus yawolv1beta1.LoadBalancerStatus, ) error
PatchLBStatus patch loadbalancer status
func PatchLoadBalancerRevision ¶
func PatchLoadBalancerRevision(ctx context.Context, c client.Client, lb *yawolv1beta1.LoadBalancer, revision int) error
func PatchLoadBalancerSetReplicas ¶
func PatchLoadBalancerSetReplicas(ctx context.Context, c client.Client, lbs *yawolv1beta1.LoadBalancerSet, replicas int) error
PatchLoadBalancerSetReplicas sets replicas in LoadBalancerSet
func PatchServiceStatus ¶
func PatchServiceStatus( ctx context.Context, sw client.StatusWriter, svc *coreV1.Service, svcStatus *coreV1.ServiceStatus, ) error
PatchLBStatus patch loadbalancer status
func ReadCurrentRevisionFromLB ¶
func ReadCurrentRevisionFromLB(lb *yawolv1beta1.LoadBalancer) (int, error)
func ReadRevisionFromLBS ¶
func ReadRevisionFromLBS(lbs *yawolv1beta1.LoadBalancerSet) (int, error)
func RemoveFromLBMStatus ¶
func RemoveFromLBMStatus(ctx context.Context, sw client.StatusWriter, lbm *yawolv1beta1.LoadBalancerMachine, key string) error
RemoveFromLBMStatus removes key from loadbalancermachine status.
func RemoveFromLBStatus ¶
func RemoveFromLBStatus(ctx context.Context, sw client.StatusWriter, lb *yawolv1beta1.LoadBalancer, key string) error
RemoveFromLBStatus removes key from loadbalancer status.
func RemoveLoadBalancerMachineMetrics ¶
func RemoveLoadBalancerMachineMetrics( loadBalancerMachine *yawolv1beta1.LoadBalancerMachine, metrics *helpermetrics.LoadBalancerMachineMetricList, )
func RemoveLoadBalancerMetrics ¶
func RemoveLoadBalancerMetrics( lb yawolv1beta1.LoadBalancer, metrics *helpermetrics.LoadBalancerMetricList, )
func RemoveLoadBalancerSetMetrics ¶
func RemoveLoadBalancerSetMetrics( lbs yawolv1beta1.LoadBalancerSet, metrics *helpermetrics.LoadBalancerSetMetricList, )
func ScaleDownAllLoadBalancerSetsForLBBut ¶
func ScaleDownAllLoadBalancerSetsForLBBut( ctx context.Context, c client.Client, lb *yawolv1beta1.LoadBalancer, exceptionName string, ) (ctrl.Result, error)
ScaleDownAllLoadBalancerSetsForLBBut Scales down all LoadBalancerSets deriving from a LB but the one with the name of exceptionName This will use getLoadBalancerSetsForLoadBalancer to identify the LBS deriving from the given LB See error handling getLoadBalancerSetsForLoadBalancer See error handling patchLoadBalancerSetReplicas Requests requeue when a LBS has been downscaled
func UpdateEnvoyStatus ¶
func UpdateEnvoyStatus( ctx context.Context, c client.StatusWriter, lbm *yawolv1beta1.LoadBalancerMachine, ) error
func UpdateKeepalivedStatus ¶
func UpdateKeepalivedStatus( ctx context.Context, c client.StatusWriter, keepalivedStatsFile string, lbm *yawolv1beta1.LoadBalancerMachine, ) error
func UpdateLBMConditions ¶
func UpdateLBMConditions( ctx context.Context, c client.StatusWriter, lbm *yawolv1beta1.LoadBalancerMachine, condition LoadbalancerCondition, status LoadbalancerConditionStatus, reason string, message string, ) error
UpdateLBMConditions update a given condition in lbm object
func ValidateService ¶
ValidateService checks if the service is valid
func WriteLBMMetrics ¶
func WriteLBMMetrics( ctx context.Context, c client.StatusWriter, keepalivedStatsFile string, lbm *yawolv1beta1.LoadBalancerMachine, ) error
WriteLBMMetrics gets metrics and write new metrics to lbm
Types ¶
type LoadbalancerCondition ¶
type LoadbalancerCondition string
LoadbalancerCondition condition name for conditions in lbm
const ( ConfigReady LoadbalancerCondition = "ConfigReady" EnvoyReady LoadbalancerCondition = "EnvoyReady" EnvoyUpToDate LoadbalancerCondition = "EnvoyUpToDate" KeepalivedStatsFile LoadbalancerCondition = "KeepalivedStatsFile" KeepalivedMaster LoadbalancerCondition = "KeepalivedMaster" )
Condition name const
type LoadbalancerConditionStatus ¶
type LoadbalancerConditionStatus string
LoadbalancerConditionStatus condition status for conditions in lbm
const ( ConditionTrue LoadbalancerConditionStatus = "True" ConditionFalse LoadbalancerConditionStatus = "False" )
Condition status const
type LoadbalancerMetric ¶
type LoadbalancerMetric string
LoadbalancerMetric metric name for lbm
const ( MetricLoad1 LoadbalancerMetric = "load1" MetricLoad5 LoadbalancerMetric = "load5" MetricLoad15 LoadbalancerMetric = "load15" MetricNumCPU LoadbalancerMetric = "numCPU" MetricMemTotal LoadbalancerMetric = "memTotal" MetricMemFree LoadbalancerMetric = "memFree" MetricMemAvailable LoadbalancerMetric = "memAvailable" MetricStealTime LoadbalancerMetric = "stealTime" MetricKeepalivedIsMaster LoadbalancerMetric = "keepalivedIsMaster" MetricKeepalivedBecameMaster LoadbalancerMetric = "keepalivedBecameMaster" MetricKeepalivedReleasedMaster LoadbalancerMetric = "keepalivedReleasedMaster " MetricKeepalivedAdvertisementsSent LoadbalancerMetric = "keepalivedAdvertisementsSent" MetricKeepalivedAdvertisementsReceived LoadbalancerMetric = "keepalivedAdvertisementsReceived" )
Metric name const