diff --git a/internal/bootstrap/service_bootstrap.go b/internal/bootstrap/service_bootstrap.go index f3ffc11b..4d51d1b8 100644 --- a/internal/bootstrap/service_bootstrap.go +++ b/internal/bootstrap/service_bootstrap.go @@ -16,33 +16,10 @@ func (app *BootstrapApp) setupServices() error { app.services.ldapService = ldapService - useKubernetes := app.config.LabelProvider == "kubernetes" || - (app.config.LabelProvider == "auto" && os.Getenv("KUBERNETES_SERVICE_HOST") != "") + labelProvider, err := app.getLabelProvider() - var labelProvider service.LabelProvider - - if useKubernetes { - app.log.App.Debug().Msg("Using Kubernetes label provider") - - kubernetesService, err := service.NewKubernetesService(app.log, app.ctx, &app.wg) - - if err != nil { - return fmt.Errorf("failed to initialize kubernetes service: %w", err) - } - - app.services.kubernetesService = kubernetesService - labelProvider = kubernetesService - } else { - app.log.App.Debug().Msg("Using Docker label provider") - - dockerService, err := service.NewDockerService(app.log, app.ctx, &app.wg) - - if err != nil { - return fmt.Errorf("failed to initialize docker service: %w", err) - } - - app.services.dockerService = dockerService - labelProvider = dockerService + if err != nil { + return fmt.Errorf("failed to initialize label provider: %w", err) } accessControlsService := service.NewAccessControlsService(app.log, app.config, &labelProvider) @@ -64,3 +41,36 @@ func (app *BootstrapApp) setupServices() error { return nil } + +func (app *BootstrapApp) getLabelProvider() (service.LabelProvider, error) { + if app.config.LabelProvider == "none" { + return nil, nil + } + + useKubernetes := app.config.LabelProvider == "kubernetes" || + (app.config.LabelProvider == "auto" && os.Getenv("KUBERNETES_SERVICE_HOST") != "") + + if useKubernetes { + app.log.App.Debug().Msg("Using Kubernetes label provider") + + kubernetesService, err := service.NewKubernetesService(app.log, app.ctx, &app.wg) + + if err != nil { + return nil, fmt.Errorf("failed to initialize kubernetes service: %w", err) + } + + app.services.kubernetesService = kubernetesService + return kubernetesService, nil + } + + app.log.App.Debug().Msg("Using Docker label provider") + + dockerService, err := service.NewDockerService(app.log, app.ctx, &app.wg) + + if err != nil { + return nil, fmt.Errorf("failed to initialize docker service: %w", err) + } + + app.services.dockerService = dockerService + return dockerService, nil +} diff --git a/internal/model/config.go b/internal/model/config.go index 36548e04..d397deae 100644 --- a/internal/model/config.go +++ b/internal/model/config.go @@ -81,7 +81,7 @@ type Config struct { UI UIConfig `description:"UI customization." yaml:"ui"` LDAP LDAPConfig `description:"LDAP configuration." yaml:"ldap"` Experimental ExperimentalConfig `description:"Experimental features, use with caution." yaml:"experimental"` - LabelProvider string `description:"Label provider to use for ACLs (auto, docker, or kubernetes). auto detects the environment." yaml:"labelProvider"` + LabelProvider string `description:"Label provider to use for ACLs (auto, docker, kubernetes or none to disable). auto detects the environment." yaml:"labelProvider"` Log LogConfig `description:"Logging configuration." yaml:"log"` }