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 versions
Default values
Chart metadata
Images

Tag:

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: 1.19@sha256:4a8b20979b345d757d527b79203ca0152aada0d4cf0cfc120faf7b9327aa38be
19
extraArgs:
20
log.level: debug
21
extraLabels: {}
22
extraEnvVars: {}
23
# The following environment variables are set by the Helm chart.
24
# JAEGER_AGENT_HOST: jaeger-agent.jaeger.svc.cluster.local.
25
26
extraCustomEnvVars: {}
27
# The following environment variables raw form.
28
# - name: MY_NODE_NAME
29
# valueFrom:
30
# fieldRef:
31
# fieldPath: spec.nodeName
32
33
# -- Environment variables from secrets or configmaps to add to the pods
34
extraEnvFrom: []
35
imagePullSecrets: []
36
dnsPolicy: ClusterFirst
37
initContainers: []
38
extraContainers: []
39
nameOverride: ""
40
fullnameOverride: ""
41
serviceAccount:
42
# Specifies whether a service account should be created
43
create: true
44
# Annotations to add to the service account
45
annotations: {}
46
# The name of the service account to use.
47
# If not set and create is true, a name is generated using the fullname template
48
name: ""
49
podAnnotations:
50
# Scrapes itself see https://grafana.com/docs/pyroscope/latest/deploy-kubernetes/helm/#optional-scrape-your-own-workloads-profiles
51
profiles.grafana.com/memory.scrape: "true"
52
profiles.grafana.com/memory.port_name: http2
53
profiles.grafana.com/cpu.scrape: "true"
54
profiles.grafana.com/cpu.port_name: http2
55
profiles.grafana.com/goroutine.scrape: "true"
56
profiles.grafana.com/goroutine.port_name: http2
57
# profiles.grafana.com/block.scrape: "true"
58
# profiles.grafana.com/mutex.scrape: "true"
59
podSecurityContext:
60
fsGroup: 10001
61
runAsUser: 10001
62
runAsNonRoot: true
63
podDisruptionBudget:
64
enabled: true
65
maxUnavailable: 1
66
securityContext: {}
67
# capabilities:
68
# drop:
69
# - ALL
70
# readOnlyRootFilesystem: true
71
# runAsNonRoot: true
72
# runAsUser: 1000
73
74
service:
75
type: ClusterIP
76
port: 4040
77
port_name: http2
78
scheme: HTTP
79
annotations: {}
80
headlessAnnotations: {}
81
memberlist:
82
port: 7946
83
port_name: memberlist
84
grpc:
85
port: 9095
86
port_name: grpc
87
metastore:
88
port: 9099
89
port_name: raft
90
resources: {}
91
# We usually recommend not to specify default resources and to leave this as a conscious
92
# choice for the user. This also increases chances charts run on environments with little
93
# resources, such as Minikube. If you do want to specify resources, uncomment the following
94
# lines, adjust them as necessary, and remove the curly braces after 'resources'.
95
#
96
# Note that if memory consumption is higher than you would like, you can decrease the interval
97
# that profiles are written into blocks by setting `pyroscopedb.max-block-duration` in the `extraArgs`
98
# stanza. By default, it is set to 3h - override it, for example, as below:
99
# ```
100
# extraArgs:
101
# pyroscopedb.max-block-duration: 30m
102
# ```
103
#
104
# limits:
105
# cpu: 100m
106
# memory: 128Mi
107
# requests:
108
# cpu: 100m
109
# memory: 128Mi
110
111
nodeSelector: {}
112
# -- Topology Spread Constraints
113
topologySpreadConstraints: []
114
## ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/
115
## If you set enabled as "True", you need :
116
## - create a pv which above 10Gi and has same namespace with pyroscope
117
## - keep storageClassName same with below setting
118
persistence:
119
enabled: false
120
accessModes:
121
- ReadWriteOnce
122
size: 10Gi
123
annotations: {}
124
# selector:
125
# matchLabels:
126
# app.kubernetes.io/name: pyroscope
127
# subPath: ""
128
# existingClaim:
129
130
metastore:
131
# subPath to use of the data volume for the metastore persistence.
132
subPath: .metastore
133
shared:
134
enabled: true
135
# subPath to use of the data volume for the shared storage used as bucket replacement.
136
subPath: .shared
137
extraVolumes: []
138
# - name: backup-volume
139
# emptydir: {}
140
141
extraVolumeMounts: []
142
# - name: testing
143
# mountPath: /var/lib/testing
144
# readOnly: false
145
# - name: test-volume
146
# mountPath: /var/tmp/test-volume
147
# existingClaim: test-volume
148
# readOnly: false
149
150
tolerations: []
151
affinity: {}
152
# Override the PodPriorityClass
153
# priorityClassName: high
154
155
# run specific components separately
156
components: {}
157
# -- Allows to override Pyroscope's configuration using structured format.
158
structuredConfig: {}
159
# -- Contains Pyroscope's configuration as a string.
160
# @default -- The config depends on other values been set, details can be found in [`values.yaml`](./values.yaml)
161
config: |
162
{{- if .Values.minio.enabled }}
163
storage:
164
backend: s3
165
s3:
166
endpoint: "{{ include "pyroscope.fullname" . }}-minio:9000"
167
bucket_name: {{(index .Values.minio.buckets 0).name | quote }}
168
access_key_id: {{ .Values.minio.rootUser | quote }}
169
secret_access_key: {{ .Values.minio.rootPassword | quote }}
170
insecure: true
171
{{- end }}
172
# -- Allows to add tenant specific overrides to the default limit configuration.
173
tenantOverrides: {}
174
# "foo":
175
# ingestion_rate_mb: 1
176
# ingestion_burst_size_mb: 2
177
# -- Grafana Agent Configuration.
178
architecture:
179
storage:
180
# -- (bool) Enable v1 storage layer.
181
v1: true
182
# -- (bool) Enable v2 storage layer.
183
v2: false
184
migration:
185
# -- (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.
186
ingesterWeight: 1.0
187
# -- (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.
188
segmentWriterWeight: 1.0
189
# -- (bool) Specify a time stamp from when the v2 read path should serve traffic.
190
queryBackend: true
191
# -- (string) Specify a time stamp from when the v2 read path should serve traffic.
192
queryBackendFrom: auto
193
# -- This flag is useful for testing, it will overwrite all pods resource statements with its contents
194
overwriteResources: {}
195
# limits: {}
196
# requests: {}
197
198
# -- Deploy unified write/read services. These endpoints will can be used no matter if the helm chart is configured as single-binary or microservices
199
deployUnifiedServices: false
200
microservices:
201
# -- (bool) Enable micro-services deployment mode. This is recommend for larger scale deployment and allow right size each aspect of Pyroscope.
202
enabled: false
203
# -- (string) Memberlist cluster label that will be used for all members of this cluster
204
clusterLabelSuffix: -micro-services
205
# -- @ignored
206
# Not useful to be indivually exposed
207
v1:
208
querier:
209
kind: Deployment
210
replicaCount: 3
211
resources:
212
limits:
213
memory: 1Gi
214
requests:
215
memory: 256Mi
216
cpu: 1
217
extraArgs:
218
store-gateway.sharding-ring.replication-factor: "3"
219
query-frontend:
220
kind: Deployment
221
replicaCount: 2
222
resources:
223
limits:
224
memory: 1Gi
225
requests:
226
memory: 256Mi
227
cpu: 100m
228
query-scheduler:
229
kind: Deployment
230
replicaCount: 2
231
resources:
232
limits:
233
memory: 1Gi
234
requests:
235
memory: 256Mi
236
cpu: 100m
237
distributor:
238
kind: Deployment
239
replicaCount: 2
240
resources:
241
limits:
242
memory: 1Gi
243
requests:
244
memory: 256Mi
245
cpu: 500m
246
ingester:
247
kind: StatefulSet
248
replicaCount: 3
249
terminationGracePeriodSeconds: 600
250
resources:
251
limits:
252
memory: 16Gi
253
requests:
254
memory: 8Gi
255
cpu: 1
256
compactor:
257
kind: StatefulSet
258
replicaCount: 3
259
terminationGracePeriodSeconds: 1200
260
persistence:
261
enabled: false
262
resources:
263
limits:
264
memory: 16Gi
265
requests:
266
memory: 8Gi
267
cpu: 1
268
store-gateway:
269
kind: StatefulSet
270
replicaCount: 3
271
persistence:
272
# The store-gateway needs not need persistent storage, but we still run it as a StatefulSet
273
# This is to avoid having blocks of data being
274
enabled: false
275
resources:
276
limits:
277
memory: 16Gi
278
requests:
279
memory: 8Gi
280
cpu: 1
281
readinessProbe:
282
# The store gateway can be configured to wait on startup for ring stability to be reached before it becomes
283
# ready. See the `store-gateway.sharding-ring.wait-stability-min-duration` server argument for more information.
284
#
285
# Depending on this flag and the number of tenants + blocks that need to be synced on startup, pods can take
286
# some time to become ready. This value can be used to ensure Kubernetes waits long enough and reduce errors.
287
initialDelaySeconds: 60
288
extraArgs:
289
store-gateway.sharding-ring.replication-factor: "3"
290
tenant-settings:
291
kind: Deployment
292
replicaCount: 1
293
resources:
294
limits:
295
memory: 4Gi
296
requests:
297
memory: 16Mi
298
cpu: 0.1
299
ad-hoc-profiles:
300
kind: Deployment
301
replicaCount: 1
302
resources:
303
limits:
304
memory: 4Gi
305
requests:
306
memory: 16Mi
307
cpu: 0.1
308
# -- @ignored
309
# Not useful to be indivually exposed
310
v2:
311
query-backend:
312
kind: Deployment
313
replicaCount: 3
314
resources:
315
limits:
316
memory: 1Gi
317
requests:
318
memory: 256Mi
319
cpu: 1
320
query-frontend:
321
kind: Deployment
322
replicaCount: 2
323
resources:
324
limits:
325
memory: 1Gi
326
requests:
327
memory: 256Mi
328
cpu: 100m
329
distributor:
330
kind: Deployment
331
replicaCount: 2
332
resources:
333
limits:
334
memory: 1Gi
335
requests:
336
memory: 256Mi
337
cpu: 500m
338
segment-writer:
339
kind: StatefulSet
340
replicaCount: 3
341
terminationGracePeriodSeconds: 600
342
resources:
343
limits:
344
memory: 4Gi
345
requests:
346
memory: 2Gi
347
cpu: 1
348
compaction-worker:
349
kind: StatefulSet
350
replicaCount: 3
351
terminationGracePeriodSeconds: 1200
352
persistence:
353
enabled: false
354
resources:
355
limits:
356
memory: 2Gi
357
requests:
358
memory: 1Gi
359
cpu: 1
360
metastore:
361
kind: StatefulSet
362
replicaCount: 3
363
terminationGracePeriodSeconds: 1200
364
persistence:
365
enabled: false
366
resources:
367
limits:
368
memory: 2Gi
369
requests:
370
memory: 1Gi
371
cpu: 1
372
extraArgs:
373
# Expect 3 metastores
374
metastore.raft.bootstrap-expect-peers: 3
375
# TODO(kolesnikovae): Update defaults.
376
adaptive-placement.max-dataset-shards: 1024
377
adaptive-placement.unit-size-bytes: 131072
378
# enable cleanup of blocks beyond retention
379
metastore.index.cleanup-interval: 1m
380
metastore.snapshot-compact-on-restore: true
381
tenant-settings:
382
kind: Deployment
383
replicaCount: 1
384
resources:
385
limits:
386
memory: 256Mi
387
requests:
388
memory: 16Mi
389
cpu: 0.1
390
ad-hoc-profiles:
391
kind: Deployment
392
replicaCount: 1
393
resources:
394
limits:
395
memory: 256Mi
396
requests:
397
memory: 16Mi
398
cpu: 0.1
399
admin:
400
kind: Deployment
401
replicaCount: 1
402
resources:
403
limits:
404
memory: 256Mi
405
requests:
406
memory: 16Mi
407
cpu: 0.1
408
# -------------------------------------
409
# Configuration for `alloy` child chart
410
# -------------------------------------
411
alloy:
412
enabled: true
413
controller:
414
type: "statefulset"
415
replicas: 1
416
podAnnotations:
417
profiles.grafana.com/memory.scrape: "true"
418
profiles.grafana.com/memory.port_name: "http-metrics"
419
profiles.grafana.com/cpu.scrape: "true"
420
profiles.grafana.com/cpu.port_name: "http-metrics"
421
profiles.grafana.com/goroutine.scrape: "true"
422
profiles.grafana.com/goroutine.port_name: "http-metrics"
423
profiles.grafana.com/service_repository: 'https://github.com/grafana/alloy'
424
profiles.grafana.com/service_git_ref: 'v1.8.1'
425
alloy:
426
stabilityLevel: "public-preview" # This needs to be set for some of our resources until verison v1.2 is released
427
configMap:
428
create: false
429
name: alloy-config-pyroscope
430
clustering:
431
enabled: true
432
# -------------------------------------
433
# Configuration for `grafana-agent` child chart
434
# -------------------------------------
435
agent:
436
enabled: false
437
controller:
438
type: "statefulset"
439
replicas: 1
440
podAnnotations:
441
profiles.grafana.com/memory.scrape: "true"
442
profiles.grafana.com/memory.port_name: "http-metrics"
443
profiles.grafana.com/cpu.scrape: "true"
444
profiles.grafana.com/cpu.port_name: "http-metrics"
445
profiles.grafana.com/goroutine.scrape: "true"
446
profiles.grafana.com/goroutine.port_name: "http-metrics"
447
agent:
448
configMap:
449
create: false
450
name: grafana-agent-config-pyroscope
451
clustering:
452
enabled: true
453
# -------------------------------------
454
# Configuration for `minio` child chart
455
# -------------------------------------
456
minio:
457
enabled: false
458
replicas: 1
459
# Minio requires 2 to 16 drives for erasure code (drivesPerNode * replicas)
460
# https://docs.min.io/docs/minio-erasure-code-quickstart-guide
461
# Since we only have 1 replica, that means 2 drives must be used.
462
drivesPerNode: 2
463
rootUser: grafana-pyroscope
464
rootPassword: supersecret
465
buckets:
466
- name: grafana-pyroscope-data
467
policy: none
468
purge: false
469
persistence:
470
size: 5Gi
471
resources:
472
requests:
473
cpu: 100m
474
memory: 128Mi
475
podAnnotations: {}
476
ingress:
477
enabled: false
478
className: ""
479
pathType: ImplementationSpecific
480
# Additional labels to add to the ingress resource
481
labels: {}
482
# Additional annotations to add to the ingress resource
483
annotations: {}
484
# hosts:
485
# - localhost
486
# tls:
487
# - secretName: certificate
488
# ServiceMonitor configuration
489
serviceMonitor:
490
# -- If enabled, ServiceMonitor resources for Prometheus Operator are created
491
enabled: false
492
# -- Namespace selector for ServiceMonitor resources
493
namespaceSelector: {}
494
# -- Optional expressions to match on
495
matchExpressions: []
496
# - key: prometheus.io/service-monitor
497
# operator: NotIn
498
# values:
499
# - "false"
500
# -- ServiceMonitor annotations
501
annotations: {}
502
# -- Additional ServiceMonitor labels
503
labels: {}
504
# -- ServiceMonitor scrape interval
505
interval: null
506
# -- ServiceMonitor scrape timeout in Go duration format (e.g. 15s)
507
scrapeTimeout: null
508
# -- ServiceMonitor relabel configs to apply to samples before scraping
509
# https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
510
relabelings: []
511
# -- ServiceMonitor metric relabel configs to apply to samples before ingestion
512
# https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
513
metricRelabelings: []
514
# --ServiceMonitor will add labels from the service to the Prometheus metric
515
# https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitorspec
516
targetLabels: []
517
# -- ServiceMonitor will use http by default, but you can pick https as well
518
scheme: http
519
# -- ServiceMonitor will use these tlsConfig settings to make the health check requests
520
tlsConfig: null
521

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.