Files
service-catalog/manifests/helm/perses/0.21.0
wbsong111 6290322f1b Add VictoriaMetrics observability stack + sync catalog for monitoring test
- VM stack 10 charts: victoria-metrics-cluster/auth, victoria-logs-cluster,
  victoria-metrics-agent/alert, opentelemetry-collector, kube-state-metrics,
  prometheus-node-exporter, alertmanager, perses (JWT/OIDC, Infisical-ready)
- ArgoCD ApplicationSet (syncWave) + per-chart dip-values overlays
- doc/victoria-metrics-architecture.md, define-chart-resources updates
- includes pending working-tree changes (mlflow, kubeflow, apisix, CLAUDE.md)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 11:10:51 +09:00
..

perses

Perses helm chart

Version: 0.20.1 Type: application AppVersion: v0.53.1

Installing the Chart

To install the chart with the release name my-release:

helm repo add perses https://perses.github.io/helm-charts
helm repo update
helm install my-release perses/perses

Uninstalling the Chart

To uninstall/delete the my-release deployment:

helm delete my-release

Upgrading

For upgrade instructions, including handling breaking changes between versions, see the Upgrade Guide.

Values

Key Type Default Description
additionalLabels object {}
affinity object {}
annotations object {} Statefulset Annotations
config object {"annotations":{},"api_prefix":"","database":{"file":{"extension":"json","folder":"/perses"}},"frontend":{"explorer":{"enable":true},"important_dashboards":[],"information":""},"provisioning":{"folders":["/etc/perses/provisioning"],"interval":"10m"},"security":{"cookie":{"same_site":"lax","secure":false},"enable_auth":false,"readonly":false}} Perses configuration file ref: https://github.com/perses/perses/blob/main/docs/configuration/configuration.md
config.annotations object {} Annotations for config
config.api_prefix string "" Use it in case you want to prefix the API path. By default the API is served with the path /api. With this config, it will be served with the path <api_prefix>/api
config.database object {"file":{"extension":"json","folder":"/perses"}} Database config based on data base type
config.database.file object {"extension":"json","folder":"/perses"} file system configs
config.frontend object {"explorer":{"enable":true},"important_dashboards":[],"information":""} Frontend configuration
config.frontend.important_dashboards list [] Important dashboards list
config.frontend.information string "" Information contains markdown content to be display on the home page
config.provisioning object {"folders":["/etc/perses/provisioning"],"interval":"10m"} provisioning config
config.security.cookie object {"same_site":"lax","secure":false} cookie config
config.security.enable_auth bool false Enable Authentication
config.security.readonly bool false Configure Perses instance as readonly
datasources list [] Configure datasources DEPRECATED: This field will be removed in the future release. Please use the 'sidecar' configuration to provision datasources. ref: https://github.com/perses/perses/blob/90beed356243208f14cf2249bebb6f6222cb77ae/docs/datasource.md
envVars list [] Perses configuration as environment variables. A Kubernetes Secret will be created containing these environment variables. Perses automatically merges them at runtime using the PERSES_<YAML_PATH> pattern, e.g. PERSES_SECURITY_AUTHENTICATION_PROVIDERS_OIDC_0_CLIENT_SECRET For more information, see: https://perses.dev/perses/docs/configuration/configuration/?h=envir#configuration-file
envVarsExternalSecretName string "" Name of existing Kubernetes Secret containing environment variables. When specified, no new Secret is created and values from envVars array are ignored. ######################################################################################################## ##### WARNING: 'envVarsExternalSecretName' is deprecated since 0.19.2 and will be removed soon. ##### ##### Use the 'secret' block to reference an existing Secret instead. ##### ##### Example: set secret.create=false and secret.name to your Secret name. ##### ########################################################################################################
extraArgs object {} Additional arguments to pass to perses. Set to null for argumentless flags
extraObjects list [] Deploy extra K8s manifests
fullnameOverride string "" Override fully qualified app name
gateway object {"annotations":{},"createGateway":true,"enabled":false,"gatewayClassName":"","httpRoute":{"annotations":{},"hostnames":["perses.local"],"labels":{},"name":"","parentRefs":[],"rules":[]},"labels":{},"listeners":[{"allowedRoutes":{"namespaces":{"from":"Same"}},"hostname":"","name":"http","port":80,"protocol":"HTTP"}],"name":"","namespace":""} Configure Gateway API resources to expose Perses Frontend through a Gateway and HTTPRoute
gateway.annotations object {} Annotations to add to the Gateway
gateway.createGateway bool true Create a Gateway resource. If false, only the HTTPRoute is created and parentRefs must target an existing Gateway.
gateway.enabled bool false Enable Gateway API resources
gateway.gatewayClassName string "" GatewayClass name used by the Gateway. Required when createGateway is true.
gateway.httpRoute.annotations object {} Annotations to add to the HTTPRoute
gateway.httpRoute.hostnames list ["perses.local"] Hostnames served by the HTTPRoute
gateway.httpRoute.labels object {} Labels to add to the HTTPRoute
gateway.httpRoute.name string "" Name of the HTTPRoute. Defaults to "
-perses-http-route" when empty.
gateway.httpRoute.parentRefs list [] ParentRefs for the HTTPRoute. Defaults to the created Gateway when createGateway is true.
gateway.httpRoute.rules list [] Rules for the HTTPRoute. Defaults to a single PathPrefix "/" rule targeting the Perses service.
gateway.labels object {} Labels to add to the Gateway
gateway.listeners list [{"allowedRoutes":{"namespaces":{"from":"Same"}},"hostname":"","name":"http","port":80,"protocol":"HTTP"}] Listener configuration for the Gateway
gateway.name string "" Name of the Gateway to create or reference. Defaults to "
-perses-gateway" when empty.
gateway.namespace string "" Namespace of the Gateway. Defaults to the release namespace when empty.
image.name string "persesdev/perses" Perses image repository and name
image.pullPolicy string "IfNotPresent" Default image pull policy
image.registry string "docker.io" Perses image registry
image.version string "" Overrides the image tag whose default is the chart appVersion.
ingress object {"annotations":{},"enabled":false,"hosts":[{"host":"perses.local","paths":[{"path":"/","pathType":"Prefix"}]}],"ingressClassName":"","tls":[]} Configure the ingress resource that allows you to access Perses Frontend ref: https://kubernetes.io/docs/concepts/services-networking/ingress/
ingress.annotations object {} Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. For a full list of possible ingress annotations, please see ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md
ingress.enabled bool false Enable ingress controller resource
ingress.hosts list [{"host":"perses.local","paths":[{"path":"/","pathType":"Prefix"}]}] Default host for the ingress resource
ingress.ingressClassName string "" IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+) This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster . ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
ingress.tls list [] Ingress TLS configuration
livenessProbe object {"enabled":true,"failureThreshold":5,"initialDelaySeconds":10,"periodSeconds":60,"successThreshold":1,"timeoutSeconds":5} Liveness probe configuration Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
logLevel string "info" Log level for Perses be configured in available options "panic", "error", "warning", "info", "debug", "trace"
nameOverride string "" Override name of the chart used in Kubernetes object names.
nodeSelector object {} Node labels for Perses pod assignment # Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ #
ociArtifacts object {} OCI artifacts configuration for mounting OCI images as volumes. This feature allows you to package Perses manifests (dashboards, datasources, projects, etc.) as OCI images and mount them directly into the Perses container. The mounted manifests will be automatically loaded by Perses provisioning system when mounted at the provisioning path. Use cases: - Distribute dashboards as versioned OCI images - Deploy datasource configurations from container registries - Enable immutable configuration deployments with rollback capabilities Requirements: Kubernetes v1.31+ and ImageVolume feature gate enabled Note: OCI artifacts are inherently read-only Ref: https://kubernetes.io/docs/tasks/configure-pod-container/image-volumes/
persistence object {"accessModes":["ReadWriteOnce"],"annotations":{},"enabled":false,"labels":{},"securityContext":{"fsGroup":2000},"size":"8Gi"} Persistence parameters
persistence.accessModes list ["ReadWriteOnce"] PVC Access Modes for data volume
persistence.annotations object {} Annotations for the PVC
persistence.enabled bool false If disabled, it will use a emptydir volume
persistence.labels object {} Labels for the PVC
persistence.securityContext object {"fsGroup":2000} Pod-level security context applied to all containers
persistence.securityContext.fsGroup int 2000 Group ID that owns mounted volumes (needed for file access when using persistent storage)
persistence.size string "8Gi" PVC Storage Request for data volume
podAntiAffinity string "" Pod anti-affinity can prevent the scheduler from placing Perses replicas on the same node. # The value "soft" means that the scheduler should prefer to not schedule two replica pods onto the same node but no guarantee is provided. # The value "hard" means that the scheduler is required to not schedule two replica pods onto the same node. # The default value "" will disable pod anti-affinity so that no anti-affinity rules will be configured. #
podAntiAffinityTopologyKey string "kubernetes.io/hostname" If anti-affinity is enabled sets the topologyKey to use for anti-affinity. # This can be changed to, for example, failure-domain.beta.kubernetes.io/zone #
provisioningPersistence object {"accessModes":["ReadWriteOnce"],"annotations":{},"enabled":false,"labels":{},"size":"1Gi","storageClass":""} Persistence configuration for Perses provisioning. For more information on provisioning feature, see: https://perses.dev/perses/docs/configuration/provisioning/ When enabled, a PersistentVolumeClaim (PVC) is created via StatefulSet volumeClaimTemplates. The PVC will be named: provisioning-
Examples: - Release "perses-oci" → PVC: "provisioning-perses-oci-0" - Release "my-app" → PVC: "provisioning-my-app-perses-0" This PVC can be referenced by other workloads (e.g., CronJobs) to write dashboards/datasources. | | provisioningPersistence.accessModes | list | `["ReadWriteOnce"]` | access modes for provisioning PVC ReadWriteOnce: Only one pod can mount (cheaper, single-node storage) ReadWriteMany: Multiple pods can mount simultaneously (required for CronJobs or multiple replicas) Note: ReadWriteMany requires storage class that supports it (e.g., NFS, CephFS, Azure Files) | | provisioningPersistence.annotations | object | `{}` | annotations for provisioning PVC | | provisioningPersistence.enabled | bool | `false` | enable persistent volume for provisioning | | provisioningPersistence.labels | object | `{}` | labels for provisioning PVC | | provisioningPersistence.size | string | `"1Gi"` | size of provisioning PVC | | provisioningPersistence.storageClass | string | `""` | storage class for provisioning PVC | | readinessProbe | object | `{"enabled":true,"failureThreshold":5,"initialDelaySeconds":5,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":5}` | Readiness probe configuration Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ | | replicas | int | `1` | Number of pod replicas. | | resources | object | `{}` | Resource limits & requests. Update according to your own use case as these values might be too low for a typical deployment. ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ | | secret | object | `{"create":true,"name":""}` | Secret settings for envVars / auto-generated auth env vars | | secret.create | bool | `true` | Create the Secret automatically | | secret.name | string | `""` | Name of the Secret to reference (defaults to release fullname when empty) | | service | object | `{"annotations":{},"labels":{},"port":8080,"portName":"http","targetPort":8080,"type":"ClusterIP"}` | Expose the Perses service to be accessed from outside the cluster (LoadBalancer service). or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it. | | service.annotations | object | `{}` | Annotations to add to the service | | service.labels | object | `{}` | Labels to add to the service | | service.port | int | `8080` | Service Port | | service.portName | string | `"http"` | Service Port Name | | service.targetPort | int | `8080` | Perses running port | | service.type | string | `"ClusterIP"` | Service Type | | serviceAccount | object | `{"annotations":{},"create":true,"name":""}` | Service account for Perses to use. | | serviceAccount.annotations | object | `{}` | Annotations to add to the service account | | serviceAccount.create | bool | `true` | Specifies whether a service account should be created | | serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | | serviceMonitor.interval | string | `"30s"` | Interval for the serviceMonitor | | serviceMonitor.labels | object | `{}` | Labels to add to the ServiceMonitor so that Prometheus can discover it. These labels should match the 'serviceMonitorSelector.matchLabels' defined in your Prometheus CR. | | serviceMonitor.selector.matchLabels | object | `{}` | Selector used by the ServiceMonitor to find which Perses service to scrape metrics from. These matchLabels should match the labels on your Perses service. | | serviceMonitor.selfMonitor | bool | `false` | Create a serviceMonitor for Perses | | sidecar | object | `{"allNamespaces":true,"enableSecretAccess":false,"enabled":false,"extraEnvVars":[],"globalAdminUsers":[],"healthPort":8081,"image":{"registry":"docker.io","repository":"kiwigrid/k8s-sidecar","tag":"2.5.0"},"label":"perses.dev/resource","labelValue":"true","securityContext":{}}` | Sidecar configuration that watches for ConfigMaps with the specified label/labelValue and loads them into Perses provisioning | | sidecar.allNamespaces | bool | `true` | check for configmaps from all namespaces. When set to false, it will only check for configmaps in the same namespace as the Perses instance | | sidecar.enableSecretAccess | bool | `false` | Enable secret access permissions in the cluster role. When enabled, the sidecar will have permissions to read secrets and use them. | | sidecar.enabled | bool | `false` | Enable the sidecar container for ConfigMap provisioning | | sidecar.extraEnvVars | list | `[]` | add additional environment variables to sidecar container. you can look at the k8s-sidecar documentation for more information - https://github.com/kiwigrid/k8s-sidecar | | sidecar.globalAdminUsers | list | `[]` | List of usernames to bind to the Perses global-admin role when the sidecar is enabled | | sidecar.healthPort | int | `8081` | Port exposed by the sidecar health endpoint (k8s-sidecar HEALTH_PORT env var) | | sidecar.image.registry | string | `"docker.io"` | Container image registry for the sidecar | | sidecar.image.repository | string | `"kiwigrid/k8s-sidecar"` | Container image repository for the sidecar | | sidecar.image.tag | string | `"2.5.0"` | Container image tag for the sidecar | | sidecar.label | string | `"perses.dev/resource"` | Label key to watch for ConfigMaps containing Perses resources | | sidecar.labelValue | string | `"true"` | Label value to watch for ConfigMaps containing Perses resources | | sidecar.securityContext | object | `{}` | dedicated sidecar container security in case elevated privileges are needed for writing to volumes. | | testFramework.enabled | bool | `true` | | | testFramework.image.registry | string | `"ghcr.io"` | | | testFramework.image.repository | string | `"cloudoperators/greenhouse-extensions-integration-test"` | | | testFramework.image.tag | string | `"main"` | | | testFramework.imagePullPolicy | string | `"IfNotPresent"` | | | tls | object | `{"caCert":{"enabled":false,"mountPath":"/ca","secretName":""},"clientCert":{"enabled":false,"mountPath":"/tls","secretName":""},"enabled":false}` | TLS configuration for mounting certificates from Kubernetes secrets | | tls.caCert | object | `{"enabled":false,"mountPath":"/ca","secretName":""}` | CA Certificate configuration Certificates will be mounted to the directory specified in mountPath | | tls.caCert.enabled | bool | `false` | Enable CA certificate mounting | | tls.caCert.mountPath | string | `"/ca"` | Mount path for the CA certificate directory | | tls.caCert.secretName | string | `""` | Name of the Kubernetes secret containing the CA certificate Defaults to "release-name-tls" if not specified | | tls.clientCert | object | `{"enabled":false,"mountPath":"/tls","secretName":""}` | Client Certificate configuration (contains both cert and key) Certificates will be mounted to the directory specified in mountPath | | tls.clientCert.enabled | bool | `false` | Enable client certificate mounting | | tls.clientCert.mountPath | string | `"/tls"` | Mount path for the client certificate directory | | tls.clientCert.secretName | string | `""` | Name of the Kubernetes secret containing the client certificate and key Defaults to "release-name-tls" if not specified | | tls.enabled | bool | `false` | Enable TLS certificate mounting | | tolerations | list | `[]` | Node tolerations for server scheduling to nodes with taints # Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ # | | topologySpreadConstraints | list | `[]` | Pod topology spread constraints # ref. https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/ | | volumeMounts | list | `[]` | Additional VolumeMounts on the output StatefulSet definition. | | volumes | list | `[]` | Additional volumes on the output StatefulSet definition. |

Autogenerated from chart metadata using helm-docs v1.14.2