fix(config): дефолт SQS_ENDPOINT -> https://sqs.sinefo.ru; MQTT_HOST теперь обязателен (пустой дефолт — EMQX в другом namespace)

This commit is contained in:
Repinoid
2026-10-11 19:33:15 +03:00
parent e1804c9b97
commit 26621f5d08
3 changed files with 18 additions and 9 deletions
+9 -2
View File
@@ -123,13 +123,17 @@ func Load() (*Config, error) {
LogLevel: parseLogLevel(os.Getenv("LOG_LEVEL"), slog.LevelInfo),
}
// MQTT broker URL: либо полный MQTT_BROKER_URL, либо из HOST/PORT/WS_PATH
// MQTT broker URL: либо полный MQTT_BROKER_URL, либо из HOST/PORT/WS_PATH.
// MQTT_HOST обязателен: EMQX в другом namespace платформы, дефолта нет
// (см. DefaultMQTTHost).
cfg.MQTTBrokerURL = os.Getenv("MQTT_BROKER_URL")
if cfg.MQTTBrokerURL == "" {
host := getEnv("MQTT_HOST", DefaultMQTTHost)
port := getEnv("MQTT_PORT", DefaultMQTTPort)
path := getEnv("MQTT_WS_PATH", DefaultMQTTWSPath)
cfg.MQTTBrokerURL = "ws://" + host + ":" + port + path
if host != "" {
cfg.MQTTBrokerURL = "ws://" + host + ":" + port + path
}
} else if !strings.HasPrefix(cfg.MQTTBrokerURL, "ws://") &&
!strings.HasPrefix(cfg.MQTTBrokerURL, "wss://") {
return nil, fmt.Errorf("MQTT_BROKER_URL must start with ws:// or wss://, got %q", cfg.MQTTBrokerURL)
@@ -139,6 +143,9 @@ func Load() (*Config, error) {
if cfg.IOTPGDSN == "" {
missing = append(missing, "IOT_PG_DSN")
}
if cfg.MQTTBrokerURL == "" {
missing = append(missing, "MQTT_HOST (или MQTT_BROKER_URL)")
}
if cfg.SQSAccessKey == "" {
missing = append(missing, "SQS_ACCESS_KEY")
}
+8 -6
View File
@@ -6,9 +6,9 @@ const (
// DefaultAPIPort — единственный порт контейнера: API + /health + /metrics.
DefaultAPIPort = "9090"
// DefaultSQSEndpoint — внутренний адрес shared-sqs в том же кластере Nubes.
// Обходит внешний шлюз платформы (таймауты 31-33с, MSS 1448, ~150с).
DefaultSQSEndpoint = "http://containerk8s.f1ffb134-7d16-45bd-8bef-69f6ec8ab33c.svc.cluster.local:4100"
// DefaultSQSEndpoint — публичный endpoint shared-sqs (ВМ 213), внешний доступ
// обязателен: shared-sqs живёт НЕ в кластере Nubes. Переопределяется SQS_ENDPOINT.
DefaultSQSEndpoint = "https://sqs.sinefo.ru"
// DefaultSQSQueueName — очередь телеметрии IoT.
DefaultSQSQueueName = "iot-telemetry"
@@ -21,9 +21,11 @@ const (
// DefaultSQSRegion — регион для self-hosted SQS (не важен, оставлен для SDK).
DefaultSQSRegion = "us-east-1"
// DefaultMQTTHost — внутреннее имя EMQX-контейнера на платформе.
// Реальный UUID namespace EMQX задаётся в deck-UI (MQTT_HOST) при создании.
DefaultMQTTHost = "emqx"
// DefaultMQTTHost — пусто: вменяемого дефолта нет, EMQX живёт в ДРУГОМ
// namespace платформы и доступен только по FQDN
// containerk8s.<instanceUid EMQX>.svc.cluster.local. Поэтому MQTT_HOST обязателен
// (задаётся Terraform'ом из state EMQX), иначе config.Load вернёт ошибку.
DefaultMQTTHost = ""
// DefaultMQTTPort — WebSocket-листенер EMQX (wss внутри платформы).
DefaultMQTTPort = "8083"