1# $schema: ./values.schema.json
4 # @schema type:[string, null]
5 # -- Overrides the Docker registry globally for all images
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).
22 ## Use an existing ClusterRole/Role (depending on rbac.namespaced false/true)
23 # useExistingRole: name-of-some-role
24 # useExistingClusterRole: name-of-some-clusterRole
28 # Only has an effect if namespaced: true is set
34 extraClusterRoleRules: []
42 ## ServiceAccount labels.
43 # @schema additionalProperties:{"type":"string"}
45 ## Service account annotations. Can be templated.
47 # eks.amazonaws.com/role-arn: arn:aws:iam::123456789000:role/iam-role-name-here
49 ## autoMount is deprecated in favor of automountServiceAccountToken
51 automountServiceAccountToken: false
52# @schema type:[integer, null]
54## Create a headless service for the deployment
56## Should the service account be auto mounted on the pod
57automountServiceAccountToken: true
58## Create HorizontalPodAutoscaler object for deployment type
64 # @schema type:[string, integer, null]
66 # @schema type:[string, integer, null]
69## See `kubectl explain poddisruptionbudget.spec` for more
70## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
71podDisruptionBudget: {}
75# unhealthyPodEvictionPolicy: IfHealthyBudget
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
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]
85progressDeadlineSeconds: 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/
89# @schema skipProperties:true;additionalProperties:true
94# @schema skipProperties:true;additionalProperties:true
99 initialDelaySeconds: 60
102## Use an alternate scheduler, e.g. "stork".
103## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
105# schedulerName: "default-scheduler"
107 # -- The Docker registry
109 # -- Docker image repository
110 repository: chainguard-private/grafana
111 # Overrides the Grafana image tag whose default is the chart appVersion
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/
121 # - myRegistrKeySecretName
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
129 # -- The Docker registry
131 repository: bats/bats
133 imagePullPolicy: IfNotPresent
134 # @schema skipProperties:true;additionalProperties:true
141 # @schema skipProperties:true;additionalProperties:true
142 containerSecurityContext:
143 allowPrivilegeEscalation: false
150 readOnlyRootFilesystem: true
158# dns configuration for pod
159# @schema type:[string, null]
169# @schema type:[boolean, null]
171# @schema skipProperties:true;additionalProperties:true
177# @schema skipProperties:true;additionalProperties:true
178containerSecurityContext:
179 allowPrivilegeEscalation: false
186 readOnlyRootFilesystem: true
187# Enable creating the grafana configmap
189# Extra configmaps to mount in grafana pods
190# Values are templated.
191extraConfigmapMounts: []
192# - name: certs-configmap
193# mountPath: /etc/grafana/ssl/
194# subPath: certificates.crt # (optional)
195# configMap: certs-configmap
199extraEmptyDirMounts: []
200# - name: provisioning-notifiers
201# mountPath: /etc/grafana/provisioning/notifiers
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.
209shadowBundledPlugins: false
210# Apply extra labels to common labels.
211# @schema additionalProperties:{"type":"string"}
213## Assign a PriorityClassName to pods if set
215downloadDashboardsImage:
216 # -- The Docker registry
218 repository: chainguard-private/curl
220 sha: sha256:1236b0f03d761fac7881abe08dbfc9d993d25bd2016d0fdfc644511cd78a09d1
221 pullPolicy: IfNotPresent
226 # @schema skipProperties:true;additionalProperties:true
228 allowPrivilegeEscalation: false
234 readOnlyRootFilesystem: true
238 # name: configmap-name
243## ConfigMap Annotations
244# configMapAnnotations: {}
245# argocd.argoproj.io/sync-options: Replace=true
250gossipPortName: gossip
251## Deployment annotations
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/
261 # Set the ip family policy to configure dual-stack see [Configure dual-stack](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services)
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.
266 loadBalancerClass: ""
267 loadBalancerSourceRanges: []
270 # targetPort: 4181 To be used with a proxy extraContainer
271 ## Service annotations. Can be templated.
272 # @schema additionalProperties:{"type":"string"}
274 # @schema additionalProperties:{"type":"string"}
277 # Adds the appProtocol field to the service. This allows to work with istio protocol selection. Ex: "http" or "tcp"
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: ""
284 ## If true, a ServiceMonitor CR is created for a prometheus operator
285 ## https://github.com/coreos/prometheus-operator
289 # namespace: monitoring (defaults to use the namespace this chart is deployed to)
290 # @schema additionalProperties:{"type":"string"}
292 # Set these to override the Prometheus global scrape interval/timeout.
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
308 metricRelabelings: []
316# overrides pod.spec.hostAliases in the grafana deployment's pods
324 # ingressClassName: nginx
325 # Values can be templated
326 # @schema additionalProperties:{"type":"string"}
328 # kubernetes.io/ingress.class: nginx
329 # kubernetes.io/tls-acme: "true"
330 # @schema additionalProperties:{"type":"string"}
335 - chart-example.local
336 ## Extra paths to prepend to every host configuration. This is useful when working with annotation based services.
344 # name: use-annotation
347 # - secretName: chart-example-tls
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)
358 # -- Enables or disables the route
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
365 # @schema additionalProperties:{"type":"string"}
367 # @schema additionalProperties:{"type":"string"}
370 # - my-filter.example.com
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
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
389 # absoluteTimeout: 48h
391 # lifetimeType: Permanent
393 ## Filters define the filters that are applied to requests that match this rule.
395 ## Additional custom rules that can be added to the route
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/
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)
409 # -- Enables or disables the listener set
411 # -- Set the ListenerSet apiVersion, e.g. gateway.networking.k8s.io/v1
412 apiVersion: gateway.networking.k8s.io/v1
413 # @schema additionalProperties:{"type":"string"}
415 # @schema additionalProperties:{"type":"string"}
417 # -- Reference to the parent Gateway this ListenerSet attaches to
421 # group: gateway.networking.k8s.io
424 # -- List of listeners to attach to the parent Gateway
429 # hostname: grafana.example.com
433 # - name: grafana-tls
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.
450 # -- Enable automatic GOMEMLIMIT injection.
452 # -- Fraction of resources.limits.memory to use as GOMEMLIMIT (e.g. 0.9 = 90 %).
454## Node labels for pod assignment
455## ref: https://kubernetes.io/docs/user-guide/node-selection/
458## Tolerations for pod assignment
459## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
462## Affinity for pod assignment (evaluated as template)
463## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
466## Topology Spread Constraints
467## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
469topologySpreadConstraints: []
470## Additional init containers (evaluated as template)
471## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
473extraInitContainers: []
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]
480# image: quay.io/gambol99/keycloak-proxy:latest
485# - -github-org=<ORG_NAME>
488# - -http-address=http://0.0.0.0:4181
489# - -upstream-url=http://127.0.0.1:3000
494## Volumes that can be used in init containers that will not be mounted to deployment pods
495extraContainerVolumes: []
496# - name: volume-from-secret
498# secretName: secret-to-mount
499# - name: empty-dir-volume
502## Enable persistence using Persistent Volume Claims
503## ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/
508 # storageClassName: default
509 ## (Optional) Use this to bind the claim to an existing PersistentVolume (PV) by name.
513 # @schema type:[string, integer]
517 - kubernetes.io/pvc-protection
519 ## Sub-directory of the PV to mount. Can be templated.
521 ## Name of an existing PVC. Can be templated.
523 ## Extra labels to apply to a PVC.
524 # @schema additionalProperties:{"type":"string"}
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
534 ## If persistence is not enabled, this allows to mount the
535 ## local storage in-memory to improve performance
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
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
548 ## If false, data ownership will not be reset at startup
549 ## This allows the grafana-server to be run with an arbitrary user
552 ## initChownData container image
555 # -- The Docker registry
557 repository: chainguard-private/busybox
559 sha: sha256:67425453f68e574e3efe8ea489f0df0eea09df0e12e7867dd88f1b6458324fac
560 pullPolicy: IfNotPresent
561 ## initChownData resource requests and limits
562 ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/
571 # @schema skipProperties:true;additionalProperties:true
573 readOnlyRootFilesystem: false
584# Administrator credentials when not using an existing secret (see below)
586# adminPassword: strongpassword
588# Use an existing secret for the admin user.
590 ## Name of the secret. Can be templated.
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`.
598# - "/path/to/your/entrypoint"
600## Optionally define args if command is used
601## Needed if using `hashicorp/envconsul` to manage secrets
602## By default no arguments are set
608## Extra environment variables that will be pass onto deployment pods
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
616## "oidc.eks.us-east-1.amazonaws.com/id/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:sub": "system:serviceaccount:NAMESPACE:prometheus-operator-grafana",
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)
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
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
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:
637## <value rendered as YAML>
641# name: configmap-name
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.
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
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.
656## - name: secret-name
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.
663## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#configmapenvsource-v1-core
665## - name: configmap-name
669# Inject Kubernetes services as environment variables.
670# See https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/#environment-variables
671enableServiceLinks: true
672## Additional grafana server secret mounts
673# Defines additional mounts with secrets. Secrets must be manually created in the namespace.
675# - name: secret-files
676# mountPath: /etc/secrets
677# secretName: grafana-secret-files
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
689# - serviceAccountToken:
690# audience: sts.amazonaws.com
691# expirationSeconds: 86400
694# for CSI e.g. Azure Key Vault use the following
695# - name: secrets-store-inline
696# mountPath: /run/secrets/vault.azure.com
699# driver: secrets-store.csi.k8s.io
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
706## Additional grafana server volume mounts
707# Defines additional volume mounts.
709# - name: extra-volume-0
710# mountPath: /mnt/volume0
712# - name: extra-volume-1
713# mountPath: /mnt/volume1
715# - name: grafana-secrets
716# mountPath: /mnt/volume2
718## Additional Grafana server volumes
720# - name: extra-volume-0
721# existingClaim: volume-claim
722# - name: extra-volume-1
726# - name: grafana-secrets
728# driver: secrets-store.csi.k8s.io
731# secretProviderClass: "grafana-env-spc"
733## Container Lifecycle Hooks. Execute a specific bash command or make an HTTP request
739## Pass the plugins you want installed as a list.
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
748## Configure grafana datasources
749## ref: http://docs.grafana.org/administration/provisioning/#datasources
757# url: http://prometheus-prometheus-server
767# defaultRegion: us-east-1
768# deleteDatasources: []
771## Configure grafana alerting (can be templated)
772## ref: https://docs.grafana.com/alerting/set-up/provision-alerting-resources/file-provisioning/
785# name: '{{ .Chart.Name }}_my_rule_group'
786# folder: my_first_folder
790# title: my_first_rule
794# datasourceUid: '-100'
814# maxDataPoints: 43200
817# dashboardUid: my_dashboard
819# noDataState: Alerting
822# some_key: some_value
842# {{ `{{ include "default.message" . }}` }}
848# name: my_first_template
851# {{ define "my_first_template" }}
852# Custom notification message
861# # refer to https://prometheus.io/docs/alerting/latest/configuration/#time_interval-0
864## Configure notifiers
865## ref: http://docs.grafana.org/administration/provisioning/#alert-notification-channels
870# - name: email-notifier
879# addresses: an_email_address@example.com
882## Configure grafana dashboard providers
883## ref: http://docs.grafana.org/administration/provisioning/#dashboards
885## `path` must be /var/lib/grafana/dashboards/<provider_name>
887dashboardProviders: {}
888# dashboardproviders.yaml:
895# disableDeletion: false
898# path: /var/lib/grafana/dashboards/default
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.
906## -k - allow insecure (eg: non-TLS) connections
908## See the curl documentation for additional options
910defaultCurlOptions: "-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.
914defaultShellOptions: "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
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.
929# file: dashboards/custom-dashboard.json
931# title: My Custom Dashboard Title # optional; overrides the dashboard title in the downloaded JSON
934# datasource: Prometheus
936# url: https://example.com/repository/test.json
939# local-dashboard-base64:
940# url: https://example.com/repository/test-b64.json
943# local-dashboard-gitlab:
944# url: https://example.com/repository/test-gitlab.json
946# local-dashboard-bitbucket:
947# url: https://example.com/repository/test-bitbucket.json
949# local-dashboard-azure:
950# url: https://example.com/repository/test-azure.json
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:
959## example-dashboard.json: |
962dashboardsConfigMaps: {}
965## Grafana's primary configuration
966## NOTE: values in map will be converted to ini format
967## ref: http://docs.grafana.org/installation/configuration/
969# @schema skipProperties:true;additionalProperties:true
972 data: /var/lib/grafana/
973 logs: /var/log/grafana
974 plugins: /var/lib/grafana/plugins
975 provisioning: /etc/grafana/provisioning
977 check_for_updates: true
979 preinstall_auto_update: "false"
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 }}"
985 index_path: /var/lib/grafana-search/bleve
986 ## grafana Authentication can be enabled with the following values on grafana.ini
988 # The full public facing url you use in browser, used for redirects and emails
990 # https://grafana.com/docs/grafana/latest/auth/github/#enable-github-in-grafana
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
999 # allowed_organizations:
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
1006# allow_sign_up: true
1007# config_file: /etc/grafana/ldap.toml
1008## Grafana's alerting configuration
1011# rule_version_record_limit: "5"
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
1020 # `existingSecret` is a reference to an existing secret containing the ldap configuration
1021 # for Grafana in a key `ldap-toml`.
1023 # `config` is the content of `ldap.toml` that will be stored in the created secret
1026 # verbose_logging = true
1028# host = "my-ldap-server"
1032# ssl_skip_verify = false
1033# bind_dn = "uid=%s,ou=users,dc=myorg,dc=com"
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
1038shareProcessNamespace: 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
1043 # `existingSecret` is a reference to an existing secret containing the smtp configuration
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
1052 # -- The Docker registry
1054 repository: chainguard-private/k8s-sidecar
1056 sha: sha256:60b17aa0968a174544c42649aa8dd41997e628fdfac2fd2252e17a80fbe1e7d9
1057 imagePullPolicy: IfNotPresent
1065 # @schema skipProperties:true;additionalProperties:true
1067 allowPrivilegeEscalation: false
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
1079 # Log level default for all sidecars. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL. Defaults to INFO
1083 # Additional environment variables for the alerts sidecar
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:
1092 ## <value rendered as YAML>
1096 # name: configmap-name
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)
1106 # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.
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.
1115 # search in configmap, secret or both
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"
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
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
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
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
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.
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]
1159 # This is needed if skipReload is true, to load any alerts defined at startup time.
1160 # Deploy the alert sidecar as an initContainer.
1162 # Use native sidecar https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/
1163 # restartPolicy: Always
1164 # # only applies to native sidecars
1169 # initialDelaySeconds: 5
1171 # failureThreshold: 60 # 5 minutes
1172 # Additional alerts sidecar volume mounts
1174 # Sets the size limit of the alert sidecar emptyDir volume
1175 # @schema type:[string, integer]
1179 # Additional environment variables for the dashboards sidecar
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:
1188 ## <value rendered as YAML>
1192 # name: configmap-name
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
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)
1203 # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.
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.
1217 # search in configmap, secret or 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
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"
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
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
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.
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]
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
1265 # initialDelaySeconds: 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
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
1278 # provider configuration that lets grafana manage the dashboards
1280 # name of the provider, should be unique
1281 name: sidecarProvider
1282 # orgid as configured in grafana
1283 # @schema type:[string, integer]
1285 # folder in which the dashboards should be imported in grafana
1287 # <string> folder UID. will be automatically generated if not specified
1289 # type of the provider
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
1299 # Sets the size limit of the dashboard sidecar emptyDir volume
1300 # @schema type:[string, integer]
1304 # Additional environment variables for the datasourcessidecar
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:
1313 ## <value rendered as YAML>
1317 # name: configmap-name
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)
1327 # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.
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.
1336 # search in configmap, secret or both
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"
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
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
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
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
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.
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]
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
1390 # initialDelaySeconds: 5
1392 # failureThreshold: 60 # 5 minutes
1393 # Additional datasources sidecar volume mounts
1395 # Sets the size limit of the datasource sidecar emptyDir volume
1396 # @schema type:[string, integer]
1400 # Additional environment variables for the plugins sidecar
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)
1410 # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.
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.
1419 # search in configmap, secret or both
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"
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
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
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
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
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.
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]
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.
1466 # Additional plugins sidecar volume mounts
1468 # Sets the size limit of the plugin sidecar emptyDir volume
1469 # @schema type:[string, integer]
1473 # Additional environment variables for the notifierssidecar
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)
1483 # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.
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.
1492 # search in configmap, secret or both
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"
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
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
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
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
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.
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]
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
1546 # initialDelaySeconds: 5
1548 # failureThreshold: 60 # 5 minutes
1549 # Additional notifiers sidecar volume mounts
1551 # Sets the size limit of the notifier sidecar emptyDir volume
1552 # @schema type:[string, integer]
1554## Override the deployment namespace
1556namespaceOverride: ""
1557## Number of old ReplicaSets to retain
1559# @schema type:[integer, null]
1560revisionHistoryLimit: 10
1561## Add a separate remote image renderer deployment/service
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
1571 # @schema type:[integer, null]
1577 # @schema type:[string, integer, null]
1579 # @schema type:[string, integer, null]
1582 # The url of remote image renderer if it is not in the same namespace with the grafana instance
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.
1588 # Use an existing secret for the image renderer token. Must contain a key named "token".
1591 # -- The Docker registry
1593 # image-renderer Image repository
1594 repository: chainguard-private/grafana-image-renderer
1595 # image-renderer Image tag
1597 # image-renderer Image sha (optional)
1598 sha: sha256:fb49ee8e6b6d05ca93b09084e655142e557f8a290c442447f7fffae4b0462ce3
1599 # image-renderer Image pull secrets (optional)
1601 # image-renderer ImagePullPolicy
1603 # @schema type:[string, null]
1612 # extra environment variables
1613 # @schema skipProperties:true;additionalProperties:true
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:
1629 ## <value rendered as YAML>
1633 # name: configmap-name
1636 # image-renderer deployment serviceAccount
1637 serviceAccountName: ""
1638 automountServiceAccountToken: false
1639 # image-renderer deployment hostUsers
1640 # @schema type:[boolean, null]
1642 # image-renderer deployment securityContext
1643 # @schema skipProperties:true;additionalProperties:true
1649 type: RuntimeDefault
1650 # image-renderer deployment container securityContext
1651 # @schema skipProperties:true;additionalProperties:true
1652 containerSecurityContext:
1655 type: RuntimeDefault
1658 allowPrivilegeEscalation: false
1660 readOnlyRootFilesystem: true
1661 ## image-renderer pod annotation
1662 # @schema additionalProperties:{"type":"string"}
1664 # image-renderer deployment Host Aliases
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.
1677 # Enable the image-renderer service
1679 # image-renderer service port name
1681 # image-renderer service port used by both service and deployment
1684 # Adds the appProtocol field to the image-renderer service. This allows to work with istio protocol selection. Ex: "http" or "tcp"
1687 ## If true, a ServiceMonitor CRD is created for a prometheus operator
1688 ## https://github.com/coreos/prometheus-operator
1692 # namespace: monitoring (defaults to use the namespace this chart is deployed to)
1693 # @schema additionalProperties:{"type":"string"}
1695 # Set these to override the Prometheus global scrape interval/timeout.
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
1711 # See: https://doc.crds.dev/github.com/prometheus-operator/kube-prometheus/monitoring.coreos.com/ServiceMonitor/v1@v0.11.0#spec-targetLabels
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
1719 # name of the image-renderer port on the pod
1721 # number of image-renderer replica sets to keep
1722 # @schema type:[integer, null]
1723 revisionHistoryLimit: 10
1725 # Enable a NetworkPolicy to limit inbound traffic to only the created grafana pods
1727 # Enable a NetworkPolicy to limit outbound traffic to only the created grafana pods
1729 # Allow additional services to access image-renderer (eg. Prometheus operator when ServiceMonitor is enabled)
1730 extraIngressSelectors: []
1738 ## Node labels for pod assignment
1739 ## ref: https://kubernetes.io/docs/user-guide/node-selection/
1742 ## Tolerations for pod assignment
1743 ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
1746 ## Affinity for pod assignment (evaluated as template)
1747 ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
1750 ## Use an alternate scheduler, e.g. "stork".
1751 ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
1753 # schedulerName: "default-scheduler"
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
1764 # -- Enable creation of NetworkPolicy resources. Only Ingress traffic is filtered for now.
1766 # -- When true enables the creation of an ingress network policy
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).
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.
1784 # explicitNamespacesSelector:
1788 # - {key: role, operator: In, values: [frontend]}
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.
1805 explicitIpBlocks: []
1807 # -- When enabled, an egress network policy will be
1808 # created allowing grafana to connect to external data sources from kubernetes cluster.
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
1815 # Add ports to the egress by specifying - port: <port number>
1820 # -- Allow egress traffic to specific destinations
1822 # -- destinations to the egress by specifying - ipBlock: <CIDR>
1825 # - namespaceSelector:
1827 # - {key: role, operator: In, values: [grafana]}
1828# Enable backward compatibility of kubernetes where version below 1.13 doesn't have the enableServiceLinks option
1829enableKubeBackwardCompatibility: false
1830useStatefulSet: 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.
1838podManagementPolicy: OrderedReady
1839# extraObjects could be utilized to add dynamic manifests via values
1843# - apiVersion: kubernetes-client.io/v1
1844# kind: ExternalSecret
1846# name: grafana-secrets-{{ .Release.Name }}
1848# backendType: gcpSecretsManager
1850# - key: grafana-admin-password
1851# name: adminPassword
1852# Alternatively, you can use strings, which lets you use additional templating features:
1855# apiVersion: kubernetes-client.io/v1
1856# kind: ExternalSecret
1858# name: grafana-secrets-{{ .Release.Name }}
1860# backendType: gcpSecretsManager
1862# - key: grafana-admin-password
1863# name: {{ include "some-other-template" }}
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.
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
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.
1873assertNoLeakedSecrets: 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.
1880verticalPodAutoscaler:
1883 controlledResources:
1886 # Default safety bounds
1887 # @schema skipProperties:true;additionalProperties:{"type":["string","number"]}
1891 # @schema skipProperties:true;additionalProperties:{"type":["string","number"]}