Skip to content
This repository was archived by the owner on Aug 12, 2025. It is now read-only.

Commit 6accec5

Browse files
committed
refactor: handle kube-vip better
* add constants for "KUBE_VIP" and "CPEM" VIPManager IDs * Get the Elastic IP reservation when using Kube-VIP (used to do this previously but it got accidentally removed) Signed-off-by: Chris Privitere <[email protected]>
1 parent a8247e9 commit 6accec5

File tree

4 files changed

+17
-15
lines changed

4 files changed

+17
-15
lines changed

api/v1beta1/packetcluster_types.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ const (
2727
ClusterFinalizer = "packetcluster.infrastructure.cluster.x-k8s.io"
2828
// NetworkInfrastructureReadyCondition reports of current status of cluster infrastructure.
2929
NetworkInfrastructureReadyCondition clusterv1.ConditionType = "NetworkInfrastructureReady"
30+
// EMLBVIPID is the string used to refer to the EMLB load balancer and VIP Manager type.
31+
EMLBVIPID = "EMLB"
32+
// CPEMID is the string used to refer to the CPEM load balancer and VIP Manager type.
33+
CPEMID = "CPEM"
34+
// KUBEVIPID is the string used to refer to the Kube VIP load balancer and VIP Manager type.
35+
KUBEVIPID = "KUBE_VIP"
3036
)
3137

3238
// VIPManagerType describes if the VIP will be managed by CPEM or kube-vip or Equinix Metal Load Balancer.

controllers/packetcluster_controller.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ func (r *PacketClusterReconciler) reconcileNormal(ctx context.Context, clusterSc
125125
packetCluster := clusterScope.PacketCluster
126126

127127
switch {
128-
case packetCluster.Spec.VIPManager == emlb.EMLBVIPID:
128+
case packetCluster.Spec.VIPManager == infrav1.EMLBVIPID:
129129
if !packetCluster.Spec.ControlPlaneEndpoint.IsValid() {
130130
// Create new EMLB object
131131
lb := emlb.NewEMLB(r.PacketClient.GetConfig().DefaultHeader["X-Auth-Token"], packetCluster.Spec.ProjectID, packetCluster.Spec.Metro)
@@ -135,15 +135,15 @@ func (r *PacketClusterReconciler) reconcileNormal(ctx context.Context, clusterSc
135135
return err
136136
}
137137
}
138-
case packetCluster.Spec.VIPManager == "KUBE_VIP":
138+
case packetCluster.Spec.VIPManager == infrav1.KUBEVIPID:
139139
log.Info("KUBE_VIP VIPManager Detected")
140140
if err := r.PacketClient.EnableProjectBGP(ctx, packetCluster.Spec.ProjectID); err != nil {
141141
log.Error(err, "error enabling bgp for project")
142142
return err
143143
}
144144
}
145145

146-
if packetCluster.Spec.VIPManager != emlb.EMLBVIPID {
146+
if packetCluster.Spec.VIPManager != infrav1.EMLBVIPID {
147147
ipReserv, err := r.PacketClient.GetIPByClusterIdentifier(ctx, clusterScope.Namespace(), clusterScope.Name(), packetCluster.Spec.ProjectID)
148148
switch {
149149
case errors.Is(err, packet.ErrControlPlanEndpointNotFound):
@@ -192,7 +192,7 @@ func (r *PacketClusterReconciler) reconcileDelete(ctx context.Context, clusterSc
192192

193193
packetCluster := clusterScope.PacketCluster
194194

195-
if packetCluster.Spec.VIPManager == emlb.EMLBVIPID {
195+
if packetCluster.Spec.VIPManager == infrav1.EMLBVIPID {
196196
// Create new EMLB object
197197
lb := emlb.NewEMLB(r.PacketClient.GetConfig().DefaultHeader["X-Auth-Token"], packetCluster.Spec.ProjectID, packetCluster.Spec.Metro)
198198

controllers/packetmachine_controller.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -353,8 +353,8 @@ func (r *PacketMachineReconciler) reconcile(ctx context.Context, machineScope *s
353353
var controlPlaneEndpointAddress string
354354
var cpemLBConfig string
355355
var emlbID string
356-
switch {
357-
case machineScope.PacketCluster.Spec.VIPManager == "CPEM":
356+
switch machineScope.PacketCluster.Spec.VIPManager {
357+
case infrav1.CPEMID, infrav1.KUBEVIPID:
358358
controlPlaneEndpoint, _ = r.PacketClient.GetIPByClusterIdentifier(
359359
ctx,
360360
machineScope.Cluster.Namespace,
@@ -368,9 +368,7 @@ func (r *PacketMachineReconciler) reconcile(ctx context.Context, machineScope *s
368368
addrs = append(addrs, a)
369369
}
370370
controlPlaneEndpointAddress = controlPlaneEndpoint.GetAddress()
371-
case machineScope.PacketCluster.Spec.VIPManager == "KUBE_VIP":
372-
controlPlaneEndpointAddress = controlPlaneEndpoint.GetAddress()
373-
case machineScope.PacketCluster.Spec.VIPManager == emlb.EMLBVIPID:
371+
case infrav1.EMLBVIPID:
374372
controlPlaneEndpointAddress = machineScope.Cluster.Spec.ControlPlaneEndpoint.Host
375373
cpemLBConfig = "emlb:///" + machineScope.PacketCluster.Spec.Metro
376374
emlbID = machineScope.PacketCluster.Annotations["equinix.com/loadbalancerID"]
@@ -406,7 +404,7 @@ func (r *PacketMachineReconciler) reconcile(ctx context.Context, machineScope *s
406404
machineScope.SetProviderID(dev.GetId())
407405
machineScope.SetInstanceStatus(infrav1.PacketResourceStatus(dev.GetState()))
408406

409-
if machineScope.PacketCluster.Spec.VIPManager == "KUBE_VIP" {
407+
if machineScope.PacketCluster.Spec.VIPManager == infrav1.KUBEVIPID {
410408
if err := r.PacketClient.EnsureNodeBGPEnabled(ctx, dev.GetId()); err != nil {
411409
// Do not treat an error enabling bgp on machine as fatal
412410
return ctrl.Result{RequeueAfter: time.Second * 20}, fmt.Errorf("failed to enable bgp on machine %s: %w", machineScope.Name(), err)
@@ -428,7 +426,7 @@ func (r *PacketMachineReconciler) reconcile(ctx context.Context, machineScope *s
428426
log.Info("Machine instance is active", "instance-id", machineScope.ProviderID())
429427

430428
switch {
431-
case machineScope.PacketCluster.Spec.VIPManager == "CPEM":
429+
case machineScope.PacketCluster.Spec.VIPManager == infrav1.CPEMID:
432430
controlPlaneEndpoint, _ = r.PacketClient.GetIPByClusterIdentifier(
433431
ctx,
434432
machineScope.Cluster.Namespace,
@@ -443,7 +441,7 @@ func (r *PacketMachineReconciler) reconcile(ctx context.Context, machineScope *s
443441
return ctrl.Result{RequeueAfter: time.Second * 20}, nil
444442
}
445443
}
446-
case machineScope.PacketCluster.Spec.VIPManager == emlb.EMLBVIPID:
444+
case machineScope.PacketCluster.Spec.VIPManager == infrav1.EMLBVIPID:
447445
if machineScope.IsControlPlane() {
448446
// Create new EMLB object
449447
lb := emlb.NewEMLB(r.PacketClient.GetConfig().DefaultHeader["X-Auth-Token"], machineScope.PacketCluster.Spec.ProjectID, machineScope.PacketCluster.Spec.Metro)
@@ -545,7 +543,7 @@ func (r *PacketMachineReconciler) reconcileDelete(ctx context.Context, machineSc
545543
return fmt.Errorf("%w: %s", errMissingDevice, packetmachine.Name)
546544
}
547545

548-
if machineScope.PacketCluster.Spec.VIPManager == emlb.EMLBVIPID {
546+
if machineScope.PacketCluster.Spec.VIPManager == infrav1.EMLBVIPID {
549547
// Create new EMLB object
550548
lb := emlb.NewEMLB(r.PacketClient.GetConfig().DefaultHeader["X-Auth-Token"], machineScope.PacketCluster.Spec.ProjectID, packetmachine.Spec.Metro)
551549

internal/emlb/emlb.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,6 @@ const (
4949
loadBalancerPoolIDAnnotation = "equinix.com/loadbalancerpoolID"
5050
// loadBalancerPoolOriginIDAnnotation is the anotation key representing the origin ID of a PacketMachine.
5151
loadBalancerOriginIDAnnotation = "equinix.com/loadbalanceroriginID"
52-
// EMLBVIPID is the stringused to refer to the EMLB load balancer and VIP Manager type.
53-
EMLBVIPID = "EMLB"
5452
// loadbalancerTokenExchangeURL is the default URL to use for Token Exchange to talk to the Equinix Metal Load Balancer API.
5553
loadbalancerTokenExchnageURL = "https://iam.metalctrl.io/api-keys/exchange" //nolint:gosec
5654
)

0 commit comments

Comments
 (0)