gateway
Configuration for the gateway
Type: object
Path: gateway
enabled
Specifies whether the gateway should be enabled
Default: false
Type: boolean
Path: gateway.enabled
replicas
Number of replicas for the gateway
Default: 1
Type: number
Path: gateway.replicas
hostAliases
hostAliases to add
Default: []
Type: list
Path: gateway.hostAliases
autoscaling
- ip: 1.2.3.4
hostnames:
- domain.tld
Type: object
Path: gateway.autoscaling
enabled
Enable autoscaling for the gateway
Default: false
Type: boolean
Path: gateway.autoscaling.enabled
minReplicas
Minimum autoscaling replicas for the gateway
Default: 1
Type: number
Path: gateway.autoscaling.minReplicas
maxReplicas
Maximum autoscaling replicas for the gateway
Default: 3
Type: number
Path: gateway.autoscaling.maxReplicas
behavior
Autoscaling behavior configuration for the gateway
Default: {}
Type: string
Path: gateway.autoscaling.behavior
targetCPUUtilizationPercentage
Target CPU utilisation percentage for the gateway
Default: 60
Type: number
Path: gateway.autoscaling.targetCPUUtilizationPercentage
targetMemoryUtilizationPercentage
Target memory utilisation percentage for the gateway
Default: None
Type: null
Path: gateway.autoscaling.targetMemoryUtilizationPercentage
verboseLogging
Enable logging of 2xx and 3xx HTTP requests
Default: true
Type: boolean
Path: gateway.verboseLogging
image
Type: object
Path: gateway.image
registry
The Docker registry for the gateway image. Overrides `global.image.registry`
Default: null
Type: string
Path: gateway.image.registry
pullSecrets
Optional list of imagePullSecrets. Overrides `global.image.pullSecrets`
Default: []
Type: list
Path: gateway.image.pullSecrets
repository
The gateway image repository
Default: nginxinc/nginx-unprivileged
Type: string
Path: gateway.image.repository
tag
The gateway image tag
Default: 1.19-alpine
Type: string
Path: gateway.image.tag
pullPolicy
The gateway image pull policy
Default: IfNotPresent
Type: string
Path: gateway.image.pullPolicy
priorityClassName
The name of the PriorityClass for gateway pods
Default: null
Type: string
Path: gateway.priorityClassName
podLabels
Labels for gateway pods
Default: {}
Type: string
Path: gateway.podLabels
podAnnotations
Annotations for gateway pods
Default: {}
Type: string
Path: gateway.podAnnotations
extraArgs
Additional CLI args for the gateway
Default: []
Type: list
Path: gateway.extraArgs
extraEnv
Environment variables to add to the gateway pods
Default: []
Type: list
Path: gateway.extraEnv
extraEnvFrom
Environment variables from secrets or configmaps to add to the gateway pods
Default: []
Type: list
Path: gateway.extraEnvFrom
extraVolumes
Volumes to add to the gateway pods
Default: []
Type: list
Path: gateway.extraVolumes
extraVolumeMounts
Volume mounts to add to the gateway pods
Default: []
Type: list
Path: gateway.extraVolumeMounts
resources
Resource requests and limits for the gateway
Default: {}
Type: string
Path: gateway.resources
terminationGracePeriodSeconds
Grace period to allow the gateway to shutdown before it is killed
Default: 30
Type: number
Path: gateway.terminationGracePeriodSeconds
topologySpreadConstraints
topologySpread for gateway pods. Passed through `tpl` and, thus, to be configured as string
@default -- Defaults to allow skew no more then 1 node per AZ
Default:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
{{- include "deep.selectorLabels" (dict "ctx" . "component" "gateway") | nindent 6 }}
Type: string
Path: gateway.topologySpreadConstraints
affinity
Affinity for gateway pods. Passed through `tpl` and, thus, to be configured as string
@default -- Hard node and soft zone anti-affinity
Default:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
{{- include "deep.selectorLabels" (dict "ctx" . "component" "gateway") | nindent 10 }}
topologyKey: kubernetes.io/hostname
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
{{- include "deep.selectorLabels" (dict "ctx" . "component" "gateway") | nindent 12 }}
topologyKey: topology.kubernetes.io/zone
Type: string
Path: gateway.affinity
nodeSelector
Node selector for gateway pods
Default: {}
Type: string
Path: gateway.nodeSelector
tolerations
Tolerations for gateway pods
Default: []
Type: list
Path: gateway.tolerations
service
Gateway service configuration
Type: object
Path: gateway.service
port
Port of the gateway service
Default: 80
Type: number
Path: gateway.service.port
type
Type of the gateway service
Default: ClusterIP
Type: string
Path: gateway.service.type
clusterIP
ClusterIP of the gateway service
Default: null
Type: string
Path: gateway.service.clusterIP
nodePort
Node port if service type is NodePort
Default: null
Type: string
Path: gateway.service.nodePort
loadBalancerIP
Load balancer IPO address if service type is LoadBalancer
Default: null
Type: string
Path: gateway.service.loadBalancerIP
annotations
Annotations for the gateway service
Default: {}
Type: string
Path: gateway.service.annotations
labels
Labels for gateway service
Default: {}
Type: string
Path: gateway.service.labels
additionalPorts
Additional ports to be opneed on gateway service (e.g. for RPC connections)
Default: {}
Type: string
Path: gateway.service.additionalPorts
traefik
config for using traefik 'IngressRoute'
Type: object
Path: gateway.traefik
apiVersion
Default: traefik.containo.us/v1alpha1
Type: string
Path: gateway.traefik.apiVersion
enabled
Specified whether an IngressRoute should be created
Default: false
Type: boolean
Path: gateway.traefik.enabled
host
Default: gateway.deep.example.com
Type: string
Path: gateway.traefik.host
entryPoints
Specify the entry points for traefik
Type: list
Path: gateway.traefik.entryPoints
0
Default: websecure
Type: string
Path: gateway.traefik.entryPoints.0
routes
Type: list
Path: gateway.traefik.routes
0
Type: object
Path: gateway.traefik.routes.0
match
Default: Host(
{{ .Values.gateway.traefik.host }}) && PathPrefix(
/deepproto.proto)
Type: string
Path: gateway.traefik.routes.0.match
kind
Default: Rule
Type: string
Path: gateway.traefik.routes.0.kind
services
Type: list
Path: gateway.traefik.routes.0.services
0
Type: object
Path: gateway.traefik.routes.0.services.0
name
Default: '{{ include "deep.fullname" . }}-distributor'
Type: string
Path: gateway.traefik.routes.0.services.0.name
port
Default: 43315
Type: number
Path: gateway.traefik.routes.0.services.0.port
scheme
Default: h2c
Type: string
Path: gateway.traefik.routes.0.services.0.scheme
1
Type: object
Path: gateway.traefik.routes.1
match
Default: Host(
{{ .Values.gateway.traefik.host }})
Type: string
Path: gateway.traefik.routes.1.match
kind
Default: Rule
Type: string
Path: gateway.traefik.routes.1.kind
services
Type: list
Path: gateway.traefik.routes.1.services
0
Type: object
Path: gateway.traefik.routes.1.services.0
name
Default: '{{ include "deep.fullname" . }}-gateway'
Type: string
Path: gateway.traefik.routes.1.services.0.name
port
Default: 80
Type: number
Path: gateway.traefik.routes.1.services.0.port
ingress
Gateway ingress configuration
Type: object
Path: gateway.ingress
enabled
Specifies whether an ingress for the gateway should be created
Default: false
Type: boolean
Path: gateway.ingress.enabled
annotations
Ingress Class Name. MAY be required for Kubernetes versions >= 1.18
ingressClassName: nginx
Annotations for the gateway ingress
Default: {}
Type: string
Path: gateway.ingress.annotations
hosts
Hosts configuration for the gateway ingress
Type: list
Path: gateway.ingress.hosts
0
Type: object
Path: gateway.ingress.hosts.0
host
Default: gateway.deep.example.com
Type: string
Path: gateway.ingress.hosts.0.host
paths
Type: list
Path: gateway.ingress.hosts.0.paths
0
Type: object
Path: gateway.ingress.hosts.0.paths.0
path
Default: /
Type: string
Path: gateway.ingress.hosts.0.paths.0.path
pathType
pathType (e.g. ImplementationSpecific, Prefix, .. etc.) might also be required by some Ingress Controllers
Default: Prefix
Type: string
Path: gateway.ingress.hosts.0.paths.0.pathType
tls
TLS configuration for the gateway ingress
Type: list
Path: gateway.ingress.tls
0
Type: object
Path: gateway.ingress.tls.0
secretName
Default: deep-gateway-tls
Type: string
Path: gateway.ingress.tls.0.secretName
hosts
Type: list
Path: gateway.ingress.tls.0.hosts
0
Default: gateway.deep.example.com
Type: string
Path: gateway.ingress.tls.0.hosts.0
basicAuth
Basic auth configuration
Type: object
Path: gateway.basicAuth
enabled
Enables basic authentication for the gateway
Default: false
Type: boolean
Path: gateway.basicAuth.enabled
username
The basic auth username for the gateway
Default: null
Type: string
Path: gateway.basicAuth.username
password
The basic auth password for the gateway
Default: null
Type: string
Path: gateway.basicAuth.password
htpasswd
Uses the specified username and password to compute a htpasswd using Sprig's `htpasswd` function.
The value is templated using `tpl`. Override this to use a custom htpasswd, e.g. in case the default causes
high CPU load.
Default:
{{ htpasswd (required "'gateway.basicAuth.username' is required" .Values.gateway.basicAuth.username) (required "'gateway.basicAuth.password' is required" .Values.gateway.basicAuth.password) }}
Type: string
Path: gateway.basicAuth.htpasswd
existingSecret
Existing basic auth secret to use. Must contain '.htpasswd'
Default: null
Type: string
Path: gateway.basicAuth.existingSecret
readinessProbe
Configures the readiness probe for the gateway
Type: object
Path: gateway.readinessProbe
httpGet
Type: object
Path: gateway.readinessProbe.httpGet
path
Default: /
Type: string
Path: gateway.readinessProbe.httpGet.path
port
Default: http-metrics
Type: string
Path: gateway.readinessProbe.httpGet.port
initialDelaySeconds
Default: 15
Type: number
Path: gateway.readinessProbe.initialDelaySeconds
timeoutSeconds
Default: 1
Type: number
Path: gateway.readinessProbe.timeoutSeconds
nginxConfig
Type: object
Path: gateway.nginxConfig
includeStatus
Default: false
Type: boolean
Path: gateway.nginxConfig.includeStatus
statusConfig
Default:
location ^~ /status {
proxy_pass http://{{ include "deep.resourceName" (dict "ctx" . "component" "query-frontend") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }}:3100$request_uri;
}
Type: string
Path: gateway.nginxConfig.statusConfig
logFormat
NGINX log format
Default:
main '$remote_addr - $remote_user [$time_local] $status '
'"$request" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
Type: string
Path: gateway.nginxConfig.logFormat
serverSnippet
Allows appending custom configuration to the server block
Default: ''
Type: string
Path: gateway.nginxConfig.serverSnippet
httpSnippet
Allows appending custom configuration to the http block
Default: ''
Type: string
Path: gateway.nginxConfig.httpSnippet
resolver
Allows overriding the DNS resolver address nginx will use
Default: ''
Type: string
Path: gateway.nginxConfig.resolver
file
Config file contents for Nginx. Passed through the `tpl` function to allow templating
@default -- See values.yaml
Default:
worker_processes 5; ## Default: 1
error_log /dev/stderr;
pid /tmp/nginx.pid;
worker_rlimit_nofile 8192;
events {
worker_connections 4096; ## Default: 1024
}
http {
client_body_temp_path /tmp/client_temp;
proxy_temp_path /tmp/proxy_temp_path;
fastcgi_temp_path /tmp/fastcgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
scgi_temp_path /tmp/scgi_temp;
proxy_http_version 1.1;
default_type application/octet-stream;
log_format {{ .Values.gateway.nginxConfig.logFormat }}
{{- if .Values.gateway.verboseLogging }}
access_log /dev/stderr main;
{{- else }}
map $status $loggable {
~^[23] 0;
default 1;
}
access_log /dev/stderr main if=$loggable;
{{- end }}
sendfile on;
tcp_nopush on;
{{- if .Values.gateway.nginxConfig.resolver }}
resolver {{ .Values.gateway.nginxConfig.resolver }};
{{- else }}
resolver {{ .Values.global.dnsService }}.{{ .Values.global.dnsNamespace }}.svc.{{ .Values.global.clusterDomain }};
{{- end }}
{{- with .Values.gateway.nginxConfig.httpSnippet }}
{{ . | nindent 2 }}
{{- end }}
server {
listen 8080;
{{- if .Values.gateway.basicAuth.enabled }}
auth_basic "deep";
auth_basic_user_file /etc/nginx/secrets/.htpasswd;
{{- end }}
location = / {
return 200 'OK';
auth_basic off;
}
location ^~ /api {
proxy_pass http://{{ include "deep.resourceName" (dict "ctx" . "component" "query-frontend") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }}:3100$request_uri;
}
location = /flush {
proxy_pass http://{{ include "deep.resourceName" (dict "ctx" . "component" "ingester") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }}:3100$request_uri;
}
location = /shutdown {
proxy_pass http://{{ include "deep.resourceName" (dict "ctx" . "component" "ingester") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }}:3100$request_uri;
}
location = /distributor/ring {
proxy_pass http://{{ include "deep.resourceName" (dict "ctx" . "component" "distributor") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }}:3100$request_uri;
}
location = /ingester/ring {
proxy_pass http://{{ include "deep.resourceName" (dict "ctx" . "component" "distributor") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }}:3100$request_uri;
}
location = /compactor/ring {
proxy_pass http://{{ include "deep.resourceName" (dict "ctx" . "component" "compactor") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }}:3100$request_uri;
}
location = /tracepoint/ring {
proxy_pass http://{{ include "deep.resourceName" (dict "ctx" . "component" "tracepoint-api") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }}:3100$request_uri;
}
{{- if .Values.gateway.nginxConfig.includeStatus }}
{{ tpl .Values.gateway.nginxConfig.statusConfig . | nindent 4 }}
{{- end }}
{{- with .Values.gateway.nginxConfig.serverSnippet }}
{{ . | nindent 4 }}
{{- end }}
}
}
Type: string
Path: gateway.nginxConfig.file