50 lines
1.8 KiB
Go
50 lines
1.8 KiB
Go
// Создан: 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
|
|
}
|