// Command flock-agent is the per-node DaemonSet binary. It owns IPAM, netns // programming, BIRD config, and nftables. M1 boots only the state store and a // placeholder unix listener. package main import ( "context" "flag" "log/slog" "os" "os/signal" "syscall" "code.fritzlab.net/fritzlab/flock/pkg/agent" ) func main() { var ( node = flag.String("node", os.Getenv("NODE_NAME"), "node name (defaults to $NODE_NAME)") statePath = flag.String("state", "/var/lib/flock/allocations.json", "path to allocations.json") socket = flag.String("socket", agent.SocketPath, "unix socket for CNI RPC") ) flag.Parse() logger := slog.New(slog.NewJSONHandler(os.Stderr, &slog.HandlerOptions{Level: slog.LevelInfo})) if *node == "" { logger.Error("--node or $NODE_NAME is required") os.Exit(2) } srv, err := agent.NewServer(agent.Config{ Node: *node, StatePath: *statePath, Socket: *socket, Logger: logger, }) if err != nil { logger.Error("init server", "err", err) os.Exit(1) } ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM) defer cancel() if err := srv.Run(ctx); err != nil { logger.Error("run", "err", err) os.Exit(1) } }