update vault integration

This commit is contained in:
2024-05-10 15:56:07 +03:00
parent 385b79d457
commit a0f87046ca
55 changed files with 828 additions and 135 deletions

View File

@@ -0,0 +1,66 @@
- name: fluent-operator
namespace: observability
create_namespace: true
chart_ref: {{ .Modules.Observability.Logging.Operator.ChartRef }}
chart_version: {{ .Modules.Observability.Logging.Operator.ChartVersion }}
{{- if and .Modules.Observability.Enabled .Modules.Observability.Logging.Enabled }}
release_state: "present"
{{- else }}
release_state: "absent"
{{- end }}
values:
# Set this to containerd or crio if you want to collect CRI format logs
containerRuntime: {{ .Orchestrator.ContainerEngine.Type }}
Kubernetes: false
operator:
initcontainer:
repository: "{{ .Modules.Observability.Logging.Operator.InitContainer.Image }}"
tag: "{{ .Modules.Observability.Logging.Operator.InitContainer.Tag }}"
resources:
limits:
cpu: 100m
memory: 100Mi
requests:
cpu: 50m
memory: 64Mi
container:
repository: "{{ .Modules.Observability.Logging.Operator.Image }}"
tag: "{{ .Modules.Observability.Logging.Operator.Tag }}"
resources:
limits:
cpu: 100m
memory: 100Mi
requests:
cpu: 100m
memory: 60Mi
imagePullSecrets: []
labels: {}
logPath:
# The operator currently assumes a Docker container runtime path for the logs as the default, for other container runtimes you can set the location explicitly below.
# crio: /var/log
containerd: /var/log
disableComponentControllers: ""
fluentbit:
crdsEnable: true
enable: false
fluentd:
crdsEnable: true
enable: false
name: fluentd
# Valid modes include "collector" and "agent".
# The "collector" mode will deploy Fluentd as a StatefulSet as before.
# The new "agent" mode will deploy Fluentd as a DaemonSet.
mode: "agent"
port: 24224
image:
repository: "{{ .Modules.Observability.Logging.Fluentd.Image }}"
tag: "{{ .Modules.Observability.Logging.Fluentd.Tag }}"
nameOverride: ""
fullnameOverride: ""
namespaceOverride: ""

View File

@@ -0,0 +1,200 @@
- name: loki
namespace: observability
create_namespace: true
chart_ref: {{ .Modules.Observability.Logging.Loki.ChartRef }}
chart_version: {{ .Modules.Observability.Logging.Loki.ChartVersion }}
{{- if and .Modules.Observability.Enabled .Modules.Observability.Logging.Enabled }}
release_state: "present"
{{- else }}
release_state: "absent"
{{- end }}
values:
loki:
image:
registry: {{ .Modules.Observability.Logging.Loki.Registry }}
repository: {{ .Modules.Observability.Logging.Loki.Image }}
tag: {{ .Modules.Observability.Logging.Loki.Tag }}
podAnnotations:
app.kubernetes.io/component: "loki"
auth_enabled: false
commonConfig:
replication_factor: 1
storage:
type: 'filesystem'
frontend:
max_outstanding_per_tenant: 10000
limits_config:
reject_old_samples: false
split_queries_by_interval: 15m
max_query_parallelism: 32
max_query_series: 10000
retention_period: {{ .Modules.Observability.Logging.Loki.Persistence.Retention }}
compactor:
compaction_interval: 10m
retention_enabled: true
retention_delete_delay: 2h
querier:
max_concurrent: 2048
query_scheduler:
max_outstanding_requests_per_tenant: 10000
rulerConfig:
storage:
type: local
local:
directory: /var/loki/rules
rule_path: /tmp/rules
alertmanager_url: {{ .Modules.Observability.Logging.Loki.AlertManagerUrl }}
singleBinary:
replicas: 1
extraVolumes:
- name: loki-default-rules
configMap:
name: loki-default-alerting-rules
extraVolumeMounts:
- name: loki-default-rules
mountPath: /var/loki/rules
write:
persistence:
volumeClaimsEnabled: true
storageClass: "{{ .Modules.Observability.Logging.Loki.Persistence.StorageClass }}"
size: {{ .Modules.Observability.Logging.Loki.Persistence.StorageSize }}
test:
enabled: false
gateway:
enabled: false
monitoring:
selfMonitoring:
enabled: false
grafanaAgent:
installOperator: false
lokiCanary:
enabled: false
rules:
enabled: true
alerting: true
additionalGroups: {}
extraObjects:
- apiVersion: v1
kind: ConfigMap
metadata:
name: loki-default-alerting-rules
labels:
loki_rule: ""
data:
loki-default-alerting-rules.yaml: |-
groups:
{{- .Modules.Observability.Logging.Loki.AdditionalRulesGroups | toString | nindent 14 -}}
- name: kube-events-alerts
rules:
- alert: FailedEventsOccured
expr: |
count(rate({logs_type="kube-events"} | json reason="reason", event_type="event_type" | event_type = `Warning` | reason = `Failed` [1h])) > 0
for: 1m
labels:
severity: critical
annotations:
alertname: FailedEventsOccured
instance: kube-cluster
jobName: kube_events
summary: Failed events occured in cluster
addDefaultUrl: "true"
- alert: OOMKilledEventsOccured
expr: |
count(rate({logs_type="kube-events"} | json reason="reason", event_type="event_type" | event_type = `Warning` | reason = `OOMKilled` [1h])) > 0
for: 1m
labels:
severity: critical
annotations:
alertname: OOMKilledEventsOccured
instance: kube-cluster
jobName: kube_events
summary: OOMKilled events occured in cluster
addDefaultUrl: "true"
- alert: EvictedEventsOccured
expr: |
count(rate({logs_type="kube-events"} | json reason="reason", event_type="event_type" | event_type = `Warning` | reason = `Evicted` [1h])) > 0
for: 1m
labels:
severity: critical
annotations:
alertname: EvictedEventsOccured
instance: kube-cluster
jobName: kube_events
summary: Evicted events occured in cluster
addDefaultUrl: "true"
- alert: ImagePullBackOffEventsOccured
expr: |
count(rate({logs_type="kube-events"} | json reason="reason", event_type="event_type" | event_type = `Warning` | reason = `ImagePullBackOff` [1h])) > 0
for: 1m
labels:
severity: critical
annotations:
alertname: ImagePullBackOffEventsOccured
instance: kube-cluster
jobName: kube_events
summary: ImagePullBackOff events occured in cluster
addDefaultUrl: "true"
- alert: BackOffEventsOccured
expr: |
count(rate({logs_type="kube-events"} | json reason="reason", event_type="event_type" | event_type = `Warning` | reason = `BackOff` [1h])) > 0
for: 1m
labels:
severity: critical
annotations:
alertname: BackOffEventsOccured
instance: kube-cluster
jobName: kube_events
summary: BackOff events occured in cluster
addDefaultUrl: "true"
sidecar:
rules:
enabled: true
# -- Label that the configmaps/secrets with rules will be marked with.
label: loki_rule
# -- Label value that the configmaps/secrets with rules will be set to.
labelValue: ""
# -- Folder into which the rules will be placed.
folder: /var/loki/rules
# -- Comma separated list of namespaces. If specified, the sidecar will search for config-maps/secrets inside these namespaces.
# Otherwise the namespace in which the sidecar is running will be used.
# It's also possible to specify 'ALL' to search in all namespaces.
searchNamespace: 'ALL'
# -- Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH request, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.
watchMethod: WATCH
# -- Search in configmap, secret, or both.
resource: both
# -- Absolute path to the shell script to execute after a configmap or secret has been reloaded.
script: null
# -- WatchServerTimeout: request to the server, asking it to cleanly close the connection after that.
# defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S.
watchServerTimeout: 60
#
# -- WatchClientTimeout: is a client-side timeout, configuring your local socket.
# If you have a network outage dropping all packets with no RST/FIN,
# this is how long your client waits before realizing & dropping the connection.
# Defaults to 66sec.
watchClientTimeout: 60
# -- Log level of the sidecar container.
logLevel: INFO

View File

@@ -0,0 +1,394 @@
- name: observability
namespace: observability
create_namespace: true
chart_ref: {{ .Modules.Observability.ChartRef }}
chart_version: {{ .Modules.Observability.ChartVersion }}
{{- if .Modules.Observability.Enabled }}
release_state: "present"
{{- else }}
release_state: "absent"
{{- end }}
values:
prometheus:
enabled: {{ .Modules.Observability.Monitoring.Enabled }}
serviceMonitor: true
image:
repository: {{ .Modules.Observability.Monitoring.Prometheus.Image }}
tag: {{ .Modules.Observability.Monitoring.Prometheus.Tag }}
pullPolicy: IfNotPresent
clustering:
enabled: false
replicas: 3
shards: 1
persistence:
enabled: true
storageClassName: "{{ .Modules.Observability.Monitoring.Prometheus.Persistence.StorageClass }}"
storageResources:
requests:
storage: {{ .Modules.Observability.Monitoring.Prometheus.Persistence.StorageSize }}
scrapeInterval: {{ .Modules.Observability.Monitoring.Prometheus.ScrapeInterval }}
retention: {{ .Modules.Observability.Monitoring.Prometheus.Persistence.Retention }}
# serviceNodePort: 30008
additionalConfigs: |
- job_name: "kubelet"
scheme: https
metrics_path: /metrics/cadvisor
tls_config:
insecure_skip_verify: true
authorization:
credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
- role: node
relabel_configs:
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
- job_name: "kubernetes-apiservers"
kubernetes_sd_configs:
- role: endpoints
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
authorization:
credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
relabel_configs:
- source_labels:
[
__meta_kubernetes_namespace,
__meta_kubernetes_service_name,
__meta_kubernetes_endpoint_port_name,
]
action: keep
regex: default;kubernetes;https
- job_name: "coredns"
kubernetes_sd_configs:
- role: endpoints
scheme: http
relabel_configs:
- source_labels:
[
__meta_kubernetes_namespace,
__meta_kubernetes_service_name,
__meta_kubernetes_endpoint_port_name,
]
action: keep
regex: kube-system;.*dns.*;metrics
- job_name: 'ingress-endpoints'
metrics_path: /probe
params:
module: [https_ok]
kubernetes_sd_configs:
- role: ingress
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- source_labels:
[
__meta_kubernetes_ingress_scheme,
__address__,
__meta_kubernetes_ingress_path,
]
regex: (.+);(.+);(.+)
replacement: https://${2}${3}
target_label: __param_target
- target_label: __address__
replacement: observability-blackbox-exporter:9115
alertManager:
enabled: {{ .Modules.Observability.Monitoring.AlertManager.Enabled }}
serviceMonitor: {{ .Modules.Observability.Monitoring.Enabled }}
enableDefaultRules: true
image:
repository: {{ .Modules.Observability.Monitoring.AlertManager.Image }}
tag: "{{ .Modules.Observability.Monitoring.AlertManager.Tag }}"
pullPolicy: IfNotPresent
# serviceNodePort: 30009
configPath: /etc/alertmanager
{{- if .Modules.Observability.Monitoring.AlertManager.AdditionalMessageTemplates }}
additionalMessageTemplates:
{{- .Modules.Observability.Monitoring.AlertManager.AdditionalMessageTemplates | toYaml | nindent 8 }}
{{- end }}
{{- if .Modules.Observability.Monitoring.AlertManager.Route }}
route:
{{- .Modules.Observability.Monitoring.AlertManager.Route | toYaml | nindent 8 }}
{{- end }}
{{- if .Modules.Observability.Monitoring.AlertManager.Receivers }}
receivers:
{{- .Modules.Observability.Monitoring.AlertManager.Receivers | toYaml | nindent 8 }}
{{- end }}
blackboxExporter:
enabled: {{ .Modules.Observability.Monitoring.Blackbox.Enabled }}
serviceMonitor: {{ .Modules.Observability.Monitoring.Enabled }}
image:
repository: {{ .Modules.Observability.Monitoring.Blackbox.Image }}
tag: "{{ .Modules.Observability.Monitoring.Blackbox.Tag }}"
pullPolicy: IfNotPresent
# serviceNodePort: 30012
configPath: /etc/blackbox_exporter
additionalModules:
kubeStateMetrics:
enabled: {{ .Modules.Observability.Monitoring.KubeState.Enabled }}
image:
repository: {{ .Modules.Observability.Monitoring.KubeState.Image }}
tag: "{{ .Modules.Observability.Monitoring.KubeState.Tag }}"
pullPolicy: IfNotPresent
resources:
requests:
cpu: 30m
memory: 120Mi
limits:
memory: 240Mi
cpu: 60m
prometheusOperator:
enabled: {{ .Modules.Observability.Monitoring.Enabled }}
image:
repository: {{ .Modules.Observability.Monitoring.Prometheus.Operator.Image }}
tag: {{ .Modules.Observability.Monitoring.Prometheus.Operator.Tag }}
pullPolicy: IfNotPresent
prometheusConfigReloader:
image:
repository: {{ .Modules.Observability.Monitoring.Prometheus.Operator.ConfigReloader.Image }}
tag: {{ .Modules.Observability.Monitoring.Prometheus.Operator.ConfigReloader.Tag }}
pullPolicy: IfNotPresent
kubeRbacProxy:
image:
repository: {{ .Modules.Observability.Monitoring.Prometheus.Operator.KubeRbacProxy.Image }}
tag: {{ .Modules.Observability.Monitoring.Prometheus.Operator.KubeRbacProxy.Tag }}
pullPolicy: IfNotPresent
nodeExporter:
enabled: {{ .Modules.Observability.Monitoring.Node.Enabled }}
image:
repository: {{ .Modules.Observability.Monitoring.Node.Image }}
tag: {{ .Modules.Observability.Monitoring.Node.Tag }}
pullPolicy: IfNotPresent
kubeEventsExporter:
enabled: {{ and .Modules.Observability.Logging.Enabled .Modules.Observability.Logging.Events.Enabled }}
image:
repository: {{ .Modules.Observability.Logging.Events.Exporter.Image }}
tag: {{ .Modules.Observability.Logging.Events.Exporter.Tag }}
pullPolicy: IfNotPresent
lokiAddress: http://loki.observability.svc.cluster.local:3100
logLevel: warn
logFormat: json
kubeQPS: 100
kubeBurst: 500
maxEventAgeSeconds: 120
metricsNamePrefix: event_exporter_
cron:
restartSchedule: "{{ .Modules.Observability.Logging.Events.Cron.Schedule }}"
image:
repository: {{ .Modules.Observability.Logging.Events.Cron.Image }}
tag: {{ .Modules.Observability.Logging.Events.Cron.Tag }}
pullPolicy: IfNotPresent
additionalRoutes:
additionalReceivers:
grafana:
enabled: {{ and .Modules.Observability.Enabled .Modules.Observability.Visualization.Grafana.Enabled }}
serviceMonitor: {{ .Modules.Observability.Monitoring.Enabled }}
domain: &grafanaDomain {{ .Modules.Observability.Visualization.Grafana.Expose.Domain }}
{{- if eq .Modules.Observability.Visualization.Grafana.Expose.Type "NodePort" }}
serviceNodePort: {{ .Modules.Observability.Visualization.Grafana.Expose.NodePortHttp }}
{{- end }}
image:
repository: {{ .Modules.Observability.Visualization.Grafana.Image }}
tag: {{ .Modules.Observability.Visualization.Grafana.Tag }}
pullPolicy: IfNotPresent
storageClassName: "{{ .Modules.Observability.Visualization.Grafana.Persistence.StorageClass }}"
storageResources:
requests:
storage: {{ .Modules.Observability.Visualization.Grafana.Persistence.StorageSize }}
config:
server: |
enable_gzip = true
root_url = {{ if .Modules.Observability.Visualization.Grafana.Expose.Tls.Enabled }}https{{ else }}http{{ end }}://{{ .Modules.Observability.Visualization.Grafana.Expose.Domain }}
security: |
admin_user = admin
admin_password = {{ .Modules.AdminPassword }}
auth: |
{{- .Modules.Observability.Visualization.Grafana.Config.Auth | toString | nindent 10 }}
authGenericAuth: |
{{- .Modules.Observability.Visualization.Grafana.Config.AuthGenericAuth | toString | nindent 10 }}
additionalDatasources:
{{- if and .Modules.Observability.Enabled .Modules.Observability.Logging.Enabled }}
- name: Kube-loki
type: loki
access: proxy
url: http://loki:3100
editable: false
basicAuth: false
isDefault: false
jsonData:
maxLines: 1000
{{- end }}
{{- if and .Modules.Observability.Enabled .Modules.Observability.Tracing.Enabled }}
- name: Kube-jaeger-query
type: jaeger
access: proxy
url: http://tempo:16686
editable: false
basicAuth: false
isDefault: false
{{- end }}
{{- if .Modules.Observability.Visualization.Grafana.Config.AdditionalDatasources }}
{{- .Modules.Observability.Visualization.Grafana.Config.AdditionalDatasources | toYaml | nindent 10 }}
{{- end }}
opentelemetryCollector:
enabled: {{ and .Modules.Observability.Enabled .Modules.Observability.Tracing.Enabled }}
serviceMonitor: true
config: |
receivers:
otlp:
protocols:
grpc:
http:
exporters:
otlphttp:
endpoint: http://tempo:4318
service:
telemetry:
logs:
level: "debug"
pipelines:
traces:
receivers: [otlp]
exporters: [otlphttp]
ingress:
{{- if eq .Modules.Observability.Visualization.Grafana.Expose.Type "ingress" }}
enabled: true
{{- else }}
enabled: false
{{- end }}
accountEmail: {{ .Modules.Additional.CertManager.AccountEmail }}
class: {{ .Modules.Additional.Ingress.Type }}
annotations:
{{- if eq .Modules.Additional.Ingress.Type "nginx" }}
nginx.ingress.kubernetes.io/proxy-buffer-size: "128k"
nginx.ingress.kubernetes.io/proxy-buffers: "4 256k"
nginx.ingress.kubernetes.io/proxy-busy-buffers-size: "256k"
{{- end }}
tls:
{{- if .Modules.Observability.Visualization.Grafana.Expose.Tls.Enabled }}
enabled: true
{{- end }}
hosts:
- host: {{ .Modules.Observability.Visualization.Grafana.Expose.Domain }}
secretName: grafana-tls
containerRuntime: {{ .Orchestrator.ContainerEngine.Type }}
fluentbit:
enable: {{ .Modules.Observability.Logging.Enabled }}
serviceMonitor: true
image:
repository: "{{ .Modules.Observability.Logging.FluentBit.Image }}"
tag: "{{ .Modules.Observability.Logging.FluentBit.Tag }}"
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/edge
operator: DoesNotExist
tolerations:
- operator: Exists
input:
tail:
enable: true
refreshIntervalSeconds: 10
memBufLimit: 100MB
bufferMaxSize: ""
path: "/var/log/containers/*.log"
skipLongLines: true
readFromHead: false
storageType: memory
pauseOnChunksOverlimit: "off"
systemd:
enable: true
systemdFilter:
enable: true
filters: []
path: "/var/log/journal"
includeKubelet: true
stripUnderscores: "off"
storageType: memory
pauseOnChunksOverlimit: "off"
nodeExporterMetrics: {}
fluentBitMetrics: {}
output:
es:
enable: false
host: "<Elasticsearch url like elasticsearch-logging-data.kubesphere-logging-system.svc>"
port: 9200
logstashPrefix: ks-logstash-log
bufferSize: 20MB
traceError: true
kafka:
enable: false
brokers: "<kafka broker list like xxx.xxx.xxx.xxx:9092,yyy.yyy.yyy.yyy:9092>"
topics: ks-log
opentelemetry: {}
opensearch:
enable: false
stdout:
enable: false
loki:
enable: true
host: loki
port: 3100
stackdriver: {}
service:
storage: {}
filter:
kubernetes:
enable: true
labels: true
annotations: true
containerd:
enable: true
systemd:
enable: true
kubeedge:
enable: false
prometheusRemoteWrite:
# Change the host to the address of a cloud-side Prometheus-compatible server that can receive Prometheus remote write data
host: "<cloud-prometheus-service-host>"
# Change the port to the port of a cloud-side Prometheus-compatible server that can receive Prometheus remote write data
port: "<cloud-prometheus-service-port>"

View File

@@ -0,0 +1,145 @@
- name: opentelemetry-operator
namespace: observability
create_namespace: true
chart_ref: {{ .Modules.Observability.Tracing.Operator.ChartRef }}
chart_version: {{ .Modules.Observability.Tracing.Operator.ChartVersion }}
{{- if and .Modules.Observability.Enabled .Modules.Observability.Tracing.Enabled }}
release_state: "present"
{{- else }}
release_state: "absent"
{{- end }}
values:
replicaCount: 1
nameOverride: ""
imagePullSecrets: []
pdb:
create: false
minAvailable: 1
maxUnavailable: ""
manager:
image:
repository: {{ .Modules.Observability.Tracing.Operator.Image }}
tag: "{{ .Modules.Observability.Tracing.Operator.Tag }}"
collectorImage:
repository: {{ .Modules.Observability.Tracing.Collector.Image }}
tag: {{ .Modules.Observability.Tracing.Collector.Tag }}
featureGates: ""
ports:
metricsPort: 8080
webhookPort: 9443
healthzPort: 8081
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 64Mi
env:
ENABLE_WEBHOOKS: "true"
serviceAccount:
create: true
annotations: {}
serviceMonitor:
enabled: true
metricsEndpoints:
- port: metrics
prometheusRule:
enabled: true
groups: []
defaultRules:
enabled: true
extraArgs: []
leaderElection:
enabled: true
verticalPodAutoscaler:
enabled: false
controlledResources: []
maxAllowed: {}
minAllowed: {}
updatePolicy:
updateMode: Auto
minReplicas: 2
rolling: false
securityContext: {}
kubeRBACProxy:
enabled: true
image:
repository: quay.io/brancz/kube-rbac-proxy
tag: v0.15.0
ports:
proxyPort: 8443
resources:
limits:
cpu: 500m
memory: 128Mi
requests:
cpu: 5m
memory: 64Mi
extraArgs: []
securityContext: {}
admissionWebhooks:
create: true
servicePort: 443
failurePolicy: Fail
secretName: ""
pods:
failurePolicy: Ignore
namePrefix: ""
timeoutSeconds: 10
namespaceSelector: {}
objectSelector: {}
certManager:
enabled: true
issuerRef: {}
certificateAnnotations: {}
issuerAnnotations: {}
autoGenerateCert:
enabled: true
recreate: true
secretAnnotations: {}
secretLabels: {}
role:
create: true
clusterRole:
create: true
affinity: {}
tolerations: []
nodeSelector: {}
topologySpreadConstraints: []
hostNetwork: false
priorityClassName: ""
securityContext:
runAsGroup: 65532
runAsNonRoot: true
runAsUser: 65532
fsGroup: 65532
testFramework:
image:
repository: busybox
tag: latest

View File

@@ -0,0 +1,79 @@
- name: tempo
namespace: observability
create_namespace: true
chart_ref: {{ .Modules.Observability.Tracing.Tempo.ChartRef }}
chart_version: {{ .Modules.Observability.Tracing.Tempo.ChartVersion }}
{{- if and .Modules.Observability.Enabled .Modules.Observability.Tracing.Enabled }}
release_state: "present"
{{- else }}
release_state: "absent"
{{- end }}
values:
replicas: 1
tempo:
repository: {{ .Modules.Observability.Tracing.Tempo.Image }}
tag: "{{ .Modules.Observability.Tracing.Tempo.Tag }}"
pullPolicy: IfNotPresent
updateStrategy: RollingUpdate
memBallastSizeMbs: 1024
multitenancyEnabled: false
reportingEnabled: false
metricsGenerator:
enabled: false
remoteWriteUrl: "http://prometheus.monitoring:9090/api/v1/write"
retention: {{ .Modules.Observability.Tracing.Tempo.Retention }}
global_overrides:
per_tenant_override_config: /conf/overrides.yaml
server:
http_listen_port: {{ .Modules.Observability.Tracing.Tempo.ListenPort }}
storage:
trace:
backend: local
local:
path: /var/tempo/traces
wal:
path: /var/tempo/wal
receivers:
otlp:
protocols:
grpc:
endpoint: "0.0.0.0:4317"
http:
endpoint: "0.0.0.0:4318"
tempoQuery:
repository: {{ .Modules.Observability.Tracing.Tempo.TempoQuery.Image }}
tag: {{ .Modules.Observability.Tracing.Tempo.TempoQuery.Tag }}
pullPolicy: IfNotPresent
enabled: true
service:
port: {{ .Modules.Observability.Tracing.Tempo.TempoQuery.ListenPort }}
ingress:
enabled: false
serviceAccount:
create: true
automountServiceAccountToken: true
service:
type: ClusterIP
serviceMonitor:
enabled: true
persistence:
enabled: true
storageClassName: {{ .Modules.Observability.Tracing.Tempo.Persistence.StorageClass }}
accessModes:
- ReadWriteOnce
size: {{ .Modules.Observability.Tracing.Tempo.Persistence.StorageSize }}
priorityClassName: null