Version ArtifactHub License Slack X Reddit

The VictoriaLogs cluster chart packages everything required to run a horizontally scalable, highly available log-storage backend inside Kubernetes.

Prerequisites #

Before installing this chart, ensure your environment meets the following requirements:

  • Kubernetes cluster - A running Kubernetes cluster with sufficient resources
  • Helm - Helm package manager installed and configured

Additional requirements depend on your configuration:

  • Persistent storage - Required if you enable persistent volumes for data retention (enabled by default)
  • kubectl - Needed for cluster management and troubleshooting

For installation instructions, refer to the official documentation:

Chart Details #

VictoriaLogs Cluster #

When you install the chart, it creates the following core services and an optional log collector:

  • vlinsert receives incoming log streams from various sources and load-balances them across remote nodes.
  • vlstorage forms a StatefulSet that stores raw data on persistent volumes.
  • vlselect provides the query API and reads data from any storage replica, so adding more vlselect pods increases read throughput without impacting the stored data.
  • The log collector vector is disabled by default, but as soon as you set vector.enabled: true, a DaemonSet is deployed on every node. It starts tailing pod logs using the default parsing pipeline and automatically discovers the internal vlinsert addresses.
      vector:
  enabled: true
    

The default chart setup is shown below:

graph LR
    Vector["Log Collector"] --> VLI1["vlinsert-1"]
    Vector --> VLI2["vlinsert-2"]
   
    subgraph "VictoriaLogs Cluster"
        VLI1 --> VLS1["vlstorage-1"]
        VLI1 --> VLS2["vlstorage-2"]
        VLI2 --> VLS1
        VLI2 --> VLS2
       
        VLS1 <--> VLQ1["vlselect-1"]
        VLS1 <--> VLQ2["vlselect-2"]
        VLS2 <--> VLQ1
        VLS2 <--> VLQ2
    end
   
    VLQ1 <--> Users["Users/Grafana/vlogscli"]
    VLQ2 <--> Users

Vector #

When Vector is enabled with vector.enabled: true, the default configuration works out of the box:

  • The default role is set to “Agent” (typically deployed as a DaemonSet with a data directory at /vector-data-dir).
  • Vector is configured with the k8s source, using the kubernetes_logs type to collect logs from all Kubernetes pods in the cluster.
  • The default transform configuration includes a parser component that performs JSON parsing on incoming log messages.
    • It attempts to parse the message field as JSON, and if successful, stores the parsed content in a .log field.
    • If JSON parsing fails, it falls back to the original message content.
  • The default sink configuration includes a vlogs sink, configured as an Elasticsearch-compatible endpoint, which sends processed logs to vlinsert using bulk mode with gzip compression.

When you scale the number of vlinsert replicas using vlinsert.replicaCount, the chart automatically updates Vector’s configuration to include all new instances, providing horizontal scaling of ingestion capacity without service interruption.

vmauth #

When you enable vmauth with:

      vmauth:
  enabled: true
    

The chart automatically launches a vmauth service with a routing configuration that splits read and write traffic according to VictoriaLogs cluster architecture patterns.

External applications can send requests to vmauth, which will intelligently route:

  • Write requests (log ingestion) to vlinsert.
  • Read requests (log queries) to vlselect.

The default Vector configuration bypasses this and continues sending logs directly to vlinsert. So, the chart can now be thought of as:

graph LR
    Vector["Log Collector"] --> VLI1["vlinsert-1"]
    Vector --> VLI2["vlinsert-2"]
   
    subgraph "VictoriaLogs Cluster"
        VLI1 --> VLS1["vlstorage-1"]
        VLI1 --> VLS2["vlstorage-2"]
        VLI2 --> VLS1
        VLI2 --> VLS2
       
        VLS1 <--> VLQ1["vlselect-1"]
        VLS1 <--> VLQ2["vlselect-2"]
        VLS2 <--> VLQ1
        VLS2 <--> VLQ2
    end
   
    VLQ1 <--> Users["vmauth"]
    VLQ2 <--> Users

Note that vmauth can send requests to vlinsert as needed. The diagram above shows a common use case.

How to install #

Access a Kubernetes cluster.

Setup chart repository (can be omitted for OCI repositories) #

Add a chart helm repository with follow commands:

      helm repo add vm https://victoriametrics.github.io/helm-charts/

helm repo update

    

List versions of vm/victoria-logs-cluster chart available to installation:

      helm search repo vm/victoria-logs-cluster -l

    

Install victoria-logs-cluster chart #

Export default values of victoria-logs-cluster chart to file values.yaml:

  • For HTTPS repository

          helm show values vm/victoria-logs-cluster > values.yaml
    
        
  • For OCI repository

          helm show values oci://ghcr.io/victoriametrics/helm-charts/victoria-logs-cluster > values.yaml
    
        

Change the values according to the need of the environment in values.yaml file.

Test the installation with command:

  • For HTTPS repository

          helm install vlc vm/victoria-logs-cluster -f values.yaml -n NAMESPACE --debug
    
        
  • For OCI repository

          helm install vlc oci://ghcr.io/victoriametrics/helm-charts/victoria-logs-cluster -f values.yaml -n NAMESPACE --debug
    
        

Install chart with command:

  • For HTTPS repository

          helm install vlc vm/victoria-logs-cluster -f values.yaml -n NAMESPACE
    
        
  • For OCI repository

          helm install vlc oci://ghcr.io/victoriametrics/helm-charts/victoria-logs-cluster -f values.yaml -n NAMESPACE
    
        

Get the pods lists by running this commands:

      kubectl get pods -A | grep 'vlc'

    

Get the application by running this command:

      helm list -f vlc -n NAMESPACE

    

See the history of versions of vlc application with command.

      helm history vlc -n NAMESPACE

    

How to uninstall #

Remove application with command.

      helm uninstall vlc -n NAMESPACE

    

Documentation of Helm Chart #

Install helm-docs following the instructions on this tutorial .

Generate docs with helm-docs command.

      cd charts/victoria-logs-cluster

helm-docs
    

The markdown generation is entirely go template driven. The tool parses metadata from charts and generates a number of sub-templates that can be referenced in a template file (by default README.md.gotmpl). If no template file is provided, the tool has a default internal template that will generate a reasonably formatted README.

Parameters #

The following tables lists the configurable parameters of the chart and their default values.

Change the values according to the need of the environment in victoria-logs-cluster/values.yaml file.

KeyDescription
common.image:
    tag: ""
(object)

common for all components image configuration

extraObjects: []
(list)

Add extra specs dynamically to this chart

global.cluster:
    dnsDomain: cluster.local.
(object)

k8s cluster domain suffix, uses for building storage pods’ FQDN. Details are here

global.compatibility:
    openshift:
        adaptSecurityContext: auto
(object)

Openshift security context compatibility configuration

global.image.registry: ""
(string)

Image registry, that can be shared across multiple helm charts

global.imagePullSecrets: []
(list)

Image pull secrets, that can be shared across multiple helm charts

nameOverride: ""
(string)

Override chart name

printNotes: true
(bool)

Print information after deployment

serviceAccount.annotations: {}
(object)

Service account annotations

serviceAccount.automountToken: true
(bool)

mount API token to pod directly

serviceAccount.create: false
(bool)

Specifies whether a service account should be created

serviceAccount.extraLabels: {}
(object)

Service account labels

serviceAccount.name: null
(string)

The name of the service account to use. If not set and create is true, a name is generated using the fullname template

vector:
    args:
        - -w
        - --config-dir
        - /etc/vector/
    containerPorts:
        - containerPort: 9090
          name: prom-exporter
          protocol: TCP
    customConfig:
        api:
            address: 0.0.0.0:8686
            enabled: false
            playground: true
        data_dir: /vector-data-dir
        sinks:
            exporter:
                address: 0.0.0.0:9090
                inputs:
                    - internal_metrics
                type: prometheus_exporter
            vlogs:
                api_version: v8
                compression: gzip
                endpoints: << include "vlogs.es.urls" . >>
                healthcheck:
                    enabled: false
                inputs:
                    - parser
                mode: bulk
                request:
                    headers:
                        AccountID: "0"
                        ProjectID: "0"
                        VL-Msg-Field: message,msg,_msg,log.msg,log.message,log
                        VL-Stream-Fields: stream,kubernetes.pod_name,kubernetes.container_name,kubernetes.pod_namespace
                        VL-Time-Field: timestamp
                type: elasticsearch
        sources:
            internal_metrics:
                type: internal_metrics
            k8s:
                type: kubernetes_logs
        transforms:
            parser:
                inputs:
                    - k8s
                source: |
                    .log = parse_json(.message) ?? .message
                    del(.message)
                type: remap
    customConfigNamespace: ""
    dataDir: /vector-data-dir
    enabled: false
    existingConfigMaps:
        - vector-vl-config
    resources: {}
    role: Agent
    service:
        enabled: false
(object)

Values for vector helm chart

vector.customConfigNamespace: ""
(string)

Forces custom configuration creation in a given namespace even if vector.enabled is false

vector.enabled: false
(bool)

Enable deployment of vector

vlinsert.affinity: {}
(object)

Pod affinity

vlinsert.annotations: {}
(object)

Deployment annotations

vlinsert.containerWorkingDir: ""
(string)

Container workdir

vlinsert.enabled: true
(bool)

Enable deployment of vlinsert component.

vlinsert.env: []
(list)

Additional environment variables (ex.: secret tokens, flags). Check here for details.

vlinsert.envFrom: []
(list)

Specify alternative source for env variables

vlinsert.excludeStorageIDs: []
(list)

IDs of vlstorage nodes to exclude from writing

vlinsert.extraArgs:
    envflag.enable: true
    http.shutdownDelay: 15s
    httpListenAddr: :9481
    loggerFormat: json
(object)

Extra command line arguments for vlinsert component

vlinsert.extraContainers: []
(list)

Extra containers to run in a pod with vlinsert

vlinsert.extraLabels: {}
(object)

Deployment additional labels

vlinsert.extraVolumeMounts: []
(list)

Extra Volume Mounts for the container

vlinsert.extraVolumes: []
(list)

Extra Volumes for the pod

vlinsert.fullnameOverride: ""
(string)

Overrides the full name of vlinsert component

vlinsert.horizontalPodAutoscaler.behavior: {}
(object)

Behavior settings for scaling by the HPA

vlinsert.horizontalPodAutoscaler.enabled: false
(bool)

Use HPA for vlinsert component

vlinsert.horizontalPodAutoscaler.maxReplicas: 10
(int)

Maximum replicas for HPA to use to to scale the vlinsert component

vlinsert.horizontalPodAutoscaler.metrics: []
(list)

Metric for HPA to use to scale the vlinsert component

vlinsert.horizontalPodAutoscaler.minReplicas: 2
(int)

Minimum replicas for HPA to use to scale the vlinsert component

vlinsert.image.pullPolicy: IfNotPresent
(string)

Image pull policy

vlinsert.image.registry: ""
(string)

Image registry

vlinsert.image.repository: victoriametrics/victoria-logs
(string)

Image repository

vlinsert.image.tag: ""
(string)

Image tag override Chart.AppVersion

vlinsert.image.variant: ""
(string)

Image tag suffix, which is appended to Chart.AppVersion if no server.image.tag is defined

vlinsert.ingress.annotations: {}
(object)

Ingress annotations

vlinsert.ingress.enabled: false
(bool)

Enable ingress for vlinsert component

vlinsert.ingress.extraLabels: {}
(object)

Ingress extra labels

vlinsert.ingress.hosts:
    - name: vlinsert.local
      path:
        - /insert
      port: http
(list)

Array of host objects

vlinsert.ingress.ingressClassName: ""
(string)

Ingress controller class name

vlinsert.ingress.pathType: Prefix
(string)

Ingress path type

vlinsert.ingress.tls: []
(list)

Array of TLS objects

vlinsert.initContainers: []
(list)

Init containers for vlinsert

vlinsert.lifecycle: {}
(object)

Specify pod lifecycle

vlinsert.name: ""
(string)

Override default app label name

vlinsert.nodeSelector: {}
(object)

Pod’s node selector. Details are here

vlinsert.podAnnotations: {}
(object)

Pod’s annotations

vlinsert.podDisruptionBudget:
    enabled: false
    labels: {}
(object)

See kubectl explain poddisruptionbudget.spec for more. Details are here

vlinsert.podLabels: {}
(object)

Pod’s additional labels

vlinsert.podSecurityContext:
    enabled: true
    fsGroup: 1000
(object)

Pod’s security context. Details are here

vlinsert.ports.name: http
(string)

vlinsert http port name

vlinsert.priorityClassName: ""
(string)

Name of Priority Class

vlinsert.probe:
    liveness:
        failureThreshold: 3
        initialDelaySeconds: 5
        periodSeconds: 15
        tcpSocket: {}
        timeoutSeconds: 5
    readiness:
        failureThreshold: 3
        httpGet: {}
        initialDelaySeconds: 5
        periodSeconds: 5
        timeoutSeconds: 5
    startup: {}
(object)

Readiness & Liveness probes

vlinsert.probe.liveness:
    failureThreshold: 3
    initialDelaySeconds: 5
    periodSeconds: 15
    tcpSocket: {}
    timeoutSeconds: 5
(object)

vlinsert liveness probe

vlinsert.probe.readiness:
    failureThreshold: 3
    httpGet: {}
    initialDelaySeconds: 5
    periodSeconds: 5
    timeoutSeconds: 5
(object)

vlinsert readiness probe

vlinsert.probe.startup: {}
(object)

vlinsert startup probe

vlinsert.replicaCount: 2
(int)

Count of vlinsert pods

vlinsert.resources: {}
(object)

Resource object. Details are here

vlinsert.securityContext:
    enabled: true
    runAsGroup: 1000
    runAsNonRoot: true
    runAsUser: 1000
(object)

Check here for details.

vlinsert.service.annotations: {}
(object)

Service annotations

vlinsert.service.clusterIP: ""
(string)

Service ClusterIP

vlinsert.service.enabled: true
(bool)

Create vlinsert service

vlinsert.service.externalIPs: []
(list)

Service external IPs. Details are here

vlinsert.service.externalTrafficPolicy: ""
(string)

Service external traffic policy. Check here for details

vlinsert.service.extraPorts: []
(list)

Extra service ports

vlinsert.service.healthCheckNodePort: ""
(string)

Health check node port for a service. Check here for details

vlinsert.service.ipFamilies: []
(list)

List of service IP families. Check here for details.

vlinsert.service.ipFamilyPolicy: ""
(string)

Service IP family policy. Check here for details.

vlinsert.service.labels: {}
(object)

Service labels

vlinsert.service.loadBalancerIP: ""
(string)

Service load balancer IP

vlinsert.service.loadBalancerSourceRanges: []
(list)

Load balancer source range

vlinsert.service.servicePort: 9481
(int)

Service port

vlinsert.service.targetPort: http
(string)

Target port

vlinsert.service.type: ClusterIP
(string)

Service type

vlinsert.strategy: {}
(object)

vlinsert strategy

vlinsert.suppressStorageFQDNsRender: false
(bool)

Suppress rendering --storageNode FQDNs based on vlstorage.replicaCount value. If true suppress rendering --storageNode, they can be re-defined in extraArgs

vlinsert.terminationGracePeriodSeconds: 30
(int)
vlinsert.tolerations: []
(list)

Array of tolerations object. Details are here

vlinsert.topologySpreadConstraints: []
(list)

Pod topologySpreadConstraints

vlinsert.vmServiceScrape.annotations: {}
(object)

VMServiceScrape annotations

vlinsert.vmServiceScrape.enabled: false
(bool)

Enable VMServiceScrape for vlinsert component, which is managed by vm-operator.

vlinsert.vmServiceScrape.extraLabels: {}
(object)

VMServiceScrape labels

vlinsert.vmServiceScrape.namespace: ""
(string)

Target namespace of VMServiceScrape manifest

vlinsert.vmServiceScrape.spec.endpoints[0].port: http
(string)
vlinsert.vmServiceScrape.useServiceMonitor: false
(bool)

Create ServiceMonitor instead of VMServiceScrape, which is managed by prometheus-operator

vlselect.affinity: {}
(object)

Pod affinity

vlselect.annotations: {}
(object)

Deployment annotations

vlselect.containerWorkingDir: ""
(string)

Container workdir

vlselect.enabled: true
(bool)

Enable deployment of vlselect component.

vlselect.env: []
(list)

Additional environment variables (ex.: secret tokens, flags). Check here for details.

vlselect.envFrom: []
(list)

Specify alternative source for env variables

vlselect.extraArgs:
    envflag.enable: true
    http.shutdownDelay: 15s
    httpListenAddr: :9471
    loggerFormat: json
(object)

Extra command line arguments for vlselect component

vlselect.extraContainers: []
(list)

Extra containers to run in a pod with vlselect

vlselect.extraLabels: {}
(object)

Deployment additional labels

vlselect.extraVolumeMounts: []
(list)

Extra Volume Mounts for the container

vlselect.extraVolumes: []
(list)

Extra Volumes for the pod

vlselect.fullnameOverride: ""
(string)

Overrides the full name of vlselect component

vlselect.horizontalPodAutoscaler.behavior: {}
(object)

Behavior settings for scaling by the HPA

vlselect.horizontalPodAutoscaler.enabled: false
(bool)

Use HPA for vlselect component

vlselect.horizontalPodAutoscaler.maxReplicas: 10
(int)

Maximum replicas for HPA to use to to scale the vlselect component

vlselect.horizontalPodAutoscaler.metrics: []
(list)

Metric for HPA to use to scale the vlselect component

vlselect.horizontalPodAutoscaler.minReplicas: 2
(int)

Minimum replicas for HPA to use to scale the vlselect component

vlselect.image.pullPolicy: IfNotPresent
(string)

Image pull policy

vlselect.image.registry: ""
(string)

Image registry

vlselect.image.repository: victoriametrics/victoria-logs
(string)

Image repository

vlselect.image.tag: ""
(string)

Image tag override Chart.AppVersion

vlselect.image.variant: ""
(string)

Image tag suffix, which is appended to Chart.AppVersion if no server.image.tag is defined

vlselect.ingress.annotations: {}
(object)

Ingress annotations

vlselect.ingress.enabled: false
(bool)

Enable deployment of ingress for vlselect component

vlselect.ingress.extraLabels: {}
(object)

Ingress extra labels

vlselect.ingress.hosts:
    - name: vlselect.local
      path:
        - /select
      port: http
(list)

Array of host objects

vlselect.ingress.ingressClassName: ""
(string)

Ingress controller class name

vlselect.ingress.pathType: Prefix
(string)

Ingress path type

vlselect.ingress.tls: []
(list)

Array of TLS objects

vlselect.initContainers: []
(list)

Init containers for vlselect

vlselect.lifecycle: {}
(object)

Specify pod lifecycle

vlselect.name: ""
(string)

Override default app label name

vlselect.nodeSelector: {}
(object)

Pod’s node selector. Details are here

vlselect.podAnnotations: {}
(object)

Pod’s annotations

vlselect.podDisruptionBudget:
    enabled: false
    labels: {}
(object)

See kubectl explain poddisruptionbudget.spec for more. Details are here

vlselect.podDisruptionBudget.enabled: false
(bool)

See kubectl explain poddisruptionbudget.spec for more. Details are here

vlselect.podLabels: {}
(object)

Pod’s additional labels

vlselect.podSecurityContext:
    enabled: true
    fsGroup: 1000
(object)

Pod’s security context. Details are here

vlselect.ports.name: http
(string)

vlselect http port name

vlselect.priorityClassName: ""
(string)

Name of Priority Class

vlselect.probe:
    liveness:
        failureThreshold: 3
        initialDelaySeconds: 5
        periodSeconds: 15
        tcpSocket: {}
        timeoutSeconds: 5
    readiness:
        failureThreshold: 3
        httpGet: {}
        initialDelaySeconds: 5
        periodSeconds: 5
        timeoutSeconds: 5
    startup: {}
(object)

Readiness & Liveness probes

vlselect.probe.liveness:
    failureThreshold: 3
    initialDelaySeconds: 5
    periodSeconds: 15
    tcpSocket: {}
    timeoutSeconds: 5
(object)

vlselect liveness probe

vlselect.probe.readiness:
    failureThreshold: 3
    httpGet: {}
    initialDelaySeconds: 5
    periodSeconds: 5
    timeoutSeconds: 5
(object)

vlselect readiness probe

vlselect.probe.startup: {}
(object)

vlselect startup probe

vlselect.replicaCount: 2
(int)

Count of vlselect pods

vlselect.resources: {}
(object)

Resource object. Details are here

vlselect.securityContext:
    enabled: true
    runAsGroup: 1000
    runAsNonRoot: true
    runAsUser: 1000
(object)

Check here for details.

vlselect.service.annotations: {}
(object)

Service annotations

vlselect.service.clusterIP: ""
(string)

Service ClusterIP

vlselect.service.enabled: true
(bool)

Create vlselect service

vlselect.service.externalIPs: []
(list)

Service external IPs. Details are here

vlselect.service.externalTrafficPolicy: ""
(string)

Service external traffic policy. Check here for details

vlselect.service.extraPorts: []
(list)

Extra service ports

vlselect.service.healthCheckNodePort: ""
(string)

Health check node port for a service. Check here for details

vlselect.service.ipFamilies: []
(list)

List of service IP families. Check here for details.

vlselect.service.ipFamilyPolicy: ""
(string)

Service IP family policy. Check here for details.

vlselect.service.labels: {}
(object)

Service labels

vlselect.service.loadBalancerIP: ""
(string)

Service load balancer IP

vlselect.service.loadBalancerSourceRanges: []
(list)

Load balancer source range

vlselect.service.servicePort: 9471
(int)

Service port

vlselect.service.targetPort: http
(string)

Target port

vlselect.service.type: ClusterIP
(string)

Service type

vlselect.strategy: {}
(object)
vlselect.suppressStorageFQDNsRender: false
(bool)

Suppress rendering --storageNode FQDNs based on vlstorage.replicaCount value. If true suppress rendering --storageNode, they can be re-defined in extraArgs

vlselect.terminationGracePeriodSeconds: 60
(int)

Pod’s termination grace period in seconds

vlselect.tolerations: []
(list)

Array of tolerations object. Details are here

vlselect.topologySpreadConstraints: []
(list)

Pod topologySpreadConstraints

vlselect.vmServiceScrape.annotations: {}
(object)

VMServiceScrape annotations

vlselect.vmServiceScrape.enabled: false
(bool)

Enable VMServiceScrape for vlselect component, which is managed by vm-operator.

vlselect.vmServiceScrape.extraLabels: {}
(object)

VMServiceScrape labels

vlselect.vmServiceScrape.namespace: ""
(string)

Target namespace of VMServiceScrape manifest

vlselect.vmServiceScrape.spec.endpoints[0].port: http
(string)
vlselect.vmServiceScrape.useServiceMonitor: false
(bool)

Create ServiceMonitor instead of VMServiceScrape, which is managed by prometheus-operator

vlstorage.affinity: {}
(object)

Pod affinity

vlstorage.annotations: {}
(object)

StatefulSet/Deployment annotations

vlstorage.containerWorkingDir: ""
(string)

Container workdir

vlstorage.emptyDir: {}
(object)

Empty dir configuration if persistence is disabled

vlstorage.enabled: true
(bool)

Enable deployment of vlstorage component. StatefulSet is used

vlstorage.env: []
(list)

Additional environment variables (ex.: secret tokens, flags). Check here for details

vlstorage.envFrom: []
(list)

Specify alternative source for env variables

vlstorage.extraArgs:
    envflag.enable: true
    http.shutdownDelay: 15s
    httpListenAddr: :9491
    loggerFormat: json
(object)

Additional vlstorage container arguments. Extra command line arguments for vlstorage component

vlstorage.extraContainers: []
(list)

Extra containers to run in a pod with vlstorage

vlstorage.extraLabels: {}
(object)

StatefulSet/Deployment additional labels

vlstorage.extraVolumeMounts: []
(list)

Extra Volume Mounts for the container

vlstorage.extraVolumes: []
(list)

Extra Volumes for the pod

vlstorage.fullnameOverride: null
(string)

Overrides the full name of vlstorage component

vlstorage.horizontalPodAutoscaler.behavior:
    scaleDown:
        selectPolicy: Disabled
(object)

Behavior settings for scaling by the HPA

vlstorage.horizontalPodAutoscaler.enabled: false
(bool)

Use HPA for vlstorage component

vlstorage.horizontalPodAutoscaler.maxReplicas: 10
(int)

Maximum replicas for HPA to use to to scale the vlstorage component

vlstorage.horizontalPodAutoscaler.metrics: []
(list)

Metric for HPA to use to scale the vlstorage component

vlstorage.horizontalPodAutoscaler.minReplicas: 2
(int)

Minimum replicas for HPA to use to scale the vlstorage component

vlstorage.image.pullPolicy: IfNotPresent
(string)

Image pull policy

vlstorage.image.registry: ""
(string)

Image registry

vlstorage.image.repository: victoriametrics/victoria-logs
(string)

Image repository

vlstorage.image.tag: ""
(string)

Image tag override Chart.AppVersion

vlstorage.image.variant: ""
(string)

Image tag suffix, which is appended to Chart.AppVersion if no server.image.tag is defined

vlstorage.initContainers: []
(list)

Init containers for vlstorage

vlstorage.lifecycle: {}
(object)

Specify pod lifecycle

vlstorage.minReadySeconds: 5
(int)
vlstorage.name: ""
(string)

Override default app label name

vlstorage.nodeSelector: {}
(object)

Pod’s node selector. Details are here

vlstorage.persistentVolume.accessModes:
    - ReadWriteOnce
(list)

Array of access modes. Must match those of existing PV or dynamic provisioner. Details are here

vlstorage.persistentVolume.annotations: {}
(object)

Persistent volume annotations

vlstorage.persistentVolume.enabled: true
(bool)

Create/use Persistent Volume Claim for vlstorage component. Empty dir if false. If true, vlstorage will create/use a Persistent Volume Claim

vlstorage.persistentVolume.existingClaim: ""
(string)

Existing Claim name. Requires vlstorage.persistentVolume.enabled: true. If defined, PVC must be created manually before volume will be bound

vlstorage.persistentVolume.labels: {}
(object)

Persistent volume labels

vlstorage.persistentVolume.mountPath: /storage
(string)

Data root path. vlstorage data Persistent Volume mount root path

vlstorage.persistentVolume.name: vlstorage-volume
(string)
vlstorage.persistentVolume.size: 10Gi
(string)

Size of the volume.

vlstorage.persistentVolume.storageClassName: ""
(string)

Storage class name. Will be empty if not set

vlstorage.persistentVolume.subPath: ""
(string)

Mount subpath

vlstorage.podAnnotations: {}
(object)

Pod’s annotations

vlstorage.podDisruptionBudget:
    enabled: false
    labels: {}
(object)

See kubectl explain poddisruptionbudget.spec for more. Details are here

vlstorage.podLabels: {}
(object)

Pod’s additional labels

vlstorage.podManagementPolicy: OrderedReady
(string)

Deploy order policy for StatefulSet pods

vlstorage.podSecurityContext:
    enabled: true
    fsGroup: 1000
(object)

Pod’s security context. Details are here

vlstorage.ports.name: http
(string)

vlstorage http port name

vlstorage.priorityClassName: ""
(string)

Name of Priority Class

vlstorage.probe:
    readiness:
        failureThreshold: 3
        httpGet: {}
        initialDelaySeconds: 5
        periodSeconds: 5
        timeoutSeconds: 5
    startup: {}
(object)

Readiness probes

vlstorage.probe.readiness:
    failureThreshold: 3
    httpGet: {}
    initialDelaySeconds: 5
    periodSeconds: 5
    timeoutSeconds: 5
(object)

vlstorage readiness probe

vlstorage.probe.startup: {}
(object)

vlstorage startup probe

vlstorage.replicaCount: 2
(int)

Count of vlstorage pods

vlstorage.resources: {}
(object)

Resource object. Details are here

vlstorage.retentionDiskSpaceUsage: ""
(string)

Data retention max capacity. Default unit is GiB. See these docs

vlstorage.retentionPeriod: 7d
(string)

Data retention period. Possible units character: h(ours), d(ays), w(eeks), y(ears), if no unit character specified - month. The minimum retention period is 24h. See these docs

vlstorage.securityContext:
    enabled: true
    runAsGroup: 1000
    runAsNonRoot: true
    runAsUser: 1000
(object)

Check here for details.

vlstorage.service.annotations: {}
(object)

Service annotations

vlstorage.service.clusterIP: None
(string)

Service ClusterIP

vlstorage.service.enabled: true
(bool)
vlstorage.service.externalTrafficPolicy: ""
(string)

Service external traffic policy. Check here for details

vlstorage.service.extraPorts: []
(list)

Extra service ports

vlstorage.service.healthCheckNodePort: ""
(string)

Health check node port for a service. Check here for details

vlstorage.service.ipFamilies: []
(list)

List of service IP families. Check here for details.

vlstorage.service.ipFamilyPolicy: ""
(string)

Service IP family policy. Check here for details.

vlstorage.service.labels: {}
(object)

Service labels

vlstorage.service.servicePort: 9491
(int)

Service port

vlstorage.service.targetPort: http
(string)

Target port

vlstorage.service.type: ClusterIP
(string)

Service type

vlstorage.terminationGracePeriodSeconds: 60
(int)

Pod’s termination grace period in seconds

vlstorage.tolerations: []
(list)

Array of tolerations object. Node tolerations for server scheduling to nodes with taints. Details are here

vlstorage.topologySpreadConstraints: []
(list)

Pod topologySpreadConstraints

vlstorage.vmServiceScrape.annotations: {}
(object)

VMServiceScrape annotations

vlstorage.vmServiceScrape.enabled: false
(bool)

Enable VMServiceScrape for vlstorage component, which is managed by vm-operator.

vlstorage.vmServiceScrape.extraLabels: {}
(object)

VMServiceScrape labels

vlstorage.vmServiceScrape.namespace: ""
(string)

Target namespace of VMServiceScrape manifest

vlstorage.vmServiceScrape.spec.endpoints[0].port: http
(string)
vlstorage.vmServiceScrape.useServiceMonitor: false
(bool)

Create ServiceMonitor instead of VMServiceScrape, which is managed by prometheus-operator

vmauth.affinity: {}
(object)

Pod affinity

vmauth.annotations: {}
(object)

VMAuth annotations

vmauth.config: {}
(object)
vmauth.configSecretName: ""
(string)

VMAuth configuration secret name

vmauth.containerWorkingDir: ""
(string)

Container workdir

vmauth.enabled: false
(bool)

Enable deployment of vmauth component, to help better balance the read and write requests to vlinsert and vlselect components. With vmauth enabled, please also set service.clusterIP: None and service.type: ClusterIP for vlinsert and vlselect.

vmauth.env: []
(list)

Additional environment variables (ex.: secret tokens, flags). Check here for details

vmauth.envFrom: []
(list)

Specify alternative source for env variables

vmauth.extraArgs:
    envflag.enable: true
    http.shutdownDelay: 15s
    httpListenAddr: :8427
    loggerFormat: json
(object)

Extra command line arguments for vmauth component

vmauth.extraContainers: []
(list)

Extra containers to run in a pod with vmauth

vmauth.extraLabels: {}
(object)

VMAuth additional labels

vmauth.extraVolumeMounts: []
(list)

Extra Volume Mounts for the container

vmauth.extraVolumes: []
(list)

Extra Volumes for the pod

vmauth.fullnameOverride: ""
(string)

Overrides the full name of vmauth component

vmauth.horizontalPodAutoscaler.behavior: {}
(object)

Behavior settings for scaling by the HPA

vmauth.horizontalPodAutoscaler.enabled: false
(bool)

Use HPA for vmauth component

vmauth.horizontalPodAutoscaler.maxReplicas: 10
(int)

Maximum replicas for HPA to use to to scale the vmauth component

vmauth.horizontalPodAutoscaler.metrics: []
(list)

Metric for HPA to use to scale the vmauth component

vmauth.horizontalPodAutoscaler.minReplicas: 2
(int)

Minimum replicas for HPA to use to scale the vmauth component

vmauth.image.pullPolicy: IfNotPresent
(string)

Image pull policy

vmauth.image.registry: ""
(string)

Image registry

vmauth.image.repository: victoriametrics/vmauth
(string)

Image repository

vmauth.image.tag: v1.116.0
(string)

Image tag override the default Chart.AppVersion, which is for vlogs components

vmauth.ingress.annotations: {}
(object)

Ingress annotations

vmauth.ingress.enabled: false
(bool)

Enable deployment of ingress for vmauth component

vmauth.ingress.extraLabels: {}
(object)
vmauth.ingress.hosts:
    - name: vmauth.local
      path:
        - /insert
      port: http
(list)

Array of host objects

vmauth.ingress.pathType: Prefix
(string)

pathType is only for k8s >= 1.1=

vmauth.ingress.tls: []
(list)

Array of TLS objects

vmauth.initContainers: []
(list)

Init containers for vmauth

vmauth.lifecycle: {}
(object)

Specify pod lifecycle

vmauth.name: ""
(string)

Override default app label name

vmauth.nodeSelector: {}
(object)

Pod’s node selector. Details are here

vmauth.podAnnotations: {}
(object)

Pod’s annotations

vmauth.podDisruptionBudget:
    enabled: false
    labels: {}
(object)

See kubectl explain poddisruptionbudget.spec for more. Details are here

vmauth.podLabels: {}
(object)

VMAuth pod labels

vmauth.podSecurityContext:
    enabled: true
    fsGroup: 1000
(object)

Pod’s security context. Details are here

vmauth.ports.name: http
(string)

VMAuth http port name

vmauth.priorityClassName: ""
(string)

Name of Priority Class

vmauth.probe.liveness:
    failureThreshold: 3
    initialDelaySeconds: 5
    periodSeconds: 15
    tcpSocket: {}
    timeoutSeconds: 5
(object)

VMAuth liveness probe

vmauth.probe.readiness:
    failureThreshold: 3
    httpGet: {}
    initialDelaySeconds: 5
    periodSeconds: 5
    timeoutSeconds: 5
(object)

VMAuth readiness probe

vmauth.probe.startup: {}
(object)

VMAuth startup probe

vmauth.replicaCount: 2
(int)

Count of vmauth pods

vmauth.resources: {}
(object)

Resource object

vmauth.securityContext:
    enabled: true
    runAsGroup: 1000
    runAsNonRoot: true
    runAsUser: 1000
(object)

Check here for details.

vmauth.service.annotations: {}
(object)

Service annotations

vmauth.service.clusterIP: ""
(string)

Service ClusterIP

vmauth.service.enabled: true
(bool)

Create VMAuth service

vmauth.service.externalIPs: []
(list)

Service External IPs. Details are here

vmauth.service.externalTrafficPolicy: ""
(string)

Service external traffic policy. Check here for details

vmauth.service.extraPorts: []
(list)

Extra service ports

vmauth.service.healthCheckNodePort: ""
(string)

Health check node port for a service. Check here for details

vmauth.service.ipFamilies: []
(list)

List of service IP families. Check here for details.

vmauth.service.ipFamilyPolicy: ""
(string)

Service IP family policy. Check here for details.

vmauth.service.labels: {}
(object)

Service labels

vmauth.service.loadBalancerIP: ""
(string)

Service load balancer IP

vmauth.service.loadBalancerSourceRanges: []
(list)

Load balancer source range

vmauth.service.servicePort: 8427
(int)

Service port

vmauth.service.targetPort: http
(string)

Target port

vmauth.service.type: ClusterIP
(string)

Service type

vmauth.strategy: {}
(object)

VMAuth Deployment strategy

vmauth.tolerations: []
(list)

Array of tolerations object. Details are here

vmauth.topologySpreadConstraints: []
(list)

Pod topologySpreadConstraints

vmauth.vmServiceScrape.annotations: {}
(object)

VMServiceScrape annotations

vmauth.vmServiceScrape.enabled: false
(bool)

Enable VMServiceScrape for vmauth component, which is managed by vm-operator.

vmauth.vmServiceScrape.extraLabels: {}
(object)

VMServiceScrape labels

vmauth.vmServiceScrape.namespace: ""
(string)

Target namespace of VMServiceScrape manifest

vmauth.vmServiceScrape.spec.endpoints[0].port: http
(string)
vmauth.vmServiceScrape.useServiceMonitor: false
(bool)

Create ServiceMonitor instead of VMServiceScrape, which is managed by prometheus-operator