diff --git a/docs/configuration.md b/docs/configuration.md index 9f32854b4765..bad8733568fb 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -318,10 +318,12 @@ Configuration options related to k0s's [control plane load balancing] feature Configuration options related to keepalived in [control plane load balancing] -| Element | Description | -| ---------------- | ----------------------------------------------------------------------------------------------------------- | -| `vrrpInstances` | Configuration options related to the VRRP. This is an array which allows to configure multiple virtual IPs. | -| `virtualServers` | Configuration options related LoadBalancing. This is an array which allows to configure multiple LBs. | +| Element | Description | +| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------- | +| `vrrpInstances` | Configuration options related to the VRRP. This is an array which allows to configure multiple virtual IPs. | +| `virtualServers` | Configuration options related LoadBalancing. This is an array which allows to configure multiple LBs. | +| `userSpaceProxyBindPort` | The port the userspace proxy will bind to. This port is for internal use only, but listens on every interface. Default: `6444` | +| `disableLoadBalancer` | Disables the load balancer. Default: `false` | ##### `spec.network.controlPlaneLoadBalancing.keepalived.vrrpInstances` diff --git a/internal/pkg/iface/iface.go b/internal/pkg/iface/iface.go index 30a689c86de8..a022712cfbfe 100644 --- a/internal/pkg/iface/iface.go +++ b/internal/pkg/iface/iface.go @@ -90,7 +90,7 @@ func FirstPublicAddress() (string, error) { } for a := range addresses { // check the address type and skip if loopback - if a != nil && !a.IP.IsLoopback() { + if !a.IP.IsLoopback() { if a.IP.To4() != nil { return a.IP.String(), nil } diff --git a/pkg/apis/k0s/v1beta1/cplb.go b/pkg/apis/k0s/v1beta1/cplb.go index 4cbe55bf6a61..b36de59ba25a 100644 --- a/pkg/apis/k0s/v1beta1/cplb.go +++ b/pkg/apis/k0s/v1beta1/cplb.go @@ -68,13 +68,16 @@ type KeepalivedSpec struct { // which allows to configure multiple load balancers. VirtualServers VirtualServers `json:"virtualServers,omitempty"` // UserspaceProxyPort is the port where the userspace proxy will bind - // to. This port is only exposed on the localhost interface and is only - // used internally. Defaults to 6444. + // to. This port is only used internally, but listens on every interface. + // Defaults to 6444 // +kubebuilder:default=6444 // +kubebuilder:validation:Minimum=1 // +kubebuilder:validation:Maximum=65535 // +optional UserSpaceProxyPort int `json:"userSpaceProxyBindPort,omitempty"` + // DisableLoadBalancer disables the load balancer. + // +optional + DisableLoadBalancer bool `json:"disableLoadBalancer,omitempty"` } // VRRPInstances is a list of VRRPInstance diff --git a/pkg/component/controller/cplb/cplb_linux.go b/pkg/component/controller/cplb/cplb_linux.go index fd88df64ef58..6ab33317ebe8 100644 --- a/pkg/component/controller/cplb/cplb_linux.go +++ b/pkg/component/controller/cplb/cplb_linux.go @@ -100,7 +100,7 @@ func (k *Keepalived) Start(ctx context.Context) error { } } - if len(k.Config.VRRPInstances) > 0 || len(k.Config.VirtualServers) > 0 { + if !k.Config.DisableLoadBalancer && (len(k.Config.VRRPInstances) > 0 || len(k.Config.VirtualServers) > 0) { k.log.Info("Starting CPLB reconciler") updateCh := make(chan struct{}, 1) k.reconciler = NewCPLBReconciler(k.KubeConfigPath, updateCh) @@ -160,6 +160,7 @@ func (k *Keepalived) Start(ctx context.Context) error { } }() } + return k.supervisor.Supervise() } diff --git a/static/_crds/k0s/k0s.k0sproject.io_clusterconfigs.yaml b/static/_crds/k0s/k0s.k0sproject.io_clusterconfigs.yaml index d1d5f2ffd58f..13544d1e7a04 100644 --- a/static/_crds/k0s/k0s.k0sproject.io_clusterconfigs.yaml +++ b/static/_crds/k0s/k0s.k0sproject.io_clusterconfigs.yaml @@ -508,12 +508,15 @@ spec: Keepalived contains configuration options related to the "Keepalived" type of load balancing. properties: + disableLoadBalancer: + description: DisableLoadBalancer disables the load balancer. + type: boolean userSpaceProxyBindPort: default: 6444 description: |- UserspaceProxyPort is the port where the userspace proxy will bind - to. This port is only exposed on the localhost interface and is only - used internally. Defaults to 6444. + to. This port is only used internally, but listens on every interface. + Defaults to 6444 maximum: 65535 minimum: 1 type: integer