DirectorySecurity AdvisoriesPricing
Sign in
Directory
grafana-pyroscope logoHELM

grafana-pyroscope

Helm chart
Last changed
Request a free trial

Contact our team to test out this Helm chart and related images for free. Please also indicate any other images you would like to evaluate.

Overview
Chart tags
Default values
Chart metadata
Images

Tag:
Compare:

1
# Default values for pyroscope.
2
# This is a YAML-formatted file.
3
# Declare variables to be passed into your templates.
4
global:
5
# -- Overrides the Docker registry globally for all images
6
imageRegistry: null
7
pyroscope:
8
replicaCount: 1
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.
13
image:
14
registry: ''
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.
20
extraArgs:
21
log.level: debug
22
# -- Labels added to every pyroscope pod. A component can set its own
23
# `extraLabels` under `pyroscope.components.<name>` to add or override labels.
24
extraLabels: {}
25
extraEnvVars: {}
26
# The following environment variables are set by the Helm chart.
27
# JAEGER_AGENT_HOST: jaeger-agent.jaeger.svc.cluster.local.
28
29
extraCustomEnvVars: {}
30
# The following environment variables raw form.
31
# - name: MY_NODE_NAME
32
# valueFrom:
33
# fieldRef:
34
# fieldPath: spec.nodeName
35
36
# -- Environment variables from secrets or configmaps to add to the pods
37
extraEnvFrom: []
38
imagePullSecrets: []
39
dnsPolicy: ClusterFirst
40
initContainers: []
41
extraContainers: []
42
nameOverride: ""
43
fullnameOverride: ""
44
rbac:
45
# -- Whether to create RBAC resources
46
create: true
47
serviceAccount:
48
# Specifies whether a service account should be created
49
create: true
50
# Annotations to add to the service account
51
annotations: {}
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
54
name: ""
55
podAnnotations:
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"
65
podSecurityContext:
66
fsGroup: 10001
67
runAsUser: 10001
68
runAsNonRoot: true
69
podDisruptionBudget:
70
enabled: true
71
maxUnavailable: 1
72
securityContext: {}
73
# capabilities:
74
# drop:
75
# - ALL
76
# readOnlyRootFilesystem: true
77
# runAsNonRoot: true
78
# runAsUser: 1000
79
80
service:
81
type: ClusterIP
82
port: 4040
83
port_name: http2
84
scheme: HTTP
85
annotations: {}
86
headlessAnnotations: {}
87
memberlist:
88
port: 7946
89
port_name: memberlist
90
grpc:
91
port: 9095
92
port_name: grpc
93
metastore:
94
port: 9099
95
port_name: raft
96
resources: {}
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'.
101
#
102
# limits:
103
# cpu: 100m
104
# memory: 128Mi
105
# requests:
106
# cpu: 100m
107
# memory: 128Mi
108
109
nodeSelector: {}
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
116
persistence:
117
enabled: false
118
accessModes:
119
- ReadWriteOnce
120
size: 10Gi
121
annotations: {}
122
# selector:
123
# matchLabels:
124
# app.kubernetes.io/name: pyroscope
125
# subPath: ""
126
# existingClaim:
127
128
metastore:
129
# subPath to use of the data volume for the metastore persistence.
130
subPath: .metastore
131
extraVolumes: []
132
# - name: backup-volume
133
# emptydir: {}
134
135
extraVolumeMounts: []
136
# - name: testing
137
# mountPath: /var/lib/testing
138
# readOnly: false
139
# - name: test-volume
140
# mountPath: /var/tmp/test-volume
141
# existingClaim: test-volume
142
# readOnly: false
143
144
tolerations: []
145
affinity: {}
146
# Override the PodPriorityClass
147
# priorityClassName: high
148
149
# run specific components separately
150
components: {}
151
# -- Allows to override Pyroscope's configuration using structured format.
152
structuredConfig: {}
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)
155
config: |
156
{{- if .Values.minio.enabled }}
157
storage:
158
backend: s3
159
s3:
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 }}
164
insecure: true
165
{{- end }}
166
# -- Allows to add tenant specific overrides to the default limit configuration.
167
tenantOverrides: {}
168
# "foo":
169
# ingestion_rate_mb: 1
170
# ingestion_burst_size_mb: 2
171
# -- Grafana Agent Configuration.
172
architecture:
173
storage:
174
# -- (bool) Enable v1 storage layer.
175
v1: false
176
# -- (bool) Enable v2 storage layer.
177
v2: true
178
migration:
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.
180
ingesterWeight: 1.0
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: {}
187
# limits: {}
188
# requests: {}
189
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
192
microservices:
193
# -- (bool) Enable micro-services deployment mode. This is recommend for larger scale deployment and allow right size each aspect of Pyroscope.
194
enabled: false
195
# -- (string) Memberlist cluster label that will be used for all members of this cluster
196
clusterLabelSuffix: -micro-services
197
# -- @ignored
198
# Not useful to be indivually exposed
199
v1:
200
querier:
201
kind: Deployment
202
replicaCount: 3
203
resources:
204
limits:
205
memory: 1Gi
206
requests:
207
memory: 256Mi
208
cpu: 1
209
extraArgs:
210
store-gateway.sharding-ring.replication-factor: "3"
211
query-frontend:
212
kind: Deployment
213
replicaCount: 2
214
resources:
215
limits:
216
memory: 1Gi
217
requests:
218
memory: 256Mi
219
cpu: 100m
220
query-scheduler:
221
kind: Deployment
222
replicaCount: 2
223
resources:
224
limits:
225
memory: 1Gi
226
requests:
227
memory: 256Mi
228
cpu: 100m
229
distributor:
230
kind: Deployment
231
replicaCount: 2
232
resources:
233
limits:
234
memory: 1Gi
235
requests:
236
memory: 256Mi
237
cpu: 500m
238
ingester:
239
kind: StatefulSet
240
replicaCount: 3
241
terminationGracePeriodSeconds: 600
242
resources:
243
limits:
244
memory: 16Gi
245
requests:
246
memory: 8Gi
247
cpu: 1
248
compactor:
249
kind: StatefulSet
250
replicaCount: 3
251
terminationGracePeriodSeconds: 1200
252
persistence:
253
enabled: false
254
resources:
255
limits:
256
memory: 16Gi
257
requests:
258
memory: 8Gi
259
cpu: 1
260
store-gateway:
261
kind: StatefulSet
262
replicaCount: 3
263
persistence:
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
266
enabled: false
267
resources:
268
limits:
269
memory: 16Gi
270
requests:
271
memory: 8Gi
272
cpu: 1
273
readinessProbe:
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.
276
#
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
280
extraArgs:
281
store-gateway.sharding-ring.replication-factor: "3"
282
tenant-settings:
283
kind: Deployment
284
replicaCount: 1
285
resources:
286
limits:
287
memory: 4Gi
288
requests:
289
memory: 16Mi
290
cpu: 0.1
291
ad-hoc-profiles:
292
kind: Deployment
293
replicaCount: 1
294
resources:
295
limits:
296
memory: 4Gi
297
requests:
298
memory: 16Mi
299
cpu: 0.1
300
# -- @ignored
301
# Not useful to be indivually exposed
302
v2:
303
query-backend:
304
kind: Deployment
305
replicaCount: 3
306
resources:
307
limits:
308
memory: 1Gi
309
requests:
310
memory: 256Mi
311
cpu: 1
312
query-frontend:
313
kind: Deployment
314
replicaCount: 2
315
resources:
316
limits:
317
memory: 1Gi
318
requests:
319
memory: 256Mi
320
cpu: 100m
321
distributor:
322
kind: Deployment
323
replicaCount: 2
324
resources:
325
limits:
326
memory: 1Gi
327
requests:
328
memory: 256Mi
329
cpu: 500m
330
segment-writer:
331
kind: StatefulSet
332
replicaCount: 3
333
terminationGracePeriodSeconds: 600
334
resources:
335
limits:
336
memory: 4Gi
337
requests:
338
memory: 2Gi
339
cpu: 1
340
compaction-worker:
341
kind: StatefulSet
342
replicaCount: 3
343
terminationGracePeriodSeconds: 1200
344
persistence:
345
enabled: false
346
resources:
347
limits:
348
memory: 2Gi
349
requests:
350
memory: 1Gi
351
cpu: 1
352
metastore:
353
kind: StatefulSet
354
replicaCount: 3
355
terminationGracePeriodSeconds: 1200
356
persistence:
357
enabled: false
358
resources:
359
limits:
360
memory: 2Gi
361
requests:
362
memory: 1Gi
363
cpu: 1
364
extraArgs:
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
370
tenant-settings:
371
kind: Deployment
372
replicaCount: 1
373
resources:
374
limits:
375
memory: 256Mi
376
requests:
377
memory: 16Mi
378
cpu: 0.1
379
ad-hoc-profiles:
380
kind: Deployment
381
replicaCount: 1
382
resources:
383
limits:
384
memory: 256Mi
385
requests:
386
memory: 16Mi
387
cpu: 0.1
388
admin:
389
kind: Deployment
390
replicaCount: 1
391
resources:
392
limits:
393
memory: 256Mi
394
requests:
395
memory: 16Mi
396
cpu: 0.1
397
# -------------------------------------
398
# Configuration for `alloy` child chart
399
# -------------------------------------
400
alloy:
401
enabled: true
402
controller:
403
type: "statefulset"
404
replicas: 1
405
podAnnotations:
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'
414
alloy:
415
stabilityLevel: "public-preview" # This needs to be set for some of our resources until verison v1.2 is released
416
configMap:
417
create: false
418
name: alloy-config-pyroscope
419
clustering:
420
enabled: true
421
# -------------------------------------
422
# Configuration for `grafana-agent` child chart
423
# -------------------------------------
424
agent:
425
enabled: false
426
controller:
427
type: "statefulset"
428
replicas: 1
429
podAnnotations:
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"
436
agent:
437
configMap:
438
create: false
439
name: grafana-agent-config-pyroscope
440
clustering:
441
enabled: true
442
# -------------------------------------
443
# Configuration for `minio` child chart
444
# -------------------------------------
445
minio:
446
enabled: false
447
image:
448
repository: pgsty/silo
449
tag: RELEASE.2026-09-16T00-00-00Z
450
mcImage:
451
repository: pgsty/mc
452
tag: RELEASE.2026-09-16T00-00-00Z
453
replicas: 1
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.
457
drivesPerNode: 2
458
rootUser: grafana-pyroscope
459
rootPassword: supersecret
460
buckets:
461
- name: grafana-pyroscope-data
462
policy: none
463
purge: false
464
persistence:
465
size: 5Gi
466
resources:
467
requests:
468
cpu: 100m
469
memory: 128Mi
470
podAnnotations: {}
471
ingress:
472
enabled: false
473
className: ""
474
pathType: ImplementationSpecific
475
# Additional labels to add to the ingress resource
476
labels: {}
477
# Additional annotations to add to the ingress resource
478
annotations: {}
479
# hosts:
480
# - localhost
481
# tls:
482
# - secretName: certificate
483
httpRoute:
484
enabled: false
485
gateway:
486
name: ""
487
namespace: ""
488
# -- Optional to specify listener's name.
489
sectionName: null
490
# -- Additional labels to add to HTTPRoute resource.
491
labels: {}
492
# -- Additional annotations to add to HTTPRoute resource.
493
annotations: {}
494
hostnames: []
495
# -- Timeout settings to add to each rule in HTTPRoute resource.
496
# https://gateway-api.sigs.k8s.io/reference/spec/#httproutetimeouts.
497
timeouts: {}
498
# request: 0s
499
# ServiceMonitor configuration
500
serviceMonitor:
501
# -- If enabled, ServiceMonitor resources for Prometheus Operator are created
502
enabled: false
503
# -- Namespace selector for ServiceMonitor resources
504
namespaceSelector: {}
505
# -- Optional expressions to match on
506
matchExpressions: []
507
# - key: prometheus.io/service-monitor
508
# operator: NotIn
509
# values:
510
# - "false"
511
# -- ServiceMonitor annotations
512
annotations: {}
513
# -- Additional ServiceMonitor labels
514
labels: {}
515
# -- ServiceMonitor scrape interval
516
interval: null
517
# -- ServiceMonitor scrape timeout in Go duration format (e.g. 15s)
518
scrapeTimeout: null
519
# -- ServiceMonitor relabel configs to apply to samples before scraping
520
# https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
521
relabelings: []
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
527
targetLabels: []
528
# -- ServiceMonitor will use http by default, but you can pick https as well
529
scheme: http
530
# -- ServiceMonitor will use these tlsConfig settings to make the health check requests
531
tlsConfig: null
532
# -- Array of extra K8s manifests to deploy alongside the chart
533
extraObjects: []
534
# extraObjects:
535
# - apiVersion: autoscaling.k8s.io/v1
536
# kind: VerticalPodAutoscaler
537
# metadata:
538
# name: pyroscope-distributor
539
# spec:
540
# targetRef:
541
# apiVersion: apps/v1
542
# kind: Deployment
543
# name: '{{ include "pyroscope.fullname" . }}-distributor'
544
# updatePolicy:
545
# updateMode: Auto
546

The trusted source for open source

Talk to an expert
PrivacyTerms

Product

Chainguard ContainersChainguard LibrariesChainguard VMsChainguard OS PackagesChainguard ActionsChainguard Agent SkillsIntegrationsPricing
© 2026 Chainguard, Inc. All Rights Reserved.
Chainguard® and the Chainguard logo are registered trademarks of Chainguard, Inc. in the United States and/or other countries.
The other respective trademarks mentioned on this page are owned by the respective companies and use of them does not imply any affiliation or endorsement.