1# Default values for pyroscope.
2# This is a YAML-formatted file.
3# Declare variables to be passed into your templates.
5 # -- Overrides the Docker registry globally for all images
9 # -- Enable or disable Self profile push, useful to test
10 disableSelfProfile: true
11 # -- Kubernetes cluster domain suffix for DNS discovery
12 cluster_domain: .cluster.local.
15 repository: cgr.dev/chainguard-private/grafana-pyroscope
16 pullPolicy: IfNotPresent
17 # Allows to override the image tag, which defaults to the appVersion in the chart metadata
18 tag: 2.4.1-r0@sha256:7507cac8c2608cdb84f4844a41ee7e87efd48d54a7f1ca8fc4845f659fbfd283
19 # -- Additional command-line arguments. Set these under pyroscope.extraArgs, not pyroscope.resources.
22 # -- Labels added to every pyroscope pod. A component can set its own
23 # `extraLabels` under `pyroscope.components.<name>` to add or override labels.
26 # The following environment variables are set by the Helm chart.
27 # JAEGER_AGENT_HOST: jaeger-agent.jaeger.svc.cluster.local.
29 extraCustomEnvVars: {}
30 # The following environment variables raw form.
31 # - name: MY_NODE_NAME
34 # fieldPath: spec.nodeName
36 # -- Environment variables from secrets or configmaps to add to the pods
39 dnsPolicy: ClusterFirst
45 # -- Whether to create RBAC resources
48 # Specifies whether a service account should be created
50 # Annotations to add to the service account
52 # The name of the service account to use.
53 # If not set and create is true, a name is generated using the fullname template
56 # Scrapes itself see https://grafana.com/docs/pyroscope/latest/deploy-kubernetes/helm/#optional-scrape-your-own-workloads-profiles
57 profiles.grafana.com/memory.scrape: "true"
58 profiles.grafana.com/memory.port_name: http2
59 profiles.grafana.com/cpu.scrape: "true"
60 profiles.grafana.com/cpu.port_name: http2
61 profiles.grafana.com/goroutine.scrape: "true"
62 profiles.grafana.com/goroutine.port_name: http2
63 # profiles.grafana.com/block.scrape: "true"
64 # profiles.grafana.com/mutex.scrape: "true"
76 # readOnlyRootFilesystem: true
86 headlessAnnotations: {}
97 # We usually recommend not to specify default resources and to leave this as a conscious
98 # choice for the user. This also increases chances charts run on environments with little
99 # resources, such as Minikube. If you do want to specify resources, uncomment the following
100 # lines, adjust them as necessary, and remove the curly braces after 'resources'.
110 # -- Topology Spread Constraints
111 topologySpreadConstraints: []
112 ## ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/
113 ## If you set enabled as "True", you need :
114 ## - create a pv which above 10Gi and has same namespace with pyroscope
115 ## - keep storageClassName same with below setting
124 # app.kubernetes.io/name: pyroscope
129 # subPath to use of the data volume for the metastore persistence.
132 # - name: backup-volume
135 extraVolumeMounts: []
137 # mountPath: /var/lib/testing
139 # - name: test-volume
140 # mountPath: /var/tmp/test-volume
141 # existingClaim: test-volume
146 # Override the PodPriorityClass
147 # priorityClassName: high
149 # run specific components separately
151 # -- Allows to override Pyroscope's configuration using structured format.
153 # -- Contains Pyroscope's configuration as a string.
154 # @default -- The config depends on other values been set, details can be found in [`values.yaml`](./values.yaml)
156 {{- if .Values.minio.enabled }}
160 endpoint: "{{ include "pyroscope.fullname" . }}-minio:9000"
161 bucket_name: {{(index .Values.minio.buckets 0).name | quote }}
162 access_key_id: {{ .Values.minio.rootUser | quote }}
163 secret_access_key: {{ .Values.minio.rootPassword | quote }}
166 # -- Allows to add tenant specific overrides to the default limit configuration.
169 # ingestion_rate_mb: 1
170 # ingestion_burst_size_mb: 2
171 # -- Grafana Agent Configuration.
174 # -- (bool) Enable v1 storage layer.
176 # -- (bool) Enable v2 storage layer.
179 # -- (float) Specifies the fraction [0:1] that should be send to the v1 write path / ingester in combined mode. 0 means no traffics is sent to ingester. 1 means 100% of requests are sent to ingester.
181 # -- (float) Specifies the fraction [0:1] that should be send to the v2 write path / segment-writer in combined mode. 0 means no traffics is sent to segment-writer. 1 means 100% of requests are sent to segment-writer.
182 segmentWriterWeight: 1.0
183 # -- (string) Specify a time stamp from when the v2 read path should serve traffic. Defaults to "auto" which determines the split point from the metastore.
184 queryBackendFrom: auto
185 # -- This flag is useful for testing, it will overwrite all pods resource statements with its contents
186 overwriteResources: {}
190 # -- Deploy unified write/read services. These endpoints will can be used no matter if the helm chart is configured as single-binary or microservices
191 deployUnifiedServices: false
193 # -- (bool) Enable micro-services deployment mode. This is recommend for larger scale deployment and allow right size each aspect of Pyroscope.
195 # -- (string) Memberlist cluster label that will be used for all members of this cluster
196 clusterLabelSuffix: -micro-services
198 # Not useful to be indivually exposed
210 store-gateway.sharding-ring.replication-factor: "3"
241 terminationGracePeriodSeconds: 600
251 terminationGracePeriodSeconds: 1200
264 # The store-gateway needs not need persistent storage, but we still run it as a StatefulSet
265 # This is to avoid having blocks of data being
274 # The store gateway can be configured to wait on startup for ring stability to be reached before it becomes
275 # ready. See the `store-gateway.sharding-ring.wait-stability-min-duration` server argument for more information.
277 # Depending on this flag and the number of tenants + blocks that need to be synced on startup, pods can take
278 # some time to become ready. This value can be used to ensure Kubernetes waits long enough and reduce errors.
279 initialDelaySeconds: 60
281 store-gateway.sharding-ring.replication-factor: "3"
301 # Not useful to be indivually exposed
333 terminationGracePeriodSeconds: 600
343 terminationGracePeriodSeconds: 1200
355 terminationGracePeriodSeconds: 1200
365 # Expect 3 metastores
366 metastore.raft.bootstrap-expect-peers: 3
367 # enable cleanup of blocks beyond retention
368 metastore.index.cleanup-interval: 1m
369 metastore.snapshot-compact-on-restore: true
397# -------------------------------------
398# Configuration for `alloy` child chart
399# -------------------------------------
406 profiles.grafana.com/memory.scrape: "true"
407 profiles.grafana.com/memory.port_name: "http-metrics"
408 profiles.grafana.com/cpu.scrape: "true"
409 profiles.grafana.com/cpu.port_name: "http-metrics"
410 profiles.grafana.com/goroutine.scrape: "true"
411 profiles.grafana.com/goroutine.port_name: "http-metrics"
412 profiles.grafana.com/service_repository: 'https://github.com/grafana/alloy'
413 profiles.grafana.com/service_git_ref: 'v1.19.2'
415 stabilityLevel: "public-preview" # This needs to be set for some of our resources until verison v1.2 is released
418 name: alloy-config-pyroscope
421# -------------------------------------
422# Configuration for `grafana-agent` child chart
423# -------------------------------------
430 profiles.grafana.com/memory.scrape: "true"
431 profiles.grafana.com/memory.port_name: "http-metrics"
432 profiles.grafana.com/cpu.scrape: "true"
433 profiles.grafana.com/cpu.port_name: "http-metrics"
434 profiles.grafana.com/goroutine.scrape: "true"
435 profiles.grafana.com/goroutine.port_name: "http-metrics"
439 name: grafana-agent-config-pyroscope
442# -------------------------------------
443# Configuration for `minio` child chart
444# -------------------------------------
448 repository: pgsty/silo
449 tag: RELEASE.2026-09-16T00-00-00Z
452 tag: RELEASE.2026-09-16T00-00-00Z
454 # Minio requires 2 to 16 drives for erasure code (drivesPerNode * replicas)
455 # https://docs.min.io/docs/minio-erasure-code-quickstart-guide
456 # Since we only have 1 replica, that means 2 drives must be used.
458 rootUser: grafana-pyroscope
459 rootPassword: supersecret
461 - name: grafana-pyroscope-data
474 pathType: ImplementationSpecific
475 # Additional labels to add to the ingress resource
477 # Additional annotations to add to the ingress resource
482 # - secretName: certificate
488 # -- Optional to specify listener's name.
490 # -- Additional labels to add to HTTPRoute resource.
492 # -- Additional annotations to add to HTTPRoute resource.
495 # -- Timeout settings to add to each rule in HTTPRoute resource.
496 # https://gateway-api.sigs.k8s.io/reference/spec/#httproutetimeouts.
499# ServiceMonitor configuration
501 # -- If enabled, ServiceMonitor resources for Prometheus Operator are created
503 # -- Namespace selector for ServiceMonitor resources
504 namespaceSelector: {}
505 # -- Optional expressions to match on
507 # - key: prometheus.io/service-monitor
511 # -- ServiceMonitor annotations
513 # -- Additional ServiceMonitor labels
515 # -- ServiceMonitor scrape interval
517 # -- ServiceMonitor scrape timeout in Go duration format (e.g. 15s)
519 # -- ServiceMonitor relabel configs to apply to samples before scraping
520 # https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
522 # -- ServiceMonitor metric relabel configs to apply to samples before ingestion
523 # https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
524 metricRelabelings: []
525 # --ServiceMonitor will add labels from the service to the Prometheus metric
526 # https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitorspec
528 # -- ServiceMonitor will use http by default, but you can pick https as well
530 # -- ServiceMonitor will use these tlsConfig settings to make the health check requests
532# -- Array of extra K8s manifests to deploy alongside the chart
535# - apiVersion: autoscaling.k8s.io/v1
536# kind: VerticalPodAutoscaler
538# name: pyroscope-distributor
543# name: '{{ include "pyroscope.fullname" . }}-distributor'