Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Metrics ¶ added in v0.8.0
type Metrics struct {
// Sets whether or not to enable the Prometheus metrics exporter
OtelPrometheusExporterEnabled bool `env:"OTEL_PROM_EXPORTER_ENABLED" envDefault:"true"`
// Sets the port which the Prometheus compatible metrics endpoint should be served on
OtelPrometheusExporterPort int `env:"OTEL_PROM_EXPORTER_PORT" envDefault:"2223"`
// Sets whether or not to enable the OTEL metrics exporter
OtelHTTPExporterEnabled bool `env:"OTEL_EXPORTER_OTLP_METRICS_ENABLED" envDefault:"false"`
}
Metrics is the configuration for configuring metrics in the interceptor.
func MustParseMetrics ¶ added in v0.8.0
func MustParseMetrics() Metrics
MustParseMetrics parses standard configs and returns the newly created config. Panics if parsing fails.
type Serving ¶
type Serving struct {
// WatchNamespace is the namespace to watch for new HTTPScaledObjects.
// Leave this empty to watch HTTPScaledObjects in all namespaces.
WatchNamespace string `env:"KEDA_HTTP_WATCH_NAMESPACE" envDefault:""`
// ProxyPort is the port that the public proxy should run on
ProxyPort int `env:"KEDA_HTTP_PROXY_PORT,required"`
// AdminPort is the port that the internal admin server should run on.
// This is the server that the external scaler will issue metrics
// requests to
AdminPort int `env:"KEDA_HTTP_ADMIN_PORT,required"`
// CacheSyncPeriod is the time interval for the controller-runtime cache to resync.
// TODO: consider removing this to use the default value, otherwise align the env var name
CacheSyncPeriod time.Duration `env:"KEDA_HTTP_SCALER_CONFIG_MAP_INFORMER_RSYNC_PERIOD" envDefault:"60m"`
// ProxyTLSEnabled is a flag to specify whether the interceptor proxy should
// be running using a TLS enabled server
ProxyTLSEnabled bool `env:"KEDA_HTTP_PROXY_TLS_ENABLED" envDefault:"false"`
// TLSCertPath is the path to read the certificate file from for the TLS server
TLSCertPath string `env:"KEDA_HTTP_PROXY_TLS_CERT_PATH" envDefault:"/certs/tls.crt"`
// TLSKeyPath is the path to read the private key file from for the TLS server
TLSKeyPath string `env:"KEDA_HTTP_PROXY_TLS_KEY_PATH" envDefault:"/certs/tls.key"`
// TLSCertStorePaths is a comma separated list of paths to read the certificate/key pairs for the TLS server
TLSCertStorePaths string `env:"KEDA_HTTP_PROXY_TLS_CERT_STORE_PATHS" envDefault:""`
// TLSSkipVerify is a boolean flag to specify whether the interceptor should skip TLS verification for upstreams
TLSSkipVerify bool `env:"KEDA_HTTP_PROXY_TLS_SKIP_VERIFY" envDefault:"false"`
// TLSPort is the port that the server should serve on if TLS is enabled
TLSPort int `env:"KEDA_HTTP_PROXY_TLS_PORT" envDefault:"8443"`
// TLSMinVersion is the minimum TLS version to accept ("1.2" or "1.3").
// If empty, the Go default is used (currently TLS 1.2).
TLSMinVersion string `env:"KEDA_HTTP_PROXY_TLS_MIN_VERSION" envDefault:""`
// TLSMaxVersion is the maximum TLS version to accept ("1.2" or "1.3").
// Defaults to the highest version supported by crypto/tls if empty.
TLSMaxVersion string `env:"KEDA_HTTP_PROXY_TLS_MAX_VERSION" envDefault:""`
// TLSCipherSuites is a comma-separated list of TLS cipher suite names
// (e.g. "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384").
// If empty, the default Go cipher suites are used.
TLSCipherSuites string `env:"KEDA_HTTP_PROXY_TLS_CIPHER_SUITES" envDefault:""`
// TLSCurvePreferences is a comma-separated list of elliptic curve names
// (e.g. "X25519,CurveP256"). If empty, the default Go curve preferences are used.
TLSCurvePreferences string `env:"KEDA_HTTP_PROXY_TLS_CURVE_PREFERENCES" envDefault:""`
// ProfilingAddr if not empty, pprof will be available on this address, assuming host:port here
ProfilingAddr string `env:"PROFILING_BIND_ADDRESS" envDefault:""`
// EnableColdStartHeader enables/disables the X-KEDA-HTTP-Cold-Start response header
EnableColdStartHeader bool `env:"KEDA_HTTP_ENABLE_COLD_START_HEADER" envDefault:"true"`
// LogRequests enables/disables logging of incoming requests
LogRequests bool `env:"KEDA_HTTP_LOG_REQUESTS" envDefault:"false"`
}
Serving is configuration for how the interceptor serves the proxy and admin server
func MustParseServing ¶
func MustParseServing() Serving
MustParseServing parses standard configs and returns the newly created config. It panics if parsing fails.
type Timeouts ¶
type Timeouts struct {
// Connect is the per-attempt TCP dial timeout (net.Dialer.Timeout)
Connect time.Duration `env:"KEDA_HTTP_CONNECT_TIMEOUT" envDefault:"500ms"`
// KeepAlive is the interval between keepalive probes
KeepAlive time.Duration `env:"KEDA_HTTP_KEEP_ALIVE" envDefault:"1s"`
// ResponseHeaderTimeout is how long to wait between when the HTTP request
// is sent to the backing app and when response headers need to arrive
ResponseHeader time.Duration `env:"KEDA_RESPONSE_HEADER_TIMEOUT" envDefault:"500ms"`
// WorkloadReplicas is how long to wait for the backing workload
// to have 1 or more replicas before connecting and sending the HTTP request.
WorkloadReplicas time.Duration `env:"KEDA_CONDITION_WAIT_TIMEOUT" envDefault:"20s"`
// ForceHTTP2 toggles whether to try to force HTTP2 for all requests
ForceHTTP2 bool `env:"KEDA_HTTP_FORCE_HTTP2" envDefault:"false"`
// MaxIdleConns is the max number of idle connections to keep in the
// interceptor's internal connection pool across all backend services.
// Increase this if you proxy to many unique backend services.
MaxIdleConns int `env:"KEDA_HTTP_MAX_IDLE_CONNS" envDefault:"1000"`
// MaxIdleConnsPerHost is the max number of idle connections to keep per backend service.
// Increase this if you observe many new connection establishments under load.
MaxIdleConnsPerHost int `env:"KEDA_HTTP_MAX_IDLE_CONNS_PER_HOST" envDefault:"200"`
// IdleConnTimeout is the timeout after which a connection in the interceptor's
// internal connection pool will be closed
IdleConnTimeout time.Duration `env:"KEDA_HTTP_IDLE_CONN_TIMEOUT" envDefault:"90s"`
// TLSHandshakeTimeout is the max amount of time the interceptor will
// wait to establish a TLS connection
TLSHandshakeTimeout time.Duration `env:"KEDA_HTTP_TLS_HANDSHAKE_TIMEOUT" envDefault:"10s"`
// ExpectContinueTimeout is the max amount of time the interceptor will wait
// for a 100 Continue response from the backend after sending request headers
// with Expect: 100-continue
ExpectContinueTimeout time.Duration `env:"KEDA_HTTP_EXPECT_CONTINUE_TIMEOUT" envDefault:"1s"`
// DialRetryTimeout caps the total time spent retrying failed dial attempts.
DialRetryTimeout time.Duration `env:"KEDA_HTTP_DIAL_RETRY_TIMEOUT" envDefault:"15s"`
}
Timeouts is the configuration for connection and HTTP timeouts
func MustParseTimeouts ¶
func MustParseTimeouts() Timeouts
MustParseTimeouts parses standard configs and returns the newly created config. It panics if parsing fails.
type Tracing ¶ added in v0.11.0
type Tracing struct {
// States whether tracing should be enabled, False by default
Enabled bool `env:"OTEL_EXPORTER_OTLP_TRACES_ENABLED" envDefault:"false"`
// Sets what tracing export to use, must be one of: console,http/protobuf, grpc
Exporter string `env:"OTEL_EXPORTER_OTLP_TRACES_PROTOCOL" envDefault:"console"`
}
Tracing is the configuration for configuring tracing through the interceptor.
func MustParseTracing ¶ added in v0.11.0
func MustParseTracing() Tracing
MustParseTracing parses standard configs and returns the newly created config. It panics if parsing fails.