Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
ConfigFile string
// generic:
Address string `yaml:"address"`
InsecureAddress string `yaml:"insecure-address"`
EnableTCPQueue bool `yaml:"enable-tcp-queue"`
ExpectedBytesPerRequest int `yaml:"expected-bytes-per-request"`
MaxTCPListenerConcurrency int `yaml:"max-tcp-listener-concurrency"`
MaxTCPListenerQueue int `yaml:"max-tcp-listener-queue"`
IgnoreTrailingSlash bool `yaml:"ignore-trailing-slash"`
Insecure bool `yaml:"insecure"`
ProxyPreserveHost bool `yaml:"proxy-preserve-host"`
DevMode bool `yaml:"dev-mode"`
SupportListener string `yaml:"support-listener"`
DebugListener string `yaml:"debug-listener"`
CertPathTLS string `yaml:"tls-cert"`
KeyPathTLS string `yaml:"tls-key"`
StatusChecks *listFlag `yaml:"status-checks"`
PrintVersion bool `yaml:"version"`
MaxLoopbacks int `yaml:"max-loopbacks"`
DefaultHTTPStatus int `yaml:"default-http-status"`
PluginDir string `yaml:"plugindir"`
LoadBalancerHealthCheckInterval time.Duration `yaml:"lb-healthcheck-interval"`
ReverseSourcePredicate bool `yaml:"reverse-source-predicate"`
RemoveHopHeaders bool `yaml:"remove-hop-headers"`
RfcPatchPath bool `yaml:"rfc-patch-path"`
MaxAuditBody int `yaml:"max-audit-body"`
MaxMatcherBufferSize uint64 `yaml:"max-matcher-buffer-size"`
EnableBreakers bool `yaml:"enable-breakers"`
Breakers breakerFlags `yaml:"breaker"`
EnableRatelimiters bool `yaml:"enable-ratelimits"`
Ratelimits ratelimitFlags `yaml:"ratelimits"`
EnableRouteFIFOMetrics bool `yaml:"enable-route-fifo-metrics"`
EnableRouteLIFOMetrics bool `yaml:"enable-route-lifo-metrics"`
MetricsFlavour *listFlag `yaml:"metrics-flavour"`
FilterPlugins *pluginFlag `yaml:"filter-plugin"`
PredicatePlugins *pluginFlag `yaml:"predicate-plugin"`
DataclientPlugins *pluginFlag `yaml:"dataclient-plugin"`
MultiPlugins *pluginFlag `yaml:"multi-plugin"`
CompressEncodings *listFlag `yaml:"compress-encodings"`
// logging, metrics, profiling, tracing:
EnablePrometheusMetrics bool `yaml:"enable-prometheus-metrics"`
OpenTracing string `yaml:"opentracing"`
OpenTracingInitialSpan string `yaml:"opentracing-initial-span"`
OpenTracingExcludedProxyTags string `yaml:"opentracing-excluded-proxy-tags"`
OpenTracingDisableFilterSpans bool `yaml:"opentracing-disable-filter-spans"`
OpentracingLogFilterLifecycleEvents bool `yaml:"opentracing-log-filter-lifecycle-events"`
OpentracingLogStreamEvents bool `yaml:"opentracing-log-stream-events"`
OpentracingBackendNameTag bool `yaml:"opentracing-backend-name-tag"`
MetricsListener string `yaml:"metrics-listener"`
MetricsPrefix string `yaml:"metrics-prefix"`
EnableProfile bool `yaml:"enable-profile"`
BlockProfileRate int `yaml:"block-profile-rate"`
MutexProfileFraction int `yaml:"mutex-profile-fraction"`
MemProfileRate int `yaml:"memory-profile-rate"`
DebugGcMetrics bool `yaml:"debug-gc-metrics"`
RuntimeMetrics bool `yaml:"runtime-metrics"`
ServeRouteMetrics bool `yaml:"serve-route-metrics"`
ServeRouteCounter bool `yaml:"serve-route-counter"`
ServeHostMetrics bool `yaml:"serve-host-metrics"`
ServeHostCounter bool `yaml:"serve-host-counter"`
ServeMethodMetric bool `yaml:"serve-method-metric"`
ServeStatusCodeMetric bool `yaml:"serve-status-code-metric"`
BackendHostMetrics bool `yaml:"backend-host-metrics"`
AllFiltersMetrics bool `yaml:"all-filters-metrics"`
CombinedResponseMetrics bool `yaml:"combined-response-metrics"`
RouteResponseMetrics bool `yaml:"route-response-metrics"`
RouteBackendErrorCounters bool `yaml:"route-backend-error-counters"`
RouteStreamErrorCounters bool `yaml:"route-stream-error-counters"`
RouteBackendMetrics bool `yaml:"route-backend-metrics"`
RouteCreationMetrics bool `yaml:"route-creation-metrics"`
MetricsUseExpDecaySample bool `yaml:"metrics-exp-decay-sample"`
HistogramMetricBucketsString string `yaml:"histogram-metric-buckets"`
HistogramMetricBuckets []float64 `yaml:"-"`
DisableMetricsCompat bool `yaml:"disable-metrics-compat"`
ApplicationLog string `yaml:"application-log"`
ApplicationLogLevel log.Level `yaml:"-"`
ApplicationLogLevelString string `yaml:"application-log-level"`
ApplicationLogPrefix string `yaml:"application-log-prefix"`
ApplicationLogJSONEnabled bool `yaml:"application-log-json-enabled"`
AccessLog string `yaml:"access-log"`
AccessLogDisabled bool `yaml:"access-log-disabled"`
AccessLogJSONEnabled bool `yaml:"access-log-json-enabled"`
AccessLogStripQuery bool `yaml:"access-log-strip-query"`
SuppressRouteUpdateLogs bool `yaml:"suppress-route-update-logs"`
// route sources:
EtcdUrls string `yaml:"etcd-urls"`
EtcdPrefix string `yaml:"etcd-prefix"`
EtcdTimeout time.Duration `yaml:"etcd-timeout"`
EtcdInsecure bool `yaml:"etcd-insecure"`
EtcdOAuthToken string `yaml:"etcd-oauth-token"`
EtcdUsername string `yaml:"etcd-username"`
EtcdPassword string `yaml:"etcd-password"`
RoutesFile string `yaml:"routes-file"`
RoutesURLs *listFlag `yaml:"routes-urls"`
InlineRoutes string `yaml:"inline-routes"`
AppendFilters *defaultFiltersFlags `yaml:"default-filters-append"`
PrependFilters *defaultFiltersFlags `yaml:"default-filters-prepend"`
DisabledFilters *listFlag `yaml:"disabled-filters"`
EditRoute routeChangerConfig `yaml:"edit-route"`
CloneRoute routeChangerConfig `yaml:"clone-route"`
SourcePollTimeout int64 `yaml:"source-poll-timeout"`
WaitFirstRouteLoad bool `yaml:"wait-first-route-load"`
// Forwarded headers
ForwardedHeadersList *listFlag `yaml:"forwarded-headers"`
ForwardedHeaders net.ForwardedHeaders `yaml:"-"`
ForwardedHeadersExcludeCIDRList *listFlag `yaml:"forwarded-headers-exclude-cidrs"`
ForwardedHeadersExcludeCIDRs net.IPNets `yaml:"-"`
// host patch:
NormalizeHost bool `yaml:"normalize-host"`
HostPatch net.HostPatch `yaml:"-"`
ValidateQuery bool `yaml:"validate-query"`
ValidateQueryLog bool `yaml:"validate-query-log"`
RefusePayload multiFlag `yaml:"refuse-payload"`
// Kubernetes:
KubernetesIngress bool `yaml:"kubernetes"`
KubernetesInCluster bool `yaml:"kubernetes-in-cluster"`
KubernetesURL string `yaml:"kubernetes-url"`
KubernetesTokenFile string `yaml:"kubernetes-token-file"`
KubernetesHealthcheck bool `yaml:"kubernetes-healthcheck"`
KubernetesHTTPSRedirect bool `yaml:"kubernetes-https-redirect"`
KubernetesHTTPSRedirectCode int `yaml:"kubernetes-https-redirect-code"`
KubernetesDisableCatchAllRoutes bool `yaml:"kubernetes-disable-catchall-routes"`
KubernetesIngressClass string `yaml:"kubernetes-ingress-class"`
KubernetesRouteGroupClass string `yaml:"kubernetes-routegroup-class"`
WhitelistedHealthCheckCIDR string `yaml:"whitelisted-healthcheck-cidr"`
KubernetesPathModeString string `yaml:"kubernetes-path-mode"`
KubernetesPathMode kubernetes.PathMode `yaml:"-"`
KubernetesNamespace string `yaml:"kubernetes-namespace"`
KubernetesEnableEndpointSlices bool `yaml:"enable-kubernetes-endpointslices"`
KubernetesEnableEastWest bool `yaml:"enable-kubernetes-east-west"`
KubernetesEastWestDomain string `yaml:"kubernetes-east-west-domain"`
KubernetesEastWestRangeDomains *listFlag `yaml:"kubernetes-east-west-range-domains"`
KubernetesEastWestRangePredicatesString string `yaml:"kubernetes-east-west-range-predicates"`
KubernetesEastWestRangePredicates []*eskip.Predicate `yaml:"-"`
KubernetesOnlyAllowedExternalNames bool `yaml:"kubernetes-only-allowed-external-names"`
KubernetesAllowedExternalNames regexpListFlag `yaml:"kubernetes-allowed-external-names"`
KubernetesRedisServiceNamespace string `yaml:"kubernetes-redis-service-namespace"`
KubernetesRedisServiceName string `yaml:"kubernetes-redis-service-name"`
KubernetesRedisServicePort int `yaml:"kubernetes-redis-service-port"`
KubernetesBackendTrafficAlgorithmString string `yaml:"kubernetes-backend-traffic-algorithm"`
KubernetesBackendTrafficAlgorithm kubernetes.BackendTrafficAlgorithm `yaml:"-"`
KubernetesDefaultLoadBalancerAlgorithm string `yaml:"kubernetes-default-lb-algorithm"`
// Default filters
DefaultFiltersDir string `yaml:"default-filters-dir"`
// Auth:
EnableOAuth2GrantFlow bool `yaml:"enable-oauth2-grant-flow"`
Oauth2AuthURL string `yaml:"oauth2-auth-url"`
Oauth2TokenURL string `yaml:"oauth2-token-url"`
Oauth2RevokeTokenURL string `yaml:"oauth2-revoke-token-url"`
Oauth2TokeninfoURL string `yaml:"oauth2-tokeninfo-url"`
Oauth2TokeninfoTimeout time.Duration `yaml:"oauth2-tokeninfo-timeout"`
Oauth2TokeninfoCacheSize int `yaml:"oauth2-tokeninfo-cache-size"`
Oauth2TokeninfoCacheTTL time.Duration `yaml:"oauth2-tokeninfo-cache-ttl"`
Oauth2SecretFile string `yaml:"oauth2-secret-file"`
Oauth2ClientID string `yaml:"oauth2-client-id"`
Oauth2ClientSecret string `yaml:"oauth2-client-secret"`
Oauth2ClientIDFile string `yaml:"oauth2-client-id-file"`
Oauth2ClientSecretFile string `yaml:"oauth2-client-secret-file"`
Oauth2AuthURLParameters mapFlags `yaml:"oauth2-auth-url-parameters"`
Oauth2CallbackPath string `yaml:"oauth2-callback-path"`
Oauth2TokenintrospectionTimeout time.Duration `yaml:"oauth2-tokenintrospect-timeout"`
Oauth2AccessTokenHeaderName string `yaml:"oauth2-access-token-header-name"`
Oauth2TokeninfoSubjectKey string `yaml:"oauth2-tokeninfo-subject-key"`
Oauth2GrantTokeninfoKeys *listFlag `yaml:"oauth2-grant-tokeninfo-keys"`
Oauth2TokenCookieName string `yaml:"oauth2-token-cookie-name"`
Oauth2TokenCookieRemoveSubdomains int `yaml:"oauth2-token-cookie-remove-subdomains"`
Oauth2GrantInsecure bool `yaml:"oauth2-grant-insecure"`
WebhookTimeout time.Duration `yaml:"webhook-timeout"`
OidcSecretsFile string `yaml:"oidc-secrets-file"`
OIDCCookieValidity time.Duration `yaml:"oidc-cookie-validity"`
OidcDistributedClaimsTimeout time.Duration `yaml:"oidc-distributed-claims-timeout"`
CredentialPaths *listFlag `yaml:"credentials-paths"`
CredentialsUpdateInterval time.Duration `yaml:"credentials-update-interval"`
// TLS client certs
ClientKeyFile string `yaml:"client-tls-key"`
ClientCertFile string `yaml:"client-tls-cert"`
Certificates []tls.Certificate `yaml:"-"`
// TLS version
TLSMinVersion string `yaml:"tls-min-version"`
// TLS Config
KubernetesEnableTLS bool `yaml:"kubernetes-enable-tls"`
// API Monitoring
ApiUsageMonitoringEnable bool `yaml:"enable-api-usage-monitoring"`
ApiUsageMonitoringRealmKeys string `yaml:"api-usage-monitoring-realm-keys"`
ApiUsageMonitoringClientKeys string `yaml:"api-usage-monitoring-client-keys"`
ApiUsageMonitoringDefaultClientTrackingPattern string `yaml:"api-usage-monitoring-default-client-tracking-pattern"`
ApiUsageMonitoringRealmsTrackingPattern string `yaml:"api-usage-monitoring-realms-tracking-pattern"`
// connections, timeouts:
WaitForHealthcheckInterval time.Duration `yaml:"wait-for-healthcheck-interval"`
IdleConnsPerHost int `yaml:"idle-conns-num"`
CloseIdleConnsPeriod time.Duration `yaml:"close-idle-conns-period"`
BackendFlushInterval time.Duration `yaml:"backend-flush-interval"`
ExperimentalUpgrade bool `yaml:"experimental-upgrade"`
ExperimentalUpgradeAudit bool `yaml:"experimental-upgrade-audit"`
ReadTimeoutServer time.Duration `yaml:"read-timeout-server"`
ReadHeaderTimeoutServer time.Duration `yaml:"read-header-timeout-server"`
WriteTimeoutServer time.Duration `yaml:"write-timeout-server"`
IdleTimeoutServer time.Duration `yaml:"idle-timeout-server"`
MaxHeaderBytes int `yaml:"max-header-bytes"`
EnableConnMetricsServer bool `yaml:"enable-connection-metrics"`
TimeoutBackend time.Duration `yaml:"timeout-backend"`
KeepaliveBackend time.Duration `yaml:"keepalive-backend"`
EnableDualstackBackend bool `yaml:"enable-dualstack-backend"`
TlsHandshakeTimeoutBackend time.Duration `yaml:"tls-timeout-backend"`
ResponseHeaderTimeoutBackend time.Duration `yaml:"response-header-timeout-backend"`
ExpectContinueTimeoutBackend time.Duration `yaml:"expect-continue-timeout-backend"`
MaxIdleConnsBackend int `yaml:"max-idle-connection-backend"`
DisableHTTPKeepalives bool `yaml:"disable-http-keepalives"`
// swarm:
EnableSwarm bool `yaml:"enable-swarm"`
// redis based
SwarmRedisURLs *listFlag `yaml:"swarm-redis-urls"`
SwarmRedisPassword string `yaml:"swarm-redis-password"`
SwarmRedisHashAlgorithm string `yaml:"swarm-redis-hash-algorithm"`
SwarmRedisDialTimeout time.Duration `yaml:"swarm-redis-dial-timeout"`
SwarmRedisReadTimeout time.Duration `yaml:"swarm-redis-read-timeout"`
SwarmRedisWriteTimeout time.Duration `yaml:"swarm-redis-write-timeout"`
SwarmRedisPoolTimeout time.Duration `yaml:"swarm-redis-pool-timeout"`
SwarmRedisMinConns int `yaml:"swarm-redis-min-conns"`
SwarmRedisMaxConns int `yaml:"swarm-redis-max-conns"`
SwarmRedisEndpointsRemoteURL string `yaml:"swarm-redis-remote"`
// swim based
SwarmKubernetesNamespace string `yaml:"swarm-namespace"`
SwarmKubernetesLabelSelectorKey string `yaml:"swarm-label-selector-key"`
SwarmKubernetesLabelSelectorValue string `yaml:"swarm-label-selector-value"`
SwarmPort int `yaml:"swarm-port"`
SwarmMaxMessageBuffer int `yaml:"swarm-max-msg-buffer"`
SwarmLeaveTimeout time.Duration `yaml:"swarm-leave-timeout"`
SwarmStaticSelf string `yaml:"swarm-static-self"`
SwarmStaticOther string `yaml:"swarm-static-other"`
ClusterRatelimitMaxGroupShards int `yaml:"cluster-ratelimit-max-group-shards"`
LuaModules *listFlag `yaml:"lua-modules"`
LuaSources *listFlag `yaml:"lua-sources"`
EnableOpenPolicyAgent bool `yaml:"enable-open-policy-agent"`
OpenPolicyAgentConfigTemplate string `yaml:"open-policy-agent-config-template"`
OpenPolicyAgentEnvoyMetadata string `yaml:"open-policy-agent-envoy-metadata"`
OpenPolicyAgentCleanerInterval time.Duration `yaml:"open-policy-agent-cleaner-interval"`
OpenPolicyAgentStartupTimeout time.Duration `yaml:"open-policy-agent-startup-timeout"`
// contains filtered or unexported fields
}
Click to show internal directories.
Click to hide internal directories.