package config import ( "flag" "k8s.io/klog/v2" ) // Config holds all application configuration derived from flags. type Config struct { Port uint NodeID string RESTPort uint SnapshotFile string ConfigDir string DBConnStr string EnableCertIssuance bool WebrootPath string } // Global configuration variable. var cfg Config // InitFlags initializes and binds all command-line flags. func InitFlags() { klog.InitFlags(nil) flag.UintVar(&cfg.Port, "port", 18000, "xDS management server port") flag.StringVar(&cfg.NodeID, "node-id", "test-id", "Node ID") flag.UintVar(&cfg.RESTPort, "rest-port", 8080, "REST API server port") flag.StringVar(&cfg.SnapshotFile, "snapshot-file", "", "Optional initial snapshot JSON/YAML file") flag.StringVar(&cfg.ConfigDir, "config-dir", "data/config", "Optional directory containing multiple config files") flag.StringVar(&cfg.DBConnStr, "db", "", "Optional database connection string for config persistence") flag.BoolVar(&cfg.EnableCertIssuance, "enable-cert-issuance", false, "Enable Let's Encrypt certificate issuance on startup") flag.StringVar(&cfg.WebrootPath, "webroot-path", "data/acme", "Local path to serve the HTTP-01 challenge file (required if enabled)") } // GetConfig returns the application configuration. func GetConfig() *Config { return &cfg }