6290322f1b
- 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>
perses
Perses helm chart
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- |
Autogenerated from chart metadata using helm-docs v1.14.2