Files
k8s-cilium-node-label/cmd/main.go

66 lines
1.6 KiB
Go

package main
import (
"fmt"
"time"
"git.uploadfilter24.eu/covidnetes/k8s-cilium-node-label/internal/utils"
"git.uploadfilter24.eu/covidnetes/k8s-cilium-node-label/internal"
log "github.com/sirupsen/logrus"
)
func main() {
cfg, err := internal.GenConfig()
utils.ConfigureLogger(cfg)
if err != nil {
log.WithFields(log.Fields{
"Caller": "Main",
}).Fatal(fmt.Sprintf("Error generating Config: %s", err.Error()))
}
go func() {
log.WithFields(log.Fields{
"Caller": "Main",
}).Info("Starting Health Endpoint")
internal.StartHealthEndpoint()
}()
log.WithFields(log.Fields{
"Caller": "Main",
}).Info("Entering main event loop")
for {
leases, err := internal.GetCiliumL2Leases()
if err != nil {
log.WithFields(log.Fields{
"Caller": "Main",
}).Errorf("Error getting Cilium L2 leases: %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)
}
}