feat(): switch to informer

This commit is contained in:
2026-01-19 21:55:00 +01:00
parent 702ca14eac
commit b7457839cb
5 changed files with 148 additions and 55 deletions

View File

@@ -2,6 +2,9 @@ package main
import (
"fmt"
"os"
"os/signal"
"syscall"
"time"
"git.uploadfilter24.eu/covidnetes/k8s-cilium-node-label/internal/utils"
@@ -32,34 +35,23 @@ func main() {
"Caller": "Main",
}).Info("Entering main event loop")
for {
leases, err := internal.GetCiliumL2Leases()
stopCh := make(chan struct{})
go func() {
err := internal.StartLeaseInformer(cfg, stopCh)
if err != nil {
log.WithFields(log.Fields{
"Caller": "Main",
}).Errorf("Error getting Cilium L2 leases: %s", err.Error())
log.WithFields(log.Fields{"Caller": "Main"}).Fatalf("Lease informer failed: %s", err.Error())
}
for lease := range leases {
// We should probably group here as there may be multiple leases per node
node, err := internal.GetNodeNameFromLease(leases[lease])
if err != nil {
log.WithFields(log.Fields{
"Caller": "Main",
}).Errorf("Error getting node name from Cilium L2 lease: %s", err.Error())
}
if cfg.DryRun {
log.WithFields(log.Fields{
"Caller": "Main",
}).Info(fmt.Sprintf("Dry run enabled, would label node %s with %s=true", node, cfg.CiliumLabel))
} else {
err := internal.LabelNode(node, leases[lease].Name, cfg)
if err != nil {
log.WithFields(log.Fields{
"Caller": "Main",
}).Error(fmt.Sprintf("Error labeling node: %s", err.Error()))
}
}
}
time.Sleep(5 * time.Minute)
}
}()
sigCh := make(chan os.Signal, 1)
signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
s := <-sigCh
log.WithFields(log.Fields{
"Caller": "Main",
"Signal": s.String(),
}).Info("Signal received, shutting down")
close(stopCh)
time.Sleep(2 * time.Second)
}