DirectorySecurity AdvisoriesPricing
Sign in
Directory
community-grafana logoHELM

community-grafana

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
# $schema: ./values.schema.json
2
3
global:
4
# @schema type:[string, null]
5
# -- Overrides the Docker registry globally for all images
6
imageRegistry: null
7
# To help compatibility with other charts which use global.imagePullSecrets.
8
# Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style).
9
# Can be templated.
10
# global:
11
# imagePullSecrets:
12
# - name: pullSecret1
13
# - name: pullSecret2
14
# or
15
# global:
16
# imagePullSecrets:
17
# - pullSecret1
18
# - pullSecret2
19
imagePullSecrets: []
20
rbac:
21
create: true
22
## Use an existing ClusterRole/Role (depending on rbac.namespaced false/true)
23
# useExistingRole: name-of-some-role
24
# useExistingClusterRole: name-of-some-clusterRole
25
pspEnabled: false
26
pspUseAppArmor: false
27
namespaced: false
28
# Only has an effect if namespaced: true is set
29
namespaces: []
30
extraRoleRules: []
31
# - apiGroups: []
32
# resources: []
33
# verbs: []
34
extraClusterRoleRules: []
35
# - apiGroups: []
36
# resources: []
37
# verbs: []
38
serviceAccount:
39
create: true
40
name: ""
41
nameTest: ""
42
## ServiceAccount labels.
43
# @schema additionalProperties:{"type":"string"}
44
labels: {}
45
## Service account annotations. Can be templated.
46
# annotations:
47
# eks.amazonaws.com/role-arn: arn:aws:iam::123456789000:role/iam-role-name-here
48
49
## autoMount is deprecated in favor of automountServiceAccountToken
50
# autoMount: false
51
automountServiceAccountToken: false
52
# @schema type:[integer, null]
53
replicas: 1
54
## Create a headless service for the deployment
55
headlessService: false
56
## Should the service account be auto mounted on the pod
57
automountServiceAccountToken: true
58
## Create HorizontalPodAutoscaler object for deployment type
59
#
60
autoscaling:
61
enabled: false
62
minReplicas: 1
63
maxReplicas: 5
64
# @schema type:[string, integer, null]
65
targetCPU: "60"
66
# @schema type:[string, integer, null]
67
targetMemory: ""
68
behavior: {}
69
## See `kubectl explain poddisruptionbudget.spec` for more
70
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
71
podDisruptionBudget: {}
72
# apiVersion: ""
73
# minAvailable: 1
74
# maxUnavailable: 1
75
# unhealthyPodEvictionPolicy: IfHealthyBudget
76
77
## See `kubectl explain deployment.spec.strategy` for more
78
## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
79
# @schema skipProperties:true;additionalProperties:true
80
deploymentStrategy:
81
type: RollingUpdate
82
## The maximum time in seconds for a Deployment to make progress before it is considered to be failed.
83
## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#progress-deadline-seconds
84
# @schema type:[integer, null]
85
progressDeadlineSeconds: null
86
## Startup probe. Holds off the liveness and readiness probes until it succeeds, useful for slow starts.
87
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
88
startupProbe: {}
89
# @schema skipProperties:true;additionalProperties:true
90
readinessProbe:
91
httpGet:
92
path: /api/health
93
port: grafana
94
# @schema skipProperties:true;additionalProperties:true
95
livenessProbe:
96
httpGet:
97
path: /api/health
98
port: grafana
99
initialDelaySeconds: 60
100
timeoutSeconds: 30
101
failureThreshold: 10
102
## Use an alternate scheduler, e.g. "stork".
103
## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
104
##
105
# schedulerName: "default-scheduler"
106
image:
107
# -- The Docker registry
108
registry: cgr.dev
109
# -- Docker image repository
110
repository: chainguard-private/grafana
111
# Overrides the Grafana image tag whose default is the chart appVersion
112
tag: v13.2.4-r8
113
sha: sha256:a5a8abbed5c30966bfa62614bbc764166258dccf42e24036a5c9a4a3623763b0
114
pullPolicy: IfNotPresent
115
## Optionally specify an array of imagePullSecrets.
116
## Secrets must be manually created in the namespace.
117
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
118
## Can be templated.
119
##
120
pullSecrets: []
121
# - myRegistrKeySecretName
122
testFramework:
123
enabled: true
124
## The type of Helm hook used to run this test. Defaults to test.
125
## ref: https://helm.sh/docs/topics/charts_hooks/#the-available-hooks
126
##
127
# hookType: test
128
image:
129
# -- The Docker registry
130
registry: docker.io
131
repository: bats/bats
132
tag: "1.14.0"
133
imagePullPolicy: IfNotPresent
134
# @schema skipProperties:true;additionalProperties:true
135
securityContext:
136
runAsNonRoot: true
137
runAsUser: 472
138
runAsGroup: 472
139
seccompProfile:
140
type: RuntimeDefault
141
# @schema skipProperties:true;additionalProperties:true
142
containerSecurityContext:
143
allowPrivilegeEscalation: false
144
privileged: false
145
capabilities:
146
drop:
147
- ALL
148
seccompProfile:
149
type: RuntimeDefault
150
readOnlyRootFilesystem: true
151
resources: {}
152
# limits:
153
# cpu: 100m
154
# memory: 128Mi
155
# requests:
156
# cpu: 100m
157
# memory: 128Mi
158
# dns configuration for pod
159
# @schema type:[string, null]
160
dnsPolicy: ~
161
dnsConfig: {}
162
# nameservers:
163
# - 8.8.8.8
164
# options:
165
# - name: ndots
166
# value: "2"
167
# - name: edns0
168
169
# @schema type:[boolean, null]
170
hostUsers: ~
171
# @schema skipProperties:true;additionalProperties:true
172
securityContext:
173
runAsNonRoot: true
174
runAsUser: 472
175
runAsGroup: 472
176
fsGroup: 472
177
# @schema skipProperties:true;additionalProperties:true
178
containerSecurityContext:
179
allowPrivilegeEscalation: false
180
privileged: false
181
capabilities:
182
drop:
183
- ALL
184
seccompProfile:
185
type: RuntimeDefault
186
readOnlyRootFilesystem: true
187
# Enable creating the grafana configmap
188
createConfigmap: true
189
# Extra configmaps to mount in grafana pods
190
# Values are templated.
191
extraConfigmapMounts: []
192
# - name: certs-configmap
193
# mountPath: /etc/grafana/ssl/
194
# subPath: certificates.crt # (optional)
195
# configMap: certs-configmap
196
# readOnly: true
197
# optional: false
198
199
extraEmptyDirMounts: []
200
# - name: provisioning-notifiers
201
# mountPath: /etc/grafana/provisioning/notifiers
202
203
# Shadow `/usr/share/grafana/data/plugins-bundled` with an emptyDir so plugins
204
# listed under `plugins:` install cleanly into `/var/lib/grafana/plugins` instead
205
# of failing on the read-only bundled directory shipped in the Grafana image.
206
# Required for plugins moved out of core in Grafana 13 (e.g. `elasticsearch`,
207
# `cloudwatch`) when listed in `plugins:`. Side effect: any bundled plugin not
208
# explicitly listed in `plugins:` will not be available.
209
shadowBundledPlugins: false
210
# Apply extra labels to common labels.
211
# @schema additionalProperties:{"type":"string"}
212
extraLabels: {}
213
## Assign a PriorityClassName to pods if set
214
# priorityClassName:
215
downloadDashboardsImage:
216
# -- The Docker registry
217
registry: cgr.dev
218
repository: chainguard-private/curl
219
tag: latest
220
sha: sha256:1236b0f03d761fac7881abe08dbfc9d993d25bd2016d0fdfc644511cd78a09d1
221
pullPolicy: IfNotPresent
222
downloadDashboards:
223
env: {}
224
envFromSecret: ""
225
resources: {}
226
# @schema skipProperties:true;additionalProperties:true
227
securityContext:
228
allowPrivilegeEscalation: false
229
capabilities:
230
drop:
231
- ALL
232
seccompProfile:
233
type: RuntimeDefault
234
readOnlyRootFilesystem: true
235
envValueFrom: {}
236
# ENV_NAME:
237
# configMapKeyRef:
238
# name: configmap-name
239
# key: value_key
240
## Pod Annotations
241
# podAnnotations: {}
242
243
## ConfigMap Annotations
244
# configMapAnnotations: {}
245
# argocd.argoproj.io/sync-options: Replace=true
246
247
## Pod Labels
248
# podLabels: {}
249
podPortName: grafana
250
gossipPortName: gossip
251
## Deployment annotations
252
# annotations: {}
253
254
## Expose the grafana service to be accessed from outside the cluster (LoadBalancer service).
255
## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it.
256
## ref: http://kubernetes.io/docs/user-guide/services/
257
##
258
service:
259
enabled: true
260
type: ClusterIP
261
# Set the ip family policy to configure dual-stack see [Configure dual-stack](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services)
262
ipFamilyPolicy: ""
263
# Sets the families that should be supported and the order in which they should be applied to ClusterIP as well. Can be IPv4 and/or IPv6.
264
ipFamilies: []
265
loadBalancerIP: ""
266
loadBalancerClass: ""
267
loadBalancerSourceRanges: []
268
port: 80
269
targetPort: 3000
270
# targetPort: 4181 To be used with a proxy extraContainer
271
## Service annotations. Can be templated.
272
# @schema additionalProperties:{"type":"string"}
273
annotations: {}
274
# @schema additionalProperties:{"type":"string"}
275
labels: {}
276
portName: service
277
# Adds the appProtocol field to the service. This allows to work with istio protocol selection. Ex: "http" or "tcp"
278
appProtocol: ""
279
sessionAffinity: ""
280
# trafficDistribution allows specifying how traffic is distributed to Service endpoints.
281
# Valid values: "" (default - standard load balancing),"PreferSameZone" (K8s 1.34+), "PreferSameNode" (K8s 1.35+), "PreferClose" (deprecated, use PreferSameZone),
282
trafficDistribution: ""
283
serviceMonitor:
284
## If true, a ServiceMonitor CR is created for a prometheus operator
285
## https://github.com/coreos/prometheus-operator
286
##
287
enabled: false
288
path: /metrics
289
# namespace: monitoring (defaults to use the namespace this chart is deployed to)
290
# @schema additionalProperties:{"type":"string"}
291
labels: {}
292
# Set these to override the Prometheus global scrape interval/timeout.
293
# interval: 30s
294
# scrapeTimeout: 30s
295
# Configure scrape protocol negotiation and native histogram handling.
296
# Requires corresponding support in the Prometheus Operator CRDs and Prometheus.
297
# See: https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1.ServiceMonitorSpec
298
# scrapeProtocols: ["PrometheusProto", "OpenMetricsText1.0.0", "OpenMetricsText0.0.1", "PrometheusText0.0.4"]
299
# scrapeNativeHistograms: true
300
# scrapeClassicHistograms: false
301
# convertClassicHistogramsToNHCB: false
302
# nativeHistogramBucketLimit: 0
303
# nativeHistogramMinBucketFactor: "1.1"
304
# fallbackScrapeProtocol: PrometheusText0.0.4
305
scheme: http
306
tlsConfig: {}
307
relabelings: []
308
metricRelabelings: []
309
basicAuth: {}
310
targetLabels: []
311
extraExposePorts: []
312
# - name: keycloak
313
# port: 8080
314
# targetPort: 8080
315
316
# overrides pod.spec.hostAliases in the grafana deployment's pods
317
hostAliases: []
318
# - ip: "1.2.3.4"
319
# hostnames:
320
# - "my.host.com"
321
322
ingress:
323
enabled: false
324
# ingressClassName: nginx
325
# Values can be templated
326
# @schema additionalProperties:{"type":"string"}
327
annotations: {}
328
# kubernetes.io/ingress.class: nginx
329
# kubernetes.io/tls-acme: "true"
330
# @schema additionalProperties:{"type":"string"}
331
labels: {}
332
path: /
333
pathType: Prefix
334
hosts:
335
- chart-example.local
336
## Extra paths to prepend to every host configuration. This is useful when working with annotation based services.
337
extraPaths: []
338
# - path: /*
339
# pathType: Prefix
340
# backend:
341
# service:
342
# name: ssl-redirect
343
# port:
344
# name: use-annotation
345
346
tls: []
347
# - secretName: chart-example-tls
348
# hosts:
349
# - chart-example.local
350
# -- BETA: Configure the gateway routes for the chart here.
351
# More routes can be added by adding a dictionary key like the 'main' route.
352
# Be aware that this is an early beta of this feature,
353
# kube-prometheus-stack does not guarantee this works and is subject to change.
354
# Being BETA this can/will change in the future without notice, do not use unless you want to take that risk
355
# [[ref]](https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io%2fv1alpha2)
356
route:
357
main:
358
# -- Enables or disables the route
359
enabled: false
360
# -- Set the route apiVersion, e.g. gateway.networking.k8s.io/v1 or gateway.networking.k8s.io/v1alpha2
361
apiVersion: gateway.networking.k8s.io/v1
362
# -- Set the route kind
363
# Valid options are GRPCRoute, HTTPRoute, TCPRoute, TLSRoute, UDPRoute
364
kind: HTTPRoute
365
# @schema additionalProperties:{"type":"string"}
366
annotations: {}
367
# @schema additionalProperties:{"type":"string"}
368
labels: {}
369
hostnames: []
370
# - my-filter.example.com
371
parentRefs: []
372
# - name: acme-gw
373
374
matches:
375
- path:
376
type: PathPrefix
377
value: /
378
## Timeouts define the timeouts that can be configured for an HTTP request.
379
## Ref. https://gateway-api.sigs.k8s.io/api-types/httproute/#timeouts-optional
380
timeouts: {}
381
# request: 10s
382
# backendRequest: 5s
383
384
## SessionPersistence defines and configures session persistence for the route rule.
385
## Ref. https://gateway-api.sigs.k8s.io/geps/gep-1619/
386
sessionPersistence: {}
387
# sessionName: grafana-session
388
# type: Cookie
389
# absoluteTimeout: 48h
390
# cookieConfig:
391
# lifetimeType: Permanent
392
393
## Filters define the filters that are applied to requests that match this rule.
394
filters: []
395
## Additional custom rules that can be added to the route
396
additionalRules: []
397
## httpsRedirect adds a filter for redirecting to https (HTTP 301 Moved Permanently).
398
## To redirect HTTP traffic to HTTPS, you need to have a Gateway with both HTTP and HTTPS listeners.
399
## Matches and filters do not take effect if enabled.
400
## Ref. https://gateway-api.sigs.k8s.io/guides/http-redirect-rewrite/
401
httpsRedirect: false
402
# -- BETA: Configure Gateway API ListenerSet resources for the chart here.
403
# ListenerSet allows attaching additional listeners to an existing Gateway.
404
# More listener sets can be added by adding a dictionary key like the 'main' entry.
405
# Being BETA this can/will change in the future without notice, do not use unless you want to take that risk
406
# [[ref]](https://gateway-api.sigs.k8s.io/reference/api-spec/main/spec/#listenerset)
407
listenerSet:
408
main:
409
# -- Enables or disables the listener set
410
enabled: false
411
# -- Set the ListenerSet apiVersion, e.g. gateway.networking.k8s.io/v1
412
apiVersion: gateway.networking.k8s.io/v1
413
# @schema additionalProperties:{"type":"string"}
414
annotations: {}
415
# @schema additionalProperties:{"type":"string"}
416
labels: {}
417
# -- Reference to the parent Gateway this ListenerSet attaches to
418
parentRef: {}
419
# name: my-gateway
420
# namespace: default
421
# group: gateway.networking.k8s.io
422
# kind: Gateway
423
424
# -- List of listeners to attach to the parent Gateway
425
listeners: []
426
# - name: https
427
# port: 443
428
# protocol: HTTPS
429
# hostname: grafana.example.com
430
# tls:
431
# mode: Terminate
432
# certificateRefs:
433
# - name: grafana-tls
434
# allowedRoutes:
435
# namespaces:
436
# from: Same
437
resources: {}
438
# limits:
439
# cpu: 100m
440
# memory: 128Mi
441
# requests:
442
# cpu: 100m
443
# memory: 128Mi
444
445
## Configure the GOMEMLIMIT environment variable.
446
## When enabled and resources.limits.memory is set, GOMEMLIMIT is injected
447
## as a computed value (factor × memory limit) unless the user has already
448
## defined GOMEMLIMIT via env or envValueFrom.
449
goMemLimit:
450
# -- Enable automatic GOMEMLIMIT injection.
451
enabled: true
452
# -- Fraction of resources.limits.memory to use as GOMEMLIMIT (e.g. 0.9 = 90 %).
453
factor: 0.9
454
## Node labels for pod assignment
455
## ref: https://kubernetes.io/docs/user-guide/node-selection/
456
#
457
nodeSelector: {}
458
## Tolerations for pod assignment
459
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
460
##
461
tolerations: []
462
## Affinity for pod assignment (evaluated as template)
463
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
464
##
465
affinity: {}
466
## Topology Spread Constraints
467
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
468
##
469
topologySpreadConstraints: []
470
## Additional init containers (evaluated as template)
471
## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
472
##
473
extraInitContainers: []
474
## Enable an Specify container in extraContainers. This is meant to allow adding an authentication proxy to a grafana pod
475
## Accepts either a list of containers or a string. Both are evaluated as template.
476
# @schema type:[string, array, null]
477
extraContainers: ""
478
# extraContainers: |
479
# - name: proxy
480
# image: quay.io/gambol99/keycloak-proxy:latest
481
# args:
482
# - -provider=github
483
# - -client-id=
484
# - -client-secret=
485
# - -github-org=<ORG_NAME>
486
# - -email-domain=*
487
# - -cookie-secret=
488
# - -http-address=http://0.0.0.0:4181
489
# - -upstream-url=http://127.0.0.1:3000
490
# ports:
491
# - name: proxy-web
492
# containerPort: 4181
493
494
## Volumes that can be used in init containers that will not be mounted to deployment pods
495
extraContainerVolumes: []
496
# - name: volume-from-secret
497
# secret:
498
# secretName: secret-to-mount
499
# - name: empty-dir-volume
500
# emptyDir: {}
501
502
## Enable persistence using Persistent Volume Claims
503
## ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/
504
##
505
persistence:
506
type: pvc
507
enabled: false
508
# storageClassName: default
509
## (Optional) Use this to bind the claim to an existing PersistentVolume (PV) by name.
510
volumeName: ""
511
accessModes:
512
- ReadWriteOnce
513
# @schema type:[string, integer]
514
size: 10Gi
515
# annotations: {}
516
finalizers:
517
- kubernetes.io/pvc-protection
518
# selectorLabels: {}
519
## Sub-directory of the PV to mount. Can be templated.
520
# subPath: ""
521
## Name of an existing PVC. Can be templated.
522
# existingClaim:
523
## Extra labels to apply to a PVC.
524
# @schema additionalProperties:{"type":"string"}
525
extraPvcLabels: {}
526
disableWarning: false
527
## Configure StatefulSet persistent volume claim retention policy.
528
## This is ignored when Grafana is configured to use a Deployment with a PVC.
529
## By default, Kubernetes uses Retain for both whenDeleted and whenScaled.
530
persistentVolumeClaimRetentionPolicy: {}
531
# whenDeleted: Retain
532
# whenScaled: Retain
533
534
## If persistence is not enabled, this allows to mount the
535
## local storage in-memory to improve performance
536
##
537
inMemory:
538
enabled: false
539
## The maximum usage on memory medium EmptyDir would be
540
## the minimum value between the SizeLimit specified
541
## here and the sum of memory limits of all containers in a pod
542
##
543
# sizeLimit: 300Mi
544
## If 'lookupVolumeName' is set to true, Helm will attempt to retrieve
545
## the current value of 'spec.volumeName' and incorporate it into the template.
546
lookupVolumeName: true
547
initChownData:
548
## If false, data ownership will not be reset at startup
549
## This allows the grafana-server to be run with an arbitrary user
550
##
551
enabled: true
552
## initChownData container image
553
##
554
image:
555
# -- The Docker registry
556
registry: cgr.dev
557
repository: chainguard-private/busybox
558
tag: glibc-1.38.0-r3
559
sha: sha256:67425453f68e574e3efe8ea489f0df0eea09df0e12e7867dd88f1b6458324fac
560
pullPolicy: IfNotPresent
561
## initChownData resource requests and limits
562
## Ref: http://kubernetes.io/docs/user-guide/compute-resources/
563
##
564
resources: {}
565
# limits:
566
# cpu: 100m
567
# memory: 128Mi
568
# requests:
569
# cpu: 100m
570
# memory: 128Mi
571
# @schema skipProperties:true;additionalProperties:true
572
securityContext:
573
readOnlyRootFilesystem: false
574
runAsNonRoot: false
575
runAsUser: 0
576
seccompProfile:
577
type: RuntimeDefault
578
capabilities:
579
add:
580
- CHOWN
581
- DAC_OVERRIDE
582
drop:
583
- ALL
584
# Administrator credentials when not using an existing secret (see below)
585
adminUser: admin
586
# adminPassword: strongpassword
587
588
# Use an existing secret for the admin user.
589
admin:
590
## Name of the secret. Can be templated.
591
existingSecret: ""
592
userKey: admin-user
593
passwordKey: admin-password
594
## Define command to be executed at startup by grafana container
595
## Needed if using `vault-env` to manage secrets (ref: https://banzaicloud.com/blog/inject-secrets-into-pods-vault/)
596
## The default distroless image starts Grafana directly and does not contain a shell or `/run.sh`.
597
# command:
598
# - "/path/to/your/entrypoint"
599
600
## Optionally define args if command is used
601
## Needed if using `hashicorp/envconsul` to manage secrets
602
## By default no arguments are set
603
# args:
604
# - "-secret"
605
# - "secret/grafana"
606
# - "./grafana"
607
608
## Extra environment variables that will be pass onto deployment pods
609
##
610
## to provide grafana with access to CloudWatch on AWS EKS:
611
## 1. create an iam role of type "Web identity" with provider oidc.eks.* (note the provider for later)
612
## 2. edit the "Trust relationships" of the role, add a line inside the StringEquals clause using the
613
## same oidc eks provider as noted before (same as the existing line)
614
## also, replace NAMESPACE and prometheus-operator-grafana with the service account namespace and name
615
##
616
## "oidc.eks.us-east-1.amazonaws.com/id/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:sub": "system:serviceaccount:NAMESPACE:prometheus-operator-grafana",
617
##
618
## 3. attach a policy to the role, you can use a built in policy called CloudWatchReadOnlyAccess
619
## 4. use the following env: (replace 123456789000 and iam-role-name-here with your aws account number and role name)
620
##
621
## env:
622
## AWS_ROLE_ARN: arn:aws:iam::123456789000:role/iam-role-name-here
623
## AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token
624
## AWS_REGION: us-east-1
625
##
626
## 5. uncomment the EKS section in extraSecretMounts: below
627
## 6. uncomment the annotation section in the serviceAccount: above
628
## make sure to replace arn:aws:iam::123456789000:role/iam-role-name-here with your role arn
629
env: {}
630
## "valueFrom" environment variable references that will be added to deployment pods. Name is templated.
631
## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core
632
## Renders in container spec as:
633
## env:
634
## ...
635
## - name: <key>
636
## valueFrom:
637
## <value rendered as YAML>
638
envValueFrom: {}
639
# ENV_NAME:
640
# configMapKeyRef:
641
# name: configmap-name
642
# key: value_key
643
644
## The name of a secret in the same kubernetes namespace which contain values to be added to the environment
645
## This can be useful for auth tokens, etc. Value is templated.
646
envFromSecret: ""
647
## Sensible environment variables that will be rendered as new secret object
648
## This can be useful for auth tokens, etc.
649
## If the secret values contains "{{", they'll need to be properly escaped so that they are not interpreted by Helm
650
## ref: https://helm.sh/docs/howto/charts_tips_and_tricks/#using-the-tpl-function
651
envRenderSecret: {}
652
## The names of secrets in the same kubernetes namespace which contain values to be added to the environment
653
## Each entry should contain a name key, and can optionally specify whether the secret must be defined with an optional key.
654
## Name is templated.
655
envFromSecrets: []
656
## - name: secret-name
657
## prefix: prefix
658
## optional: true
659
660
## The names of configmaps in the same kubernetes namespace which contain values to be added to the environment
661
## Each entry should contain a name key, and can optionally specify whether the configmap must be defined with an optional key.
662
## Name is templated.
663
## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#configmapenvsource-v1-core
664
envFromConfigMaps: []
665
## - name: configmap-name
666
## prefix: prefix
667
## optional: true
668
669
# Inject Kubernetes services as environment variables.
670
# See https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/#environment-variables
671
enableServiceLinks: true
672
## Additional grafana server secret mounts
673
# Defines additional mounts with secrets. Secrets must be manually created in the namespace.
674
extraSecretMounts: []
675
# - name: secret-files
676
# mountPath: /etc/secrets
677
# secretName: grafana-secret-files
678
# readOnly: true
679
# optional: false
680
# subPath: ""
681
#
682
# for AWS EKS (cloudwatch) use the following (see also instruction in env: above)
683
# - name: aws-iam-token
684
# mountPath: /var/run/secrets/eks.amazonaws.com/serviceaccount
685
# readOnly: true
686
# projected:
687
# defaultMode: 420
688
# sources:
689
# - serviceAccountToken:
690
# audience: sts.amazonaws.com
691
# expirationSeconds: 86400
692
# path: token
693
#
694
# for CSI e.g. Azure Key Vault use the following
695
# - name: secrets-store-inline
696
# mountPath: /run/secrets/vault.azure.com
697
# readOnly: true
698
# csi:
699
# driver: secrets-store.csi.k8s.io
700
# readOnly: true
701
# volumeAttributes:
702
# secretProviderClass: "akv-grafana-spc"
703
# nodePublishSecretRef: # Only required when using service principal mode
704
# name: grafana-akv-creds # Only required when using service principal mode
705
706
## Additional grafana server volume mounts
707
# Defines additional volume mounts.
708
extraVolumeMounts: []
709
# - name: extra-volume-0
710
# mountPath: /mnt/volume0
711
# readOnly: true
712
# - name: extra-volume-1
713
# mountPath: /mnt/volume1
714
# readOnly: true
715
# - name: grafana-secrets
716
# mountPath: /mnt/volume2
717
718
## Additional Grafana server volumes
719
extraVolumes: []
720
# - name: extra-volume-0
721
# existingClaim: volume-claim
722
# - name: extra-volume-1
723
# hostPath:
724
# path: /usr/shared/
725
# type: ""
726
# - name: grafana-secrets
727
# csi:
728
# driver: secrets-store.csi.k8s.io
729
# readOnly: true
730
# volumeAttributes:
731
# secretProviderClass: "grafana-env-spc"
732
733
## Container Lifecycle Hooks. Execute a specific bash command or make an HTTP request
734
lifecycleHooks: {}
735
# postStart:
736
# exec:
737
# command: []
738
739
## Pass the plugins you want installed as a list.
740
##
741
plugins: []
742
# - digrich-bubblechart-panel
743
# - grafana-clock-panel
744
## You can also use other plugin download URL, as long as they are valid zip files,
745
## and specify the name of the plugin as prefix, with an version. Like this:
746
# - marcusolsson-json-datasource@1.3.24@https://grafana.com/api/plugins/marcusolsson-json-datasource/versions/1.3.24/download
747
748
## Configure grafana datasources
749
## ref: http://docs.grafana.org/administration/provisioning/#datasources
750
##
751
datasources: {}
752
# datasources.yaml:
753
# apiVersion: 1
754
# datasources:
755
# - name: Prometheus
756
# type: prometheus
757
# url: http://prometheus-prometheus-server
758
# access: proxy
759
# isDefault: true
760
# - name: CloudWatch
761
# type: cloudwatch
762
# access: proxy
763
# uid: cloudwatch
764
# editable: false
765
# jsonData:
766
# authType: default
767
# defaultRegion: us-east-1
768
# deleteDatasources: []
769
# - name: Prometheus
770
771
## Configure grafana alerting (can be templated)
772
## ref: https://docs.grafana.com/alerting/set-up/provision-alerting-resources/file-provisioning/
773
##
774
alerting: {}
775
# policies.yaml:
776
# apiVersion: 1
777
# policies:
778
# - orgId: 1
779
# receiver: first_uid
780
#
781
# rules.yaml:
782
# apiVersion: 1
783
# groups:
784
# - orgId: 1
785
# name: '{{ .Chart.Name }}_my_rule_group'
786
# folder: my_first_folder
787
# interval: 60s
788
# rules:
789
# - uid: my_id_1
790
# title: my_first_rule
791
# condition: A
792
# data:
793
# - refId: A
794
# datasourceUid: '-100'
795
# model:
796
# conditions:
797
# - evaluator:
798
# params:
799
# - 3
800
# type: gt
801
# operator:
802
# type: and
803
# query:
804
# params:
805
# - A
806
# reducer:
807
# type: last
808
# type: query
809
# datasource:
810
# type: __expr__
811
# uid: '-100'
812
# expression: 1==0
813
# intervalMs: 1000
814
# maxDataPoints: 43200
815
# refId: A
816
# type: math
817
# dashboardUid: my_dashboard
818
# panelId: 123
819
# noDataState: Alerting
820
# for: 60s
821
# annotations:
822
# some_key: some_value
823
# labels:
824
# team: sre_team_1
825
#
826
# contactpoints.yaml:
827
# secret:
828
# apiVersion: 1
829
# contactPoints:
830
# - orgId: 1
831
# name: cp_1
832
# receivers:
833
# - uid: first_uid
834
# type: pagerduty
835
# settings:
836
# integrationKey: XXX
837
# severity: critical
838
# class: ping failure
839
# component: Grafana
840
# group: app-stack
841
# summary: |
842
# {{ `{{ include "default.message" . }}` }}
843
#
844
# templates.yaml:
845
# apiVersion: 1
846
# templates:
847
# - orgId: 1
848
# name: my_first_template
849
# template: |
850
# {{ `
851
# {{ define "my_first_template" }}
852
# Custom notification message
853
# {{ end }}
854
# ` }}
855
#
856
# mutetimes.yaml
857
# apiVersion: 1
858
# muteTimes:
859
# - orgId: 1
860
# name: mti_1
861
# # refer to https://prometheus.io/docs/alerting/latest/configuration/#time_interval-0
862
# time_intervals: {}
863
864
## Configure notifiers
865
## ref: http://docs.grafana.org/administration/provisioning/#alert-notification-channels
866
##
867
notifiers: {}
868
# notifiers.yaml:
869
# notifiers:
870
# - name: email-notifier
871
# type: email
872
# uid: email1
873
# # either:
874
# org_id: 1
875
# # or
876
# org_name: Main Org.
877
# is_default: true
878
# settings:
879
# addresses: an_email_address@example.com
880
# delete_notifiers:
881
882
## Configure grafana dashboard providers
883
## ref: http://docs.grafana.org/administration/provisioning/#dashboards
884
##
885
## `path` must be /var/lib/grafana/dashboards/<provider_name>
886
##
887
dashboardProviders: {}
888
# dashboardproviders.yaml:
889
# apiVersion: 1
890
# providers:
891
# - name: 'default'
892
# orgId: 1
893
# folder: ''
894
# type: file
895
# disableDeletion: false
896
# editable: true
897
# options:
898
# path: /var/lib/grafana/dashboards/default
899
900
## Configure how curl fetches remote dashboards. The beginning dash is required.
901
## NOTE: This sets the default short flags for all dashboards, but these
902
## defaults can be overridden individually for each dashboard by setting
903
## curlOptions. See the example dashboards section below.
904
##
905
## -s - silent mode
906
## -k - allow insecure (eg: non-TLS) connections
907
## -f - fail fast
908
## See the curl documentation for additional options
909
##
910
defaultCurlOptions: "-skf"
911
## Configure shell options for downloading dashboards. The beginning dash is added automatically.
912
## Add `x` to enable command tracing. This can expose sensitive values in logs.
913
##
914
defaultShellOptions: "eufo pipefail"
915
## Configure grafana dashboard to import
916
## NOTE: To use dashboards you must also enable/configure dashboardProviders
917
## ref: https://grafana.com/dashboards
918
##
919
## dashboards per provider, use provider name as key.
920
## For dashboards downloaded via gnetId or url, the optional "title" key overrides
921
## the dashboard title in the downloaded JSON so the UI displays your custom title.
922
##
923
dashboards: {}
924
# default:
925
# some-dashboard:
926
# json: |
927
# $RAW_JSON
928
# custom-dashboard:
929
# file: dashboards/custom-dashboard.json
930
# prometheus-stats:
931
# title: My Custom Dashboard Title # optional; overrides the dashboard title in the downloaded JSON
932
# gnetId: 2
933
# revision: 2
934
# datasource: Prometheus
935
# local-dashboard:
936
# url: https://example.com/repository/test.json
937
# curlOptions: "-sLf"
938
# token: ''
939
# local-dashboard-base64:
940
# url: https://example.com/repository/test-b64.json
941
# token: ''
942
# b64content: true
943
# local-dashboard-gitlab:
944
# url: https://example.com/repository/test-gitlab.json
945
# gitlabToken: ''
946
# local-dashboard-bitbucket:
947
# url: https://example.com/repository/test-bitbucket.json
948
# bearerToken: ''
949
# local-dashboard-azure:
950
# url: https://example.com/repository/test-azure.json
951
# basic: ''
952
# acceptHeader: '*/*'
953
954
## Reference to external ConfigMap per provider. Use provider name as key and ConfigMap name as value.
955
## A provider dashboards must be defined either by external ConfigMaps or in values.yaml, not in both.
956
## ConfigMap data example:
957
##
958
## data:
959
## example-dashboard.json: |
960
## RAW_JSON
961
##
962
dashboardsConfigMaps: {}
963
# default: ""
964
965
## Grafana's primary configuration
966
## NOTE: values in map will be converted to ini format
967
## ref: http://docs.grafana.org/installation/configuration/
968
##
969
# @schema skipProperties:true;additionalProperties:true
970
grafana.ini:
971
paths:
972
data: /var/lib/grafana/
973
logs: /var/log/grafana
974
plugins: /var/lib/grafana/plugins
975
provisioning: /etc/grafana/provisioning
976
analytics:
977
check_for_updates: true
978
plugins:
979
preinstall_auto_update: "false"
980
log:
981
mode: console
982
server:
983
domain: "{{ if (and .Values.ingress.enabled .Values.ingress.hosts) }}{{ tpl (.Values.ingress.hosts | first) . }}{{ else if (and .Values.route.main.enabled .Values.route.main.hostnames) }}{{ tpl (.Values.route.main.hostnames | first) . }}{{ else }}''{{ end }}"
984
unified_storage:
985
index_path: /var/lib/grafana-search/bleve
986
## grafana Authentication can be enabled with the following values on grafana.ini
987
# server:
988
# The full public facing url you use in browser, used for redirects and emails
989
# root_url:
990
# https://grafana.com/docs/grafana/latest/auth/github/#enable-github-in-grafana
991
# auth.github:
992
# enabled: false
993
# allow_sign_up: false
994
# scopes: user:email,read:org
995
# auth_url: https://github.com/login/oauth/authorize
996
# token_url: https://github.com/login/oauth/access_token
997
# api_url: https://api.github.com/user
998
# team_ids:
999
# allowed_organizations:
1000
# client_id:
1001
# client_secret:
1002
## LDAP Authentication can be enabled with the following values on grafana.ini
1003
## NOTE: Grafana will fail to start if the value for ldap.toml is invalid
1004
# auth.ldap:
1005
# enabled: true
1006
# allow_sign_up: true
1007
# config_file: /etc/grafana/ldap.toml
1008
## Grafana's alerting configuration
1009
# unified_alerting:
1010
# enabled: true
1011
# rule_version_record_limit: "5"
1012
1013
## Grafana's LDAP configuration
1014
## Templated by the template in _helpers.tpl
1015
## NOTE: To enable the grafana.ini must be configured with auth.ldap.enabled
1016
## ref: http://docs.grafana.org/installation/configuration/#auth-ldap
1017
## ref: http://docs.grafana.org/installation/ldap/#configuration
1018
ldap:
1019
enabled: false
1020
# `existingSecret` is a reference to an existing secret containing the ldap configuration
1021
# for Grafana in a key `ldap-toml`.
1022
existingSecret: ""
1023
# `config` is the content of `ldap.toml` that will be stored in the created secret
1024
config: ""
1025
# config: |-
1026
# verbose_logging = true
1027
# [[servers]]
1028
# host = "my-ldap-server"
1029
# port = 636
1030
# use_ssl = true
1031
# start_tls = false
1032
# ssl_skip_verify = false
1033
# bind_dn = "uid=%s,ou=users,dc=myorg,dc=com"
1034
1035
# When process namespace sharing is enabled, processes in a container are visible to all other containers in the same pod
1036
# This parameter is added because the ldap reload api is not working https://grafana.com/docs/grafana/latest/developers/http_api/admin/#reload-ldap-configuration
1037
# To allow an extraContainer to restart the Grafana container
1038
shareProcessNamespace: false
1039
## Grafana's SMTP configuration
1040
## NOTE: To enable, grafana.ini must be configured with smtp.enabled
1041
## ref: http://docs.grafana.org/installation/configuration/#smtp
1042
smtp:
1043
# `existingSecret` is a reference to an existing secret containing the smtp configuration
1044
# for Grafana.
1045
existingSecret: ""
1046
userKey: "user"
1047
passwordKey: "password"
1048
## Sidecars that collect the configmaps with specified label and stores the included files them into the respective folders
1049
## Requires at least Grafana 5 to work and can't be used together with parameters dashboardProviders, datasources and dashboards
1050
sidecar:
1051
image:
1052
# -- The Docker registry
1053
registry: cgr.dev
1054
repository: chainguard-private/k8s-sidecar
1055
tag: 2.14.1-r1
1056
sha: sha256:60b17aa0968a174544c42649aa8dd41997e628fdfac2fd2252e17a80fbe1e7d9
1057
imagePullPolicy: IfNotPresent
1058
resources: {}
1059
# limits:
1060
# cpu: 100m
1061
# memory: 100Mi
1062
# requests:
1063
# cpu: 50m
1064
# memory: 50Mi
1065
# @schema skipProperties:true;additionalProperties:true
1066
securityContext:
1067
allowPrivilegeEscalation: false
1068
capabilities:
1069
drop:
1070
- ALL
1071
seccompProfile:
1072
type: RuntimeDefault
1073
readOnlyRootFilesystem: true
1074
# Set to true to skip tls verification for kube api calls. Can be overridden per sidecar
1075
# skipTlsVerify: true
1076
enableUniqueFilenames: false
1077
readinessProbe: {}
1078
livenessProbe: {}
1079
# Log level default for all sidecars. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL. Defaults to INFO
1080
# logLevel: INFO
1081
alerts:
1082
enabled: false
1083
# Additional environment variables for the alerts sidecar
1084
env: {}
1085
## "valueFrom" environment variable references that will be added to deployment pods. Name is templated.
1086
## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core
1087
## Renders in container spec as:
1088
## env:
1089
## ...
1090
## - name: <key>
1091
## valueFrom:
1092
## <value rendered as YAML>
1093
envValueFrom: {}
1094
# ENV_NAME:
1095
# configMapKeyRef:
1096
# name: configmap-name
1097
# key: value_key
1098
# Do not reprocess already processed unchanged resources on k8s API reconnect.
1099
# ignoreAlreadyProcessed: true
1100
# Set to true to skip tls verification for kube api calls. Overrides sidecar.skipTlsVerify
1101
# skipTlsVerify: true
1102
# label that the configmaps with alert are marked with (can be templated)
1103
label: grafana_alert
1104
# value of label that the configmaps with alert are set to (can be templated)
1105
labelValue: ""
1106
# Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.
1107
# logLevel: INFO
1108
# If specified, the sidecar will search for alert config-maps inside this namespace.
1109
# Otherwise the namespace in which the sidecar is running will be used.
1110
# It's also possible to specify ALL to search in all namespaces
1111
# @schema type:[string, array, null]
1112
searchNamespace: null
1113
# Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.
1114
watchMethod: WATCH
1115
# search in configmap, secret or both
1116
resource: both
1117
#
1118
# resourceName: comma separated list of resource names to be fetched/checked by this sidecar.
1119
# per default all resources of the type defined in {{ .Values.sidecar.alerts.resource }} will be checked.
1120
# This e.g. allows stricter RBAC rules which are limited to the resources meant for the sidecars.
1121
# resourceName: "secret/alerts-1,configmap/alerts-0"
1122
resourceName: ""
1123
#
1124
# watchServerTimeout: request to the server, asking it to cleanly close the connection after that.
1125
# defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S
1126
# watchServerTimeout: 3600
1127
#
1128
# watchClientTimeout: is a client-side timeout, configuring your local socket.
1129
# If you have a network outage dropping all packets with no RST/FIN,
1130
# this is how long your client waits before realizing & dropping the connection.
1131
# defaults to 66sec (sic!)
1132
# watchClientTimeout: 60
1133
#
1134
# maxTotalRetries: Total number of retries to allow for any http request.
1135
# Takes precedence over other counts. Applies to all requests to reloadURL and k8s api requests.
1136
# Set to 0 to fail on the first retry.
1137
# maxTotalRetries: 5
1138
#
1139
# maxConnectRetries: How many connection-related errors to retry on for any http request.
1140
# These are errors raised before the request is sent to the remote server, which we assume has not triggered the server to process the request.
1141
# Applies to all requests to reloadURL and k8s api requests.
1142
# Set to 0 to fail on the first retry of this type.
1143
# maxConnectRetries: 10
1144
#
1145
# maxReadRetries: How many times to retry on read errors for any http request
1146
# These errors are raised after the request was sent to the server, so the request may have side-effects.
1147
# Applies to all requests to reloadURL and k8s api requests.
1148
# Set to 0 to fail on the first retry of this type.
1149
# maxReadRetries: 5
1150
#
1151
# Endpoint to send request to reload alerts
1152
reloadURL: "http://localhost:3000/api/admin/provisioning/alerting/reload"
1153
# Absolute path to a script to execute after a configmap got reloaded.
1154
# It runs before calls to REQ_URI. If the file is not executable it will be passed to sh.
1155
# Otherwise, it's executed as is. Shebangs known to work are #!/bin/sh and #!/usr/bin/env python
1156
# @schema type:[string, null]
1157
script: null
1158
skipReload: false
1159
# This is needed if skipReload is true, to load any alerts defined at startup time.
1160
# Deploy the alert sidecar as an initContainer.
1161
initAlerts: false
1162
# Use native sidecar https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/
1163
# restartPolicy: Always
1164
# # only applies to native sidecars
1165
# startupProbe:
1166
# httpGet:
1167
# path: /healthz
1168
# port: 8080
1169
# initialDelaySeconds: 5
1170
# periodSeconds: 5
1171
# failureThreshold: 60 # 5 minutes
1172
# Additional alerts sidecar volume mounts
1173
extraMounts: []
1174
# Sets the size limit of the alert sidecar emptyDir volume
1175
# @schema type:[string, integer]
1176
sizeLimit: ""
1177
dashboards:
1178
enabled: false
1179
# Additional environment variables for the dashboards sidecar
1180
env: {}
1181
## "valueFrom" environment variable references that will be added to deployment pods. Name is templated.
1182
## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core
1183
## Renders in container spec as:
1184
## env:
1185
## ...
1186
## - name: <key>
1187
## valueFrom:
1188
## <value rendered as YAML>
1189
envValueFrom: {}
1190
# ENV_NAME:
1191
# configMapKeyRef:
1192
# name: configmap-name
1193
# key: value_key
1194
# Do not reprocess already processed unchanged resources on k8s API reconnect.
1195
# ignoreAlreadyProcessed: true
1196
# Set to true to skip tls verification for kube api calls. Overrides sidecar.skipTlsVerify
1197
# skipTlsVerify: true
1198
SCProvider: true
1199
# label that the configmaps with dashboards are marked with (can be templated)
1200
label: grafana_dashboard
1201
# value of label that the configmaps with dashboards are set to (can be templated)
1202
labelValue: ""
1203
# Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.
1204
# logLevel: INFO
1205
# folder in the pod that should hold the collected dashboards (unless `defaultFolderName` is set)
1206
folder: /tmp/dashboards
1207
# The default folder name, it will create a subfolder under the `folder` and put dashboards in there instead
1208
# @schema type:[string, null]
1209
defaultFolderName: null
1210
# Namespaces list. If specified, the sidecar will search for config-maps/secrets inside these namespaces.
1211
# Otherwise the namespace in which the sidecar is running will be used.
1212
# It's also possible to specify ALL to search in all namespaces.
1213
# @schema type:[string, array, null]
1214
searchNamespace: null
1215
# Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.
1216
watchMethod: WATCH
1217
# search in configmap, secret or both
1218
resource: both
1219
# If specified, the sidecar will look for annotation with this name to create folder and put graph here.
1220
# You can use this parameter together with `provider.foldersFromFilesStructure`to annotate configmaps and create folder structure.
1221
# @schema type:[string, null]
1222
folderAnnotation: null
1223
#
1224
# resourceName: comma separated list of resource names to be fetched/checked by this sidecar.
1225
# per default all resources of the type defined in {{ .Values.sidecar.dashboards.resource }} will be checked.
1226
# This e.g. allows stricter RBAC rules which are limited to the resources meant for the sidecars.
1227
# resourceName: "secret/dashboards-0,configmap/dashboards-1"
1228
resourceName: ""
1229
#
1230
# maxTotalRetries: Total number of retries to allow for any http request.
1231
# Takes precedence over other counts. Applies to all requests to reloadURL and k8s api requests.
1232
# Set to 0 to fail on the first retry.
1233
# maxTotalRetries: 5
1234
#
1235
# maxConnectRetries: How many connection-related errors to retry on for any http request.
1236
# These are errors raised before the request is sent to the remote server, which we assume has not triggered the server to process the request.
1237
# Applies to all requests to reloadURL and k8s api requests.
1238
# Set to 0 to fail on the first retry of this type.
1239
# maxConnectRetries: 10
1240
#
1241
# maxReadRetries: How many times to retry on read errors for any http request
1242
# These errors are raised after the request was sent to the server, so the request may have side-effects.
1243
# Applies to all requests to reloadURL and k8s api requests.
1244
# Set to 0 to fail on the first retry of this type.
1245
# maxReadRetries: 5
1246
#
1247
# Endpoint to send request to reload alerts
1248
reloadURL: "http://localhost:3000/api/admin/provisioning/dashboards/reload"
1249
# Absolute path to a script to execute after a configmap got reloaded.
1250
# It runs before calls to REQ_URI. If the file is not executable it will be passed to sh.
1251
# Otherwise, it's executed as is. Shebangs known to work are #!/bin/sh and #!/usr/bin/env python
1252
# @schema type:[string, null]
1253
script: null
1254
skipReload: false
1255
# This is needed if skipReload is true, to load any dashboards defined at startup time.
1256
# Deploy the dashboard sidecar as an initContainer.
1257
initDashboards: false
1258
# Use native sidecar https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/
1259
# restartPolicy: Always
1260
# # only applies to native sidecars
1261
# startupProbe:
1262
# httpGet:
1263
# path: /healthz
1264
# port: 8083
1265
# initialDelaySeconds: 5
1266
# periodSeconds: 5
1267
# failureThreshold: 60 # 5 minutes
1268
# watchServerTimeout: request to the server, asking it to cleanly close the connection after that.
1269
# defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S
1270
# watchServerTimeout: 3600
1271
#
1272
# watchClientTimeout: is a client-side timeout, configuring your local socket.
1273
# If you have a network outage dropping all packets with no RST/FIN,
1274
# this is how long your client waits before realizing & dropping the connection.
1275
# defaults to 66sec (sic!)
1276
# watchClientTimeout: 60
1277
#
1278
# provider configuration that lets grafana manage the dashboards
1279
provider:
1280
# name of the provider, should be unique
1281
name: sidecarProvider
1282
# orgid as configured in grafana
1283
# @schema type:[string, integer]
1284
orgid: 1
1285
# folder in which the dashboards should be imported in grafana
1286
folder: ''
1287
# <string> folder UID. will be automatically generated if not specified
1288
folderUid: ''
1289
# type of the provider
1290
type: file
1291
# disableDelete to activate a import-only behaviour
1292
disableDelete: false
1293
# allow updating provisioned dashboards from the UI
1294
allowUiUpdates: false
1295
# allow Grafana to replicate dashboard structure from filesystem
1296
foldersFromFilesStructure: false
1297
# Additional dashboards sidecar volume mounts
1298
extraMounts: []
1299
# Sets the size limit of the dashboard sidecar emptyDir volume
1300
# @schema type:[string, integer]
1301
sizeLimit: ""
1302
datasources:
1303
enabled: false
1304
# Additional environment variables for the datasourcessidecar
1305
env: {}
1306
## "valueFrom" environment variable references that will be added to deployment pods. Name is templated.
1307
## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core
1308
## Renders in container spec as:
1309
## env:
1310
## ...
1311
## - name: <key>
1312
## valueFrom:
1313
## <value rendered as YAML>
1314
envValueFrom: {}
1315
# ENV_NAME:
1316
# configMapKeyRef:
1317
# name: configmap-name
1318
# key: value_key
1319
# Do not reprocess already processed unchanged resources on k8s API reconnect.
1320
# ignoreAlreadyProcessed: true
1321
# Set to true to skip tls verification for kube api calls. Overrides sidecar.skipTlsVerify
1322
# skipTlsVerify: true
1323
# label that the configmaps with datasources are marked with (can be templated)
1324
label: grafana_datasource
1325
# value of label that the configmaps with datasources are set to (can be templated)
1326
labelValue: ""
1327
# Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.
1328
# logLevel: INFO
1329
# If specified, the sidecar will search for datasource config-maps inside this namespace.
1330
# Otherwise the namespace in which the sidecar is running will be used.
1331
# It's also possible to specify ALL to search in all namespaces
1332
# @schema type:[string, array, null]
1333
searchNamespace: null
1334
# Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.
1335
watchMethod: WATCH
1336
# search in configmap, secret or both
1337
resource: both
1338
#
1339
# resourceName: comma separated list of resource names to be fetched/checked by this sidecar.
1340
# per default all resources of the type defined in {{ .Values.sidecar.datasources.resource }} will be checked.
1341
# This e.g. allows stricter RBAC rules which are limited to the resources meant for the sidecars.
1342
# resourceName: "secret/datasources-0,configmap/datasources-15"
1343
resourceName: ""
1344
#
1345
# watchServerTimeout: request to the server, asking it to cleanly close the connection after that.
1346
# defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S
1347
# watchServerTimeout: 3600
1348
#
1349
# watchClientTimeout: is a client-side timeout, configuring your local socket.
1350
# If you have a network outage dropping all packets with no RST/FIN,
1351
# this is how long your client waits before realizing & dropping the connection.
1352
# defaults to 66sec (sic!)
1353
# watchClientTimeout: 60
1354
#
1355
# maxTotalRetries: Total number of retries to allow for any http request.
1356
# Takes precedence over other counts. Applies to all requests to reloadURL and k8s api requests.
1357
# Set to 0 to fail on the first retry.
1358
# maxTotalRetries: 5
1359
#
1360
# maxConnectRetries: How many connection-related errors to retry on for any http request.
1361
# These are errors raised before the request is sent to the remote server, which we assume has not triggered the server to process the request.
1362
# Applies to all requests to reloadURL and k8s api requests.
1363
# Set to 0 to fail on the first retry of this type.
1364
# maxConnectRetries: 10
1365
#
1366
# maxReadRetries: How many times to retry on read errors for any http request
1367
# These errors are raised after the request was sent to the server, so the request may have side-effects.
1368
# Applies to all requests to reloadURL and k8s api requests.
1369
# Set to 0 to fail on the first retry of this type.
1370
# maxReadRetries: 5
1371
#
1372
# Endpoint to send request to reload datasources
1373
reloadURL: "http://localhost:3000/api/admin/provisioning/datasources/reload"
1374
# Absolute path to a script to execute after a configmap got reloaded.
1375
# It runs before calls to REQ_URI. If the file is not executable it will be passed to sh.
1376
# Otherwise, it's executed as is. Shebangs known to work are #!/bin/sh and #!/usr/bin/env python
1377
# @schema type:[string, null]
1378
script: null
1379
skipReload: false
1380
# This is needed if skipReload is true, to load any datasources defined at startup time.
1381
# Deploy the datasources sidecar as an initContainer.
1382
initDatasources: false
1383
# Use native sidecar https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/
1384
# restartPolicy: Always
1385
# # only applies to native sidecars
1386
# startupProbe:
1387
# httpGet:
1388
# path: /healthz
1389
# port: 8081
1390
# initialDelaySeconds: 5
1391
# periodSeconds: 5
1392
# failureThreshold: 60 # 5 minutes
1393
# Additional datasources sidecar volume mounts
1394
extraMounts: []
1395
# Sets the size limit of the datasource sidecar emptyDir volume
1396
# @schema type:[string, integer]
1397
sizeLimit: ""
1398
plugins:
1399
enabled: false
1400
# Additional environment variables for the plugins sidecar
1401
env: {}
1402
# Do not reprocess already processed unchanged resources on k8s API reconnect.
1403
# ignoreAlreadyProcessed: true
1404
# Set to true to skip tls verification for kube api calls. Overrides sidecar.skipTlsVerify
1405
# skipTlsVerify: true
1406
# label that the configmaps with plugins are marked with (can be templated)
1407
label: grafana_plugin
1408
# value of label that the configmaps with plugins are set to (can be templated)
1409
labelValue: ""
1410
# Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.
1411
# logLevel: INFO
1412
# If specified, the sidecar will search for plugin config-maps inside this namespace.
1413
# Otherwise the namespace in which the sidecar is running will be used.
1414
# It's also possible to specify ALL to search in all namespaces
1415
# @schema type:[string, array, null]
1416
searchNamespace: null
1417
# Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.
1418
watchMethod: WATCH
1419
# search in configmap, secret or both
1420
resource: both
1421
#
1422
# resourceName: comma separated list of resource names to be fetched/checked by this sidecar.
1423
# per default all resources of the type defined in {{ .Values.sidecar.plugins.resource }} will be checked.
1424
# This e.g. allows stricter RBAC rules which are limited to the resources meant for the sidecars.
1425
# resourceName: "secret/plugins-0,configmap/plugins-1"
1426
resourceName: ""
1427
#
1428
# watchServerTimeout: request to the server, asking it to cleanly close the connection after that.
1429
# defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S
1430
# watchServerTimeout: 3600
1431
#
1432
# watchClientTimeout: is a client-side timeout, configuring your local socket.
1433
# If you have a network outage dropping all packets with no RST/FIN,
1434
# this is how long your client waits before realizing & dropping the connection.
1435
# defaults to 66sec (sic!)
1436
# watchClientTimeout: 60
1437
#
1438
# maxTotalRetries: Total number of retries to allow for any http request.
1439
# Takes precedence over other counts. Applies to all requests to reloadURL and k8s api requests.
1440
# Set to 0 to fail on the first retry.
1441
# maxTotalRetries: 5
1442
#
1443
# maxConnectRetries: How many connection-related errors to retry on for any http request.
1444
# These are errors raised before the request is sent to the remote server, which we assume has not triggered the server to process the request.
1445
# Applies to all requests to reloadURL and k8s api requests.
1446
# Set to 0 to fail on the first retry of this type.
1447
# maxConnectRetries: 10
1448
#
1449
# maxReadRetries: How many times to retry on read errors for any http request
1450
# These errors are raised after the request was sent to the server, so the request may have side-effects.
1451
# Applies to all requests to reloadURL and k8s api requests.
1452
# Set to 0 to fail on the first retry of this type.
1453
# maxReadRetries: 5
1454
#
1455
# Endpoint to send request to reload plugins
1456
reloadURL: "http://localhost:3000/api/admin/provisioning/plugins/reload"
1457
# Absolute path to a script to execute after a configmap got reloaded.
1458
# It runs before calls to REQ_URI. If the file is not executable it will be passed to sh.
1459
# Otherwise, it's executed as is. Shebangs known to work are #!/bin/sh and #!/usr/bin/env python
1460
# @schema type:[string, null]
1461
script: null
1462
skipReload: false
1463
# Deploy the datasource sidecar as an initContainer in addition to a container.
1464
# This is needed if skipReload is true, to load any plugins defined at startup time.
1465
initPlugins: false
1466
# Additional plugins sidecar volume mounts
1467
extraMounts: []
1468
# Sets the size limit of the plugin sidecar emptyDir volume
1469
# @schema type:[string, integer]
1470
sizeLimit: ""
1471
notifiers:
1472
enabled: false
1473
# Additional environment variables for the notifierssidecar
1474
env: {}
1475
# Do not reprocess already processed unchanged resources on k8s API reconnect.
1476
# ignoreAlreadyProcessed: true
1477
# Set to true to skip tls verification for kube api calls. Overrides sidecar.skipTlsVerify
1478
# skipTlsVerify: true
1479
# label that the configmaps with notifiers are marked with (can be templated)
1480
label: grafana_notifier
1481
# value of label that the configmaps with notifiers are set to (can be templated)
1482
labelValue: ""
1483
# Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.
1484
# logLevel: INFO
1485
# If specified, the sidecar will search for notifier config-maps inside this namespace.
1486
# Otherwise the namespace in which the sidecar is running will be used.
1487
# It's also possible to specify ALL to search in all namespaces
1488
# @schema type:[string, array, null]
1489
searchNamespace: null
1490
# Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.
1491
watchMethod: WATCH
1492
# search in configmap, secret or both
1493
resource: both
1494
#
1495
# resourceName: comma separated list of resource names to be fetched/checked by this sidecar.
1496
# per default all resources of the type defined in {{ .Values.sidecar.notifiers.resource }} will be checked.
1497
# This e.g. allows stricter RBAC rules which are limited to the resources meant for the sidecars.
1498
# resourceName: "secret/notifiers-2,configmap/notifiers-1"
1499
resourceName: ""
1500
#
1501
# watchServerTimeout: request to the server, asking it to cleanly close the connection after that.
1502
# defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S
1503
# watchServerTimeout: 3600
1504
#
1505
# watchClientTimeout: is a client-side timeout, configuring your local socket.
1506
# If you have a network outage dropping all packets with no RST/FIN,
1507
# this is how long your client waits before realizing & dropping the connection.
1508
# defaults to 66sec (sic!)
1509
# watchClientTimeout: 60
1510
#
1511
# maxTotalRetries: Total number of retries to allow for any http request.
1512
# Takes precedence over other counts. Applies to all requests to reloadURL and k8s api requests.
1513
# Set to 0 to fail on the first retry.
1514
# maxTotalRetries: 5
1515
#
1516
# maxConnectRetries: How many connection-related errors to retry on for any http request.
1517
# These are errors raised before the request is sent to the remote server, which we assume has not triggered the server to process the request.
1518
# Applies to all requests to reloadURL and k8s api requests.
1519
# Set to 0 to fail on the first retry of this type.
1520
# maxConnectRetries: 10
1521
#
1522
# maxReadRetries: How many times to retry on read errors for any http request
1523
# These errors are raised after the request was sent to the server, so the request may have side-effects.
1524
# Applies to all requests to reloadURL and k8s api requests.
1525
# Set to 0 to fail on the first retry of this type.
1526
# maxReadRetries: 5
1527
#
1528
# Endpoint to send request to reload notifiers
1529
reloadURL: "http://localhost:3000/api/admin/provisioning/notifications/reload"
1530
# Absolute path to a script to execute after a configmap got reloaded.
1531
# It runs before calls to REQ_URI. If the file is not executable it will be passed to sh.
1532
# Otherwise, it's executed as is. Shebangs known to work are #!/bin/sh and #!/usr/bin/env python
1533
# @schema type:[string, null]
1534
script: null
1535
skipReload: false
1536
# Deploy the notifier sidecar as an initContainer in addition to a container.
1537
# This is needed if skipReload is true, to load any notifiers defined at startup time.
1538
initNotifiers: false
1539
# Use native sidecar https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/
1540
# restartPolicy: Always
1541
# # only applies to native sidecars
1542
# startupProbe:
1543
# httpGet:
1544
# path: /healthz
1545
# port: 8082
1546
# initialDelaySeconds: 5
1547
# periodSeconds: 5
1548
# failureThreshold: 60 # 5 minutes
1549
# Additional notifiers sidecar volume mounts
1550
extraMounts: []
1551
# Sets the size limit of the notifier sidecar emptyDir volume
1552
# @schema type:[string, integer]
1553
sizeLimit: ""
1554
## Override the deployment namespace
1555
##
1556
namespaceOverride: ""
1557
## Number of old ReplicaSets to retain
1558
##
1559
# @schema type:[integer, null]
1560
revisionHistoryLimit: 10
1561
## Add a separate remote image renderer deployment/service
1562
imageRenderer:
1563
deploymentStrategy: {}
1564
## The maximum time in seconds for the image renderer Deployment to make progress before it is
1565
## considered to be failed.
1566
## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#progress-deadline-seconds
1567
# @schema type:[integer, null]
1568
progressDeadlineSeconds: null
1569
# Enable the image-renderer deployment & service
1570
enabled: false
1571
# @schema type:[integer, null]
1572
replicas: 1
1573
autoscaling:
1574
enabled: false
1575
minReplicas: 1
1576
maxReplicas: 5
1577
# @schema type:[string, integer, null]
1578
targetCPU: "60"
1579
# @schema type:[string, integer, null]
1580
targetMemory: ""
1581
behavior: {}
1582
# The url of remote image renderer if it is not in the same namespace with the grafana instance
1583
serverURL: ""
1584
# The callback url of grafana instances if it is not in the same namespace with the remote image renderer
1585
renderingCallbackURL: ""
1586
# Token used for authentication between Grafana and the remote image renderer.
1587
token: ""
1588
# Use an existing secret for the image renderer token. Must contain a key named "token".
1589
existingSecret: ""
1590
image:
1591
# -- The Docker registry
1592
registry: cgr.dev
1593
# image-renderer Image repository
1594
repository: chainguard-private/grafana-image-renderer
1595
# image-renderer Image tag
1596
tag: 5.12.8-r0
1597
# image-renderer Image sha (optional)
1598
sha: sha256:fb49ee8e6b6d05ca93b09084e655142e557f8a290c442447f7fffae4b0462ce3
1599
# image-renderer Image pull secrets (optional)
1600
pullSecrets: []
1601
# image-renderer ImagePullPolicy
1602
pullPolicy: Always
1603
# @schema type:[string, null]
1604
dnsPolicy: ~
1605
dnsConfig: {}
1606
# nameservers:
1607
# - 8.8.8.8
1608
# options:
1609
# - name: ndots
1610
# value: "2"
1611
# - name: edns0
1612
# extra environment variables
1613
# @schema skipProperties:true;additionalProperties:true
1614
env:
1615
HTTP_HOST: "0.0.0.0"
1616
# Fixes "Error: Failed to launch the browser process!\nchrome_crashpad_handler: --database is required"
1617
XDG_CONFIG_HOME: /tmp/.chromium
1618
XDG_CACHE_HOME: /tmp/.chromium
1619
# RENDERING_ARGS: --no-sandbox,--disable-gpu,--window-size=1280x758
1620
# RENDERING_MODE: clustered
1621
# IGNORE_HTTPS_ERRORS: true
1622
## "valueFrom" environment variable references that will be added to deployment pods. Name is templated.
1623
## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core
1624
## Renders in container spec as:
1625
## env:
1626
## ...
1627
## - name: <key>
1628
## valueFrom:
1629
## <value rendered as YAML>
1630
envValueFrom: {}
1631
# ENV_NAME:
1632
# configMapKeyRef:
1633
# name: configmap-name
1634
# key: value_key
1635
1636
# image-renderer deployment serviceAccount
1637
serviceAccountName: ""
1638
automountServiceAccountToken: false
1639
# image-renderer deployment hostUsers
1640
# @schema type:[boolean, null]
1641
hostUsers: ~
1642
# image-renderer deployment securityContext
1643
# @schema skipProperties:true;additionalProperties:true
1644
securityContext:
1645
runAsNonRoot: true
1646
runAsUser: 1000
1647
runAsGroup: 1000
1648
seccompProfile:
1649
type: RuntimeDefault
1650
# image-renderer deployment container securityContext
1651
# @schema skipProperties:true;additionalProperties:true
1652
containerSecurityContext:
1653
runAsNonRoot: true
1654
seccompProfile:
1655
type: RuntimeDefault
1656
capabilities:
1657
drop: ['ALL']
1658
allowPrivilegeEscalation: false
1659
privileged: false
1660
readOnlyRootFilesystem: true
1661
## image-renderer pod annotation
1662
# @schema additionalProperties:{"type":"string"}
1663
podAnnotations: {}
1664
# image-renderer deployment Host Aliases
1665
hostAliases: []
1666
# image-renderer deployment priority class
1667
priorityClassName: ''
1668
# Path to the healthcheck endpoint. On Image Renderer v5.0.0 or newer, this is '/healthz'. Older versions use '/'.
1669
healthcheckPath: '/healthz'
1670
# image-renderer container readinessProbe. Disabled by default.
1671
# readinessProbe:
1672
# httpGet:
1673
# path: /healthz
1674
# port: http
1675
readinessProbe: {}
1676
service:
1677
# Enable the image-renderer service
1678
enabled: true
1679
# image-renderer service port name
1680
portName: 'http'
1681
# image-renderer service port used by both service and deployment
1682
port: 8081
1683
targetPort: 8081
1684
# Adds the appProtocol field to the image-renderer service. This allows to work with istio protocol selection. Ex: "http" or "tcp"
1685
appProtocol: ""
1686
serviceMonitor:
1687
## If true, a ServiceMonitor CRD is created for a prometheus operator
1688
## https://github.com/coreos/prometheus-operator
1689
##
1690
enabled: false
1691
path: /metrics
1692
# namespace: monitoring (defaults to use the namespace this chart is deployed to)
1693
# @schema additionalProperties:{"type":"string"}
1694
labels: {}
1695
# Set these to override the Prometheus global scrape interval/timeout.
1696
# interval: 1m
1697
# scrapeTimeout: 30s
1698
# Configure scrape protocol negotiation and native histogram handling.
1699
# Requires corresponding support in the Prometheus Operator CRDs and Prometheus.
1700
# See: https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1.ServiceMonitorSpec
1701
# scrapeProtocols: ["PrometheusProto", "OpenMetricsText1.0.0", "OpenMetricsText0.0.1", "PrometheusText0.0.4"]
1702
# scrapeNativeHistograms: true
1703
# scrapeClassicHistograms: false
1704
# convertClassicHistogramsToNHCB: false
1705
# nativeHistogramBucketLimit: 0
1706
# nativeHistogramMinBucketFactor: "1.1"
1707
# fallbackScrapeProtocol: PrometheusText0.0.4
1708
scheme: http
1709
tlsConfig: {}
1710
relabelings: []
1711
# See: https://doc.crds.dev/github.com/prometheus-operator/kube-prometheus/monitoring.coreos.com/ServiceMonitor/v1@v0.11.0#spec-targetLabels
1712
targetLabels: []
1713
# - targetLabel1
1714
# - targetLabel2
1715
# If https is enabled in Grafana, this needs to be set as 'https' to correctly configure the callback used in Grafana
1716
grafanaProtocol: http
1717
# In case a sub_path is used this needs to be added to the image renderer callback
1718
grafanaSubPath: ""
1719
# name of the image-renderer port on the pod
1720
podPortName: http
1721
# number of image-renderer replica sets to keep
1722
# @schema type:[integer, null]
1723
revisionHistoryLimit: 10
1724
networkPolicy:
1725
# Enable a NetworkPolicy to limit inbound traffic to only the created grafana pods
1726
limitIngress: true
1727
# Enable a NetworkPolicy to limit outbound traffic to only the created grafana pods
1728
limitEgress: false
1729
# Allow additional services to access image-renderer (eg. Prometheus operator when ServiceMonitor is enabled)
1730
extraIngressSelectors: []
1731
resources: {}
1732
# limits:
1733
# cpu: 100m
1734
# memory: 100Mi
1735
# requests:
1736
# cpu: 50m
1737
# memory: 50Mi
1738
## Node labels for pod assignment
1739
## ref: https://kubernetes.io/docs/user-guide/node-selection/
1740
#
1741
nodeSelector: {}
1742
## Tolerations for pod assignment
1743
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
1744
##
1745
tolerations: []
1746
## Affinity for pod assignment (evaluated as template)
1747
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
1748
##
1749
affinity: {}
1750
## Use an alternate scheduler, e.g. "stork".
1751
## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
1752
##
1753
# schedulerName: "default-scheduler"
1754
1755
# Extra configmaps to mount in image-renderer pods
1756
extraConfigmapMounts: []
1757
# Extra secrets to mount in image-renderer pods
1758
extraSecretMounts: []
1759
# Extra volumes to mount in image-renderer pods
1760
extraVolumeMounts: []
1761
# Extra volumes for image-renderer pods
1762
extraVolumes: []
1763
networkPolicy:
1764
# -- Enable creation of NetworkPolicy resources. Only Ingress traffic is filtered for now.
1765
enabled: false
1766
# -- When true enables the creation of an ingress network policy
1767
ingress: true
1768
# -- Don't require client label for connections.
1769
# The Policy model to apply. When set to false, only pods with the correct
1770
# client label will have network access to grafana port defined.
1771
# When true, grafana will accept connections from any source
1772
# (with the correct destination port).
1773
allowExternal: true
1774
# -- A Kubernetes LabelSelector to explicitly select namespaces from which traffic could be allowed
1775
# If explicitNamespacesSelector is missing or set to {}, only client Pods that are in the networkPolicy's namespace
1776
# and that match other criteria, the ones that have the good label, can reach the grafana.
1777
# But sometimes, we want the grafana to be accessible to clients from other namespaces, in this case, we can use this
1778
# LabelSelector to select these namespaces, note that the networkPolicy's namespace should also be explicitly added.
1779
# </br>
1780
#
1781
# Example:
1782
#
1783
# ```
1784
# explicitNamespacesSelector:
1785
# matchLabels:
1786
# role: frontend
1787
# matchExpressions:
1788
# - {key: role, operator: In, values: [frontend]}
1789
# ```
1790
explicitNamespacesSelector: {}
1791
# -- List of CIDR blocks allowed as ingress sources.
1792
# Each entry must be a valid CIDR notation string (e.g. 10.0.0.0/8).
1793
# When defined, the specified CIDR ranges are added to the ingress `from` rules
1794
# using `ipBlock` entries and complement the other configured ingress sources.
1795
# </br>
1796
#
1797
# Example:
1798
#
1799
# ```
1800
# explicitIpBlocks:
1801
# - 35.191.0.0/16
1802
# - 130.211.0.0/22
1803
# ```
1804
#
1805
explicitIpBlocks: []
1806
egress:
1807
# -- When enabled, an egress network policy will be
1808
# created allowing grafana to connect to external data sources from kubernetes cluster.
1809
enabled: false
1810
# -- When enabled, DNS resolution will be blocked
1811
# for all pods in the grafana namespace.
1812
blockDNSResolution: false
1813
# -- Add individual ports to be allowed by the egress
1814
ports: []
1815
# Add ports to the egress by specifying - port: <port number>
1816
# E.X.
1817
# - port: 80
1818
# - port: 443
1819
#
1820
# -- Allow egress traffic to specific destinations
1821
to: []
1822
# -- destinations to the egress by specifying - ipBlock: <CIDR>
1823
# E.X.
1824
# to:
1825
# - namespaceSelector:
1826
# matchExpressions:
1827
# - {key: role, operator: In, values: [grafana]}
1828
# Enable backward compatibility of kubernetes where version below 1.13 doesn't have the enableServiceLinks option
1829
enableKubeBackwardCompatibility: false
1830
useStatefulSet: false
1831
## podManagementPolicy controls how Pods are created and deleted during initial
1832
## deployment and scaling operations. It does not affect rolling updates, which
1833
## remain ordered regardless of this setting. Only applies when Grafana is deployed
1834
## as a StatefulSet (useStatefulSet: true or persistence.type: statefulset).
1835
## Valid values: OrderedReady (default) or Parallel.
1836
## Note: this field is immutable after StatefulSet creation; changing it requires
1837
## deleting and recreating the StatefulSet.
1838
podManagementPolicy: OrderedReady
1839
# extraObjects could be utilized to add dynamic manifests via values
1840
extraObjects: []
1841
# Examples:
1842
# extraObjects:
1843
# - apiVersion: kubernetes-client.io/v1
1844
# kind: ExternalSecret
1845
# metadata:
1846
# name: grafana-secrets-{{ .Release.Name }}
1847
# spec:
1848
# backendType: gcpSecretsManager
1849
# data:
1850
# - key: grafana-admin-password
1851
# name: adminPassword
1852
# Alternatively, you can use strings, which lets you use additional templating features:
1853
# extraObjects:
1854
# - |
1855
# apiVersion: kubernetes-client.io/v1
1856
# kind: ExternalSecret
1857
# metadata:
1858
# name: grafana-secrets-{{ .Release.Name }}
1859
# spec:
1860
# backendType: gcpSecretsManager
1861
# data:
1862
# - key: grafana-admin-password
1863
# name: {{ include "some-other-template" }}
1864
1865
# assertNoLeakedSecrets is a helper function defined in _helpers.tpl that checks if secret
1866
# values are not exposed in the rendered grafana.ini configmap. It is enabled by default.
1867
#
1868
# To pass values into grafana.ini without exposing them in a configmap, use variable expansion:
1869
# https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/#variable-expansion
1870
#
1871
# Alternatively, if you wish to allow secret values to be exposed in the rendered grafana.ini configmap,
1872
# you can disable this check by setting assertNoLeakedSecrets to false.
1873
assertNoLeakedSecrets: true
1874
# updateMode options are:
1875
# Off: n the Off update mode, the VPA recommender still analyzes resource usage and generates recommendations, but these recommendations are not automatically applied to Pods. The recommendations are only stored in the VPA object's .status field.
1876
# Initial: In Initial mode, VPA only sets resource requests when Pods are first created. It does not update resources for already running Pods, even if recommendations change over time. The recommendations apply only during Pod creation.
1877
# Recreate: In Recreate mode, VPA actively manages Pod resources by evicting Pods when their current resource requests differ significantly from recommendations. When a Pod is evicted, the workload controller (managing a Deployment, StatefulSet, etc) creates a replacement Pod, and the VPA admission controller applies the updated resource requests to the new Pod.
1878
# InPlaceOrRecreate: In Recreate mode, VPA actively manages Pod resources by evicting Pods when their current resource requests differ significantly from recommendations. When a Pod is evicted, the workload controller (managing a Deployment, StatefulSet, etc) creates a replacement Pod, and the VPA admission controller applies the updated resource requests to the new Pod.
1879
# Auto (deprecated): The Auto update mode is deprecated since VPA version 1.4.0. Use Recreate for eviction-based updates, or InPlaceOrRecreate for in-place updates with eviction fallback.
1880
verticalPodAutoscaler:
1881
enabled: false
1882
updateMode: "Off"
1883
controlledResources:
1884
cpu: true
1885
memory: true
1886
# Default safety bounds
1887
# @schema skipProperties:true;additionalProperties:{"type":["string","number"]}
1888
minAllowed:
1889
cpu: "25m"
1890
memory: "128Mi"
1891
# @schema skipProperties:true;additionalProperties:{"type":["string","number"]}
1892
maxAllowed:
1893
cpu: "1000m"
1894
memory: "1Gi"
1895

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.