Documentation
¶
Index ¶
- Constants
- Variables
- func LoadFromCLI(target *Config, flagSet *pflag.FlagSet) error
- func LoadFromEnv(target *Config) error
- func LoadFromFile(file string, target *Config) error
- func MapToLabelSelector() mapstructure.DecodeHookFuncType
- func MapToPromConfig() mapstructure.DecodeHookFuncType
- func StringToModelOrTimeDurationHookFunc() mapstructure.DecodeHookFuncType
- func ValidateConfig(config *Config) error
- type Config
- type HTTPSServerConfig
- type PrometheusCRConfig
Constants ¶
const ( DefaultListenAddr = ":8080" DefaultHttpsListenAddr = ":8443" DefaultResyncTime = 5 * time.Minute DefaultConfigFilePath string = "/conf/targetallocator.yaml" DefaultCRScrapeInterval model.Duration = model.Duration(time.Second * 30) DefaultAllocationStrategy = "consistent-hashing" DefaultFilterStrategy = "relabel-config" DefaultCollectorNotReadyGracePeriod = 30 * time.Second )
Variables ¶
var (
DefaultKubeConfigFilePath string = filepath.Join(homedir.HomeDir(), ".kube", "config")
)
var NopLogger = slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: slog.Level(math.MaxInt)}))
logger which discards all messages written to it. Replace this with slog.DiscardHandler after we require Go 1.24.
Functions ¶
func LoadFromEnv ¶ added in v0.121.0
LoadFromEnv loads configuration from environment variables.
func LoadFromFile ¶
func MapToLabelSelector ¶
func MapToLabelSelector() mapstructure.DecodeHookFuncType
MapToLabelSelector returns a DecodeHookFuncType that provides a mechanism for decoding both matchLabels and matchExpressions from camelcase to lowercase because we use yaml unmarshaling that supports lowercase field names if no `yaml` tag is defined and metav1.LabelSelector uses `json` tags. If both the camelcase and lowercase version is present, then the camelcase version takes precedence.
func MapToPromConfig ¶
func MapToPromConfig() mapstructure.DecodeHookFuncType
MapToPromConfig returns a DecodeHookFuncType that provides a mechanism for decoding promconfig.Config involving its own unmarshal logic.
func StringToModelOrTimeDurationHookFunc ¶ added in v0.122.0
func StringToModelOrTimeDurationHookFunc() mapstructure.DecodeHookFuncType
StringToModelOrTimeDurationHookFunc returns a DecodeHookFuncType that converts string to time.Duration, which can also be used as model.Duration.
func ValidateConfig ¶
ValidateConfig validates the cli and file configs together.
Types ¶
type Config ¶
type Config struct {
ListenAddr string `yaml:"listen_addr,omitempty"`
KubeConfigFilePath string `yaml:"kube_config_file_path,omitempty"`
ClusterConfig *rest.Config `yaml:"-"`
RootLogger logr.Logger `yaml:"-"`
CollectorSelector *metav1.LabelSelector `yaml:"collector_selector,omitempty"`
CollectorNamespace string `yaml:"collector_namespace,omitempty"`
PromConfig *promconfig.Config `yaml:"config"`
AllocationStrategy string `yaml:"allocation_strategy,omitempty"`
AllocationFallbackStrategy string `yaml:"allocation_fallback_strategy,omitempty"`
FilterStrategy string `yaml:"filter_strategy,omitempty"`
PrometheusCR PrometheusCRConfig `yaml:"prometheus_cr,omitempty"`
HTTPS HTTPSServerConfig `yaml:"https,omitempty"`
CollectorNotReadyGracePeriod time.Duration `yaml:"collector_not_ready_grace_period,omitempty"`
}
func CreateDefaultConfig ¶
func CreateDefaultConfig() Config
type HTTPSServerConfig ¶
type HTTPSServerConfig struct {
Enabled bool `yaml:"enabled,omitempty"`
ListenAddr string `yaml:"listen_addr,omitempty"`
CAFilePath string `yaml:"ca_file_path,omitempty"`
TLSCertFilePath string `yaml:"tls_cert_file_path,omitempty"`
TLSKeyFilePath string `yaml:"tls_key_file_path,omitempty"`
}
func (HTTPSServerConfig) NewTLSConfig ¶
func (c HTTPSServerConfig) NewTLSConfig() (*tls.Config, error)
type PrometheusCRConfig ¶
type PrometheusCRConfig struct {
Enabled bool `yaml:"enabled,omitempty"`
AllowNamespaces []string `yaml:"allow_namespaces,omitempty"`
DenyNamespaces []string `yaml:"deny_namespaces,omitempty"`
PodMonitorSelector *metav1.LabelSelector `yaml:"pod_monitor_selector,omitempty"`
PodMonitorNamespaceSelector *metav1.LabelSelector `yaml:"pod_monitor_namespace_selector,omitempty"`
ServiceMonitorSelector *metav1.LabelSelector `yaml:"service_monitor_selector,omitempty"`
ServiceMonitorNamespaceSelector *metav1.LabelSelector `yaml:"service_monitor_namespace_selector,omitempty"`
ScrapeConfigSelector *metav1.LabelSelector `yaml:"scrape_config_selector,omitempty"`
ScrapeConfigNamespaceSelector *metav1.LabelSelector `yaml:"scrape_config_namespace_selector,omitempty"`
ProbeSelector *metav1.LabelSelector `yaml:"probe_selector,omitempty"`
ProbeNamespaceSelector *metav1.LabelSelector `yaml:"probe_namespace_selector,omitempty"`
ScrapeProtocols []monitoringv1.ScrapeProtocol `yaml:"scrape_protocols,omitempty"`
ScrapeInterval model.Duration `yaml:"scrape_interval,omitempty"`
}
func (PrometheusCRConfig) GetAllowDenyLists ¶ added in v0.121.0
func (c PrometheusCRConfig) GetAllowDenyLists() (map[string]struct{}, map[string]struct{})
GetAllowDenyLists returns the allow and deny lists as maps. If the allow list is empty, it defaults to all namespaces. If the deny list is empty, it defaults to an empty map.