refactor(sqs-operator): переделка через Operator SDK v1.37.0
- operator-sdk init + create api (QueueService kind, group sqs, v1alpha1) - Стандартная kubebuilder структура: cmd/, internal/controller/, config/ - CRD types с kubebuilder маркерами (validation, defaults, printcolumns) - Reconciler перенесён из ручного кода в internal/controller/ - controller-gen v0.17.0 (совместимость с Go 1.26.1) - Автогенерация: deepcopy, CRD YAML, RBAC ClusterRole - Удалены все ручные файлы (controllers/, main.go, deployments/)
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
// Изменён: 2026-04-07
|
||||
// sqs_operator_config.go — конфигурация SQS Operator из env переменных.
|
||||
// Все параметры читаются при старте через Load().
|
||||
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
// SQSOperatorConfig — конфигурация SQS Operator.
|
||||
type SQSOperatorConfig 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() (*SQSOperatorConfig, error) {
|
||||
cfg := &SQSOperatorConfig{
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user