// Создан: 2026-04-07 // config.go — конфигурация SQS Operator из env переменных. // Все параметры читаются при старте через Load(). package config import ( "fmt" "os" ) // Config — конфигурация SQS Operator. type Config struct { // SQSExternalHost — публичный хост для SQS endpoints тенантов. // Используется в: Ingress rule host, elasticmq.conf node-address, Status.Endpoint. // dev: sqs.kube5s.ru / prod: sqs.cloud-provider.ru // Обязательный параметр — не хардкодится, чтобы переехать в другую зону без пересборки. SQSExternalHost string // ElasticMQImage — Docker образ ElasticMQ для pod тенанта. // Опциональный — если не задан, используется константа из контроллера (v1.7.1). // Позволяет обновить версию ElasticMQ без пересборки оператора. ElasticMQImage string // OperatorNamespace — namespace где запущен сам оператор. // Default: sless OperatorNamespace string } // Load читает конфигурацию из env переменных. func Load() (*Config, error) { cfg := &Config{ OperatorNamespace: "sless", } cfg.SQSExternalHost = os.Getenv("SQS_EXTERNAL_HOST") if cfg.SQSExternalHost == "" { return nil, fmt.Errorf("SQS_EXTERNAL_HOST is required (example: sqs.kube5s.ru)") } // Опциональный — если пуст, контроллер использует захардкоженную версию cfg.ElasticMQImage = os.Getenv("SQS_ELASTICMQ_IMAGE") if ns := os.Getenv("OPERATOR_NAMESPACE"); ns != "" { cfg.OperatorNamespace = ns } return cfg, nil }