# Default values for victoria-metrics.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
global:
  # -- Image pull secrets, that can be shared across multiple helm charts
  imagePullSecrets: []
  image:
    # -- Image registry, that can be shared across multiple helm charts
    registry: ""
    vm:
      # -- Image tag for all vm charts
      tag: ""
  # -- Openshift security context compatibility configuration
  compatibility:
    openshift:
      adaptSecurityContext: "auto"
  # -- k8s cluster domain suffix, uses for building storage pods' FQDN. Details are [here](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/)
  cluster:
    dnsDomain: cluster.local.

# -- Print information after deployment
printNotes: true

# -- use SRV discovery for storageNode and selectNode flags for enterprise version
autoDiscovery: false

common:
  # -- common for all components image configuration
  image:
    tag: ""

serviceAccount:
  # -- Specifies whether a service account should be created
  create: true

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

  # -- Service account labels
  extraLabels: {}

  # -- Service account annotations
  annotations: {}

  # -- mount API token to pod directly
  automountToken: true

# -- Override chart name
nameOverride: ""

extraSecrets:
  []
  # - name: secret-remote-storage-keys
  #   annotations: []
  #   labels: []
  #   data: |
  #     credentials: b64_encoded_str

# -- Add extra specs dynamically to this chart
extraObjects: []

vmselect:
  # -- Enable deployment of vmselect component. Can be deployed as Deployment(default) or StatefulSet
  enabled: true
  # -- Override default `app` label name
  name: ""
  image:
    # -- Image registry
    registry: ""
    # -- Image repository
    repository: victoriametrics/vmselect
    # -- Image tag
    # override Chart.AppVersion
    tag: ""
    # -- Image pull policy
    pullPolicy: IfNotPresent
    # -- Variant of the image to use.
    # e.g. cluster, enterprise-cluster
    variant: cluster
  # -- Specify pod lifecycle
  lifecycle: {}
  ports: 
    # -- VMSelect http port name
    name: "http"
  # -- Name of Priority Class
  priorityClassName: ""
  # -- Overrides the full name of vmselect component
  fullnameOverride: ""
  # -- Suppress rendering `--storageNode` FQDNs based on `vmstorage.replicaCount` value. If true suppress rendering `--storageNodes`, they can be re-defined in extraArgs
  suppressStorageFQDNsRender: false
  # -- Pod's termination grace period in seconds
  terminationGracePeriodSeconds: 60
  # -- Extra command line arguments for vmselect component
  extraArgs:
    envflag.enable: true
    envflag.prefix: VM_
    loggerFormat: json
    httpListenAddr: :8481
    # Enable IPv6 support. Useful for running in IPv6-only Kubernetes clusters
    # enableTCP6: true
  # -- StatefulSet/Deployment annotations
  annotations: {}
  # -- StatefulSet/Deployment additional labels
  extraLabels: {}
  # -- Pod’s additional labels
  podLabels: {}

  # -- Additional environment variables (ex.: secret tokens, flags). Check [here](https://docs.victoriametrics.com/victoriametrics/#environment-variables) for details.
  env: []

  # -- Specify alternative source for env variables
  envFrom: []
    #- configMapRef:
    #    name: special-config

  # -- Readiness & Liveness probes
  probe:
    # -- VMSelect readiness probe
    readiness:
      httpGet: {}
      initialDelaySeconds: 5
      periodSeconds: 5
      timeoutSeconds: 5
      failureThreshold: 10
    # -- VMSelect liveness probe
    liveness:
      tcpSocket: {}
      initialDelaySeconds: 5
      periodSeconds: 15
      timeoutSeconds: 5
      failureThreshold: 3
    # -- VMSelect startup probe
    startup: {}

  # -- Vertical Pod Autoscaling.
  # Requires VPA CRD (`autoscaling.k8s.io/v1`) to be installed in the cluster.
  # Note that VPA should not be used together with HPA on the same resource metrics (CPU/memory).
  verticalPodAutoscaling:
    # -- Use VPA for vmagent
    enabled: false
    # -- List of custom recommenders to use
    # recommenders:
    #   - name: 'alternative'
    # -- Update policy for VPA
    # updatePolicy:
    #   updateMode: "Auto"
    #   minReplicas: 1
    # -- Resource policy for VPA
    # resourcePolicy:
    #   containerPolicies:
    #     - containerName: '*'
    #       minAllowed:
    #         cpu: 100m
    #         memory: 128Mi
    #       maxAllowed:
    #         cpu: 1
    #         memory: 500Mi
    #       controlledResources: ["cpu", "memory"]

  horizontalPodAutoscaler:
    # -- Use HPA for vmselect component
    enabled: false
    # -- Maximum replicas for HPA to use to to scale the vmselect component
    maxReplicas: 10
    # -- Minimum replicas for HPA to use to scale the vmselect component
    minReplicas: 2
    # -- Metric for HPA to use to scale the vmselect component
    metrics: []
    # -- Behavior settings for scaling by the HPA
    behavior: {}

  # -- Additional hostPath mounts
  extraHostPathMounts:
    []
    # - name: certs-dir
    #   mountPath: /etc/kubernetes/certs
    #   subPath: ""
    #   hostPath: /etc/kubernetes/certs
    #   readOnly: true

  # -- Extra Volumes for the pod
  extraVolumes:
    []
    # - name: example
    #   configMap:
    #     name: example

  # -- Extra Volume Mounts for the container
  extraVolumeMounts:
    []
    # - name: example
    #   mountPath: /example

  # -- Extra containers to run in a pod with vmselect
  extraContainers:
    []
    # - name: config-reloader
    #   image: reloader-image

  # -- Init containers for vmselect
  initContainers:
    []
    # - name: example
    #   image: example-image

  # -- See `kubectl explain poddisruptionbudget.spec` for more. Details are [here](https://kubernetes.io/docs/tasks/run-application/configure-pdb/)
  podDisruptionBudget:
    # -- See `kubectl explain poddisruptionbudget.spec` for more. Details are [here](https://kubernetes.io/docs/tasks/run-application/configure-pdb/)
    enabled: false
    # -- min number or percentage of pods that can be unavailable
    minAvailable: 0
    # -- max number or percentage of pods that can be unavailable
    maxUnavailable: 0
    # -- Defines criteria when unhealthy pods should be considered for eviction
    unhealthyPodEvictionPolicy:
    labels: {}

  # -- Array of tolerations object. Details are [here](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/)
  tolerations: []
    # - key: "key"
    #   operator: "Equal|Exists"
    #   value: "value"
    #   effect: "NoSchedule|PreferNoSchedule"

  # -- Pod's node selector. Details are [here](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector)
  nodeSelector: {}
  # -- Pod affinity
  affinity: {}
  # -- Pod topologySpreadConstraints
  topologySpreadConstraints: []
  # -- Pod's annotations
  podAnnotations: {}
  # -- Count of vmselect pods
  replicaCount: 2
  # -- Container workdir
  containerWorkingDir: ""
  # -- Resource object. Details are [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)
  resources: {}
    # limits:
    #   cpu: 50m
    #   memory: 64Mi
    # requests:
    #   cpu: 50m
    #   memory: 64Mi

  # -- Pod's security context. Details are [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
  securityContext:
    enabled: true
  # -- Pod's security context. Details are [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
  podSecurityContext:
    enabled: true
  # -- Cache root folder
  cacheMountPath: /cache
  service:
    # -- Create VMSelect service
    enabled: true
    # -- Service annotations
    annotations: {}
    # -- Service labels
    labels: {}
    # -- Service ClusterIP
    clusterIP: ""
    # -- Service external IPs. Details are [here](https://kubernetes.io/docs/concepts/services-networking/service/#external-ips)
    externalIPs: []
    # -- Extra service ports
    extraPorts: []
    # -- Service load balancer IP
    loadBalancerIP: ""
    # -- Load balancer source range
    loadBalancerSourceRanges: []
    # -- Service port
    servicePort: 8481
    # -- Target port
    targetPort: http
    # -- Service type
    type: ClusterIP
    # -- Health check node port for a service. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
    healthCheckNodePort: ""
    # -- Service external traffic policy. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
    externalTrafficPolicy: ""
    # -- Service IP family policy. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
    ipFamilyPolicy: ""
    # -- List of service IP families. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
    ipFamilies: []
    # -- Traffic Distribution. Check [Traffic distribution](https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution)
    trafficDistribution: ""
  ingress:
    # -- Enable deployment of ingress for vmselect component
    enabled: false

    # -- Ingress annotations
    annotations: {}
    #   kubernetes.io/ingress.class: nginx
    #   kubernetes.io/tls-acme: 'true'

    # -- Ingress extra labels
    extraLabels: {}

    # -- Array of host objects
    hosts:
      - name: vmselect.local
        path:
          - /select
        port: http

    # -- Array of TLS objects
    tls: []
    #   - secretName: vmselect-ingress-tls
    #     hosts:
    #       - vmselect.local

    # -- Ingress controller class name
    ingressClassName: ""

    # -- Ingress path type
    pathType: Prefix

  route:
    # -- Enable deployment of HTTPRoute for select component
    enabled: false
    # -- HTTPRoute annotations
    annotations: {}
    # -- HTTPRoute extra labels
    extraLabels: {}
    # -- HTTPGateway objects refs
    parentRefs: []
    # -- Array of hostnames
    hostnames: []
    # -- Extra rules to prepend to route. This is useful when working with annotation based services.
    extraRules: []
    # -- Timeouts for a default rule in HTTPRoute
    timeouts: {}
      # request: "30s"
      # backendRequest: "15s"
    # -- Filters for a default rule in HTTPRoute
    filters: []
    # -- Matches for a default rule in HTTPRoute
    matches:
      - path:
          type: PathPrefix
          value: '{{ dig "extraArgs" "http.pathPrefix" "/select" .Values.vmselect }}'

  # -- vmselect mode: deployment, statefulSet
  mode: deployment

  # -- [K8s Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) specific variables
  deployment:
    spec:
      # -- VMSelect strategy
      strategy: {}
        # rollingUpdate:
        #  maxSurge: 25%
        #  maxUnavailable: 25%
        # type: RollingUpdate

  # -- [K8s StatefulSet](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) specific variables
  statefulSet:
    spec:
      # -- Deploy order policy for StatefulSet pods
      podManagementPolicy: OrderedReady
  
  # -- Empty dir configuration if persistence is disabled
  emptyDir: {}
  persistentVolume:
    # -- Create/use Persistent Volume Claim for vmselect component. Empty dir if false. If true, vmselect will create/use a Persistent Volume Claim
    enabled: false

    # -- Override Persistent Volume Claim name
    name: ""

    # -- Array of access mode. Must match those of existing PV or dynamic provisioner. Details are [here](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)
    accessModes:
      - ReadWriteOnce

    # -- VolumeClassAttribute to user for persistent volume 
    volumeAttributesClassName:

    # -- Persistent volume annotations
    annotations: {}

    # -- Persistent volume extra labels
    extraLabels: {}

    # -- Existing Claim name. Requires vmselect.persistentVolume.enabled: true. If defined, PVC must be created manually before volume will be bound
    existingClaim: ""

    # -- Size of the volume. Better to set the same as resource limit memory property
    size: 2Gi

    # -- Mount subpath
    subPath: ""
  serviceMonitor:
    # -- Enable deployment of Service Monitor for vmselect component. This is Prometheus operator object
    enabled: false
    # -- Target namespace of ServiceMonitor manifest
    namespace: ""
    # -- Service Monitor labels
    extraLabels: {}
    # -- Service Monitor annotations
    annotations: {}
    # -- Basic auth params for Service Monitor
    basicAuth: {}
    # Commented. Prometheus scare interval for vmselect component
#    interval: 15s
    # Commented. Prometheus pre-scrape timeout for vmselect component
#    scrapeTimeout: 5s
    # -- Commented. HTTP scheme to use for scraping.
#    scheme: https
    # -- Commented. TLS configuration to use when scraping the endpoint
#    tlsConfig:
#      insecureSkipVerify: true
    # -- Service Monitor relabelings
    relabelings: []
    # -- Service Monitor metricRelabelings
    metricRelabelings: []

vminsert:
  # -- Enable deployment of vminsert component. Deployment is used
  enabled: true
  # -- IDs of vmstorage nodes to exclude from writing
  excludeStorageIDs: []
  # -- Override default `app` label name
  name: ""
  # -- VMInsert strategy
  strategy: {}
   # rollingUpdate:
   #  maxSurge: 25%
   #  maxUnavailable: 25%
   # type: RollingUpdate
  image:
    # -- Image registry
    registry: ""
    # -- Image repository
    repository: victoriametrics/vminsert
    # -- Image tag
    # override Chart.AppVersion    
    tag: ""
    # -- Variant of the image to use.
    # e.g. cluster, enterprise-cluster
    variant: cluster
    # -- Image pull policy
    pullPolicy: IfNotPresent
  # -- Specify pod lifecycle
  lifecycle: {}
  ports:
    # -- VMInsert http port name
    name: "http"
  # -- Name of Priority Class
  priorityClassName: ""
  # -- Overrides the full name of vminsert component
  fullnameOverride: ""
  # -- Extra command line arguments for vminsert component
  extraArgs:
    envflag.enable: true
    envflag.prefix: VM_
    loggerFormat: json
    httpListenAddr: :8480
    # Enable IPv6 support. Useful for running in IPv6-only Kubernetes clusters
    # enableTCP6: true
  # -- StatefulSet/Deployment annotations
  annotations: {}
  # -- StatefulSet/Deployment additional labels
  extraLabels: {}
  # -- Pod’s additional labels
  podLabels: {}
  terminationGracePeriodSeconds: 30

  # -- Additional environment variables (ex.: secret tokens, flags). Check [here](https://docs.victoriametrics.com/victoriametrics/#environment-variables) for details.
  env: []

  # -- Specify alternative source for env variables
  envFrom: []
    #- configMapRef:
    #    name: special-config

  # -- Suppress rendering `--storageNode` FQDNs based on `vmstorage.replicaCount` value. If true suppress rendering `--storageNodes`, they can be re-defined in extraArgs
  suppressStorageFQDNsRender: false

  # -- Readiness & Liveness probes
  probe:
    # -- VMInsert readiness probe
    readiness:
      httpGet: {}
      initialDelaySeconds: 5
      periodSeconds: 5
      timeoutSeconds: 5
      failureThreshold: 10
    # -- VMInsert liveness probe
    liveness:
      tcpSocket: {}
      initialDelaySeconds: 5
      periodSeconds: 15
      timeoutSeconds: 5
      failureThreshold: 3
    # -- VMInsert startup probe
    startup: {}

  # -- Relabel configuration
  relabel:
    enabled: false
    config: []
    # -- Use existing configmap if specified
    # otherwise .config values will be used. Relabel config **should** reside under `relabel.yml` key
    configMap: ""

  # -- Vertical Pod Autoscaling.
  # Requires VPA CRD (`autoscaling.k8s.io/v1`) to be installed in the cluster.
  # Note that VPA should not be used together with HPA on the same resource metrics (CPU/memory).
  verticalPodAutoscaling:
    # -- Use VPA for vmagent
    enabled: false
    # -- List of custom recommenders to use
    # recommenders:
    #   - name: 'alternative'
    # -- Update policy for VPA
    # updatePolicy:
    #   updateMode: "Auto"
    #   minReplicas: 1
    # -- Resource policy for VPA
    # resourcePolicy:
    #   containerPolicies:
    #     - containerName: '*'
    #       minAllowed:
    #         cpu: 100m
    #         memory: 128Mi
    #       maxAllowed:
    #         cpu: 1
    #         memory: 500Mi
    #       controlledResources: ["cpu", "memory"]

  # -- Horizontal Pod Autoscaling
  horizontalPodAutoscaler:
    # -- Use HPA for vminsert component
    enabled: false
    # -- Maximum replicas for HPA to use to to scale the vminsert component
    maxReplicas: 10
    # -- Minimum replicas for HPA to use to scale the vminsert component
    minReplicas: 2
    # -- Metric for HPA to use to scale the vminsert component
    metrics: []
    # -- Behavior settings for scaling by the HPA
    behavior: {}

  # -- Extra Volumes for the pod
  extraVolumes:
    []
    # - name: example
    #   configMap:
    #     name: example

  # -- Extra Volume Mounts for the container
  extraVolumeMounts:
    []
    # - name: example
    #   mountPath: /example

  # -- Extra containers to run in a pod with vminsert
  extraContainers:
    []
    # - name: config-reloader
    #   image: reloader-image

  # -- Init containers for vminsert
  initContainers:
    []
    # - name: example
    #   image: example-image

  # -- See `kubectl explain poddisruptionbudget.spec` for more. Details are [here](https://kubernetes.io/docs/tasks/run-application/configure-pdb/)
  podDisruptionBudget:
    enabled: false
    # -- min number or percentage of pods that can be unavailable
    minAvailable: 0
    # -- max number or percentage of pods that can be unavailable
    maxUnavailable: 0
    # -- Defines criteria when unhealthy pods should be considered for eviction
    unhealthyPodEvictionPolicy:
    labels: {}

  # -- Array of tolerations object. Details are [here](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/)
  tolerations: []
    # - key: "key"
    #   operator: "Equal|Exists"
    #   value: "value"
    #   effect: "NoSchedule|PreferNoSchedule"

  # -- Pod's node selector. Details are [here](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector)
  nodeSelector: {}
  # -- Pod affinity
  affinity: {}
  # -- Pod topologySpreadConstraints
  topologySpreadConstraints: []
  # -- Pod's annotations
  podAnnotations: {}
  # -- Count of vminsert pods
  replicaCount: 2
  # -- Container workdir
  containerWorkingDir: ""
  # -- Resource object. Details are [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)
  resources: {}
    # limits:
    #   cpu: 50m
    #   memory: 64Mi
    # requests:
    #   cpu: 50m
    #   memory: 64Mi
  # -- Pod's security context. Details are [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
  securityContext:
    enabled: false
  # -- Pod's security context. Details are [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
  podSecurityContext:
    enabled: false
  service:
    # -- Create VMInsert service
    enabled: true
    # -- Service annotations
    annotations: {}
    # -- Service labels
    labels: {}
    # -- Service ClusterIP
    clusterIP: ""
    # -- Service external IPs. Details are [here]( https://kubernetes.io/docs/concepts/services-networking/service/#external-ips)
    externalIPs: []
    # -- Extra service ports
    extraPorts: []
    # -- Service load balancer IP
    loadBalancerIP: ""
    # -- Load balancer source range
    loadBalancerSourceRanges: []
    # -- Service port
    servicePort: 8480
    # -- Target port
    targetPort: http
    # -- Service type
    type: ClusterIP
    # -- Enable UDP port. used if you have `spec.opentsdbListenAddr` specified
    # Make sure that service is not type `LoadBalancer`, as it requires `MixedProtocolLBService` feature gate. Check [here](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/) for details
    udp: false
    # -- Health check node port for a service. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
    healthCheckNodePort: ""
    # -- Service external traffic policy. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
    externalTrafficPolicy: ""
    # -- Service IP family policy. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
    ipFamilyPolicy: ""
    # -- List of service IP families. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
    ipFamilies: []
    # -- Traffic Distribution. Check [Traffic distribution](https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution)
    trafficDistribution: ""
  ingress:
    # -- Enable deployment of ingress for vminsert component
    enabled: false

    # -- Ingress annotations
    annotations: {}
    #   kubernetes.io/ingress.class: nginx
    #   kubernetes.io/tls-acme: 'true'

    # -- Ingress extra labels
    extraLabels: {}

    # -- Array of host objects
    hosts:
      - name: vminsert.local
        path:
          - /insert
        port: http

    # -- Array of TLS objects
    tls: []
    #   - secretName: vminsert-ingress-tls
    #     hosts:
    #       - vminsert.local

    # -- Ingress controller class name
    ingressClassName: ""

    # -- Ingress path type
    pathType: Prefix

  route:
    # -- Enable deployment of HTTPRoute for insert component
    enabled: false
    # -- HTTPRoute annotations
    annotations: {}
    # -- HTTPRoute extra labels
    extraLabels: {}
    # -- HTTPGateway objects refs
    parentRefs: []
    # -- Array of hostnames
    hostnames: []
    # -- Extra rules to prepend to route. This is useful when working with annotation based services.
    extraRules: []
    # -- Timeouts for a default rule in HTTPRoute
    timeouts: {}
      # request: "30s"
      # backendRequest: "15s"
    # -- Filters for a default rule in HTTPRoute
    filters: []
    # -- Matches for a default rule in HTTPRoute
    matches:
      - path:
          type: PathPrefix
          value: '{{ dig "extraArgs" "http.pathPrefix" "/insert" .Values.vminsert }}'

  serviceMonitor:
    # -- Enable deployment of Service Monitor for vminsert component. This is Prometheus operator object
    enabled: false
    # -- Target namespace of ServiceMonitor manifest
    namespace: ""
    # -- Service Monitor labels
    extraLabels: {}
    # -- Service Monitor annotations
    annotations: {}
    # -- Basic auth params for Service Monitor
    basicAuth: {}
    # Commented. Prometheus scare interval for vminsert component
    # interval: 15s
    # Commented. Prometheus pre-scrape timeout for vminsert component
    # scrapeTimeout: 5s
    # -- Commented. HTTP scheme to use for scraping.
    # scheme: https
    # -- Commented. TLS configuration to use when scraping the endpoint
    # tlsConfig:
    #   insecureSkipVerify: true
    # -- Service Monitor relabelings
    relabelings: []
    # -- Service Monitor metricRelabelings
    metricRelabelings: []

vmauth:
  # -- Enable deployment of vmauth component.
  # With vmauth enabled please set `service.clusterIP: None` and `service.type: ClusterIP` for `vminsert` and `vmselect` to use vmauth balancing benefits.
  enabled: false
  # -- Override default `app` label name
  name: ""
  # -- VMAuth configuration secret name
  configSecretName: ""
  # -- VMAuth configuration object.
  #
  # It's possible to use given below predefined variables in config:
  # * `{{ .vm.read }}` - parsed vmselect URL
  # * `{{ .vm.write }}` - parsed vminsert URL
  #
  # Example
  # config:
  #   unauthorized_user:
  #     url_map:
  #      - src_paths:
  #          - '{{ .vm.read.path }}/.*'
  #        url_prefix:
  #          - '{{ urlJoin (omit .vm.read "path") }}/'
  config: {}
  # -- VMAuth Deployment strategy
  strategy: {}
   # rollingUpdate:
   #  maxSurge: 25%
   #  maxUnavailable: 25%
   # type: RollingUpdate
  image:
    # -- Image registry
    registry: ""
    # -- Image repository
    repository: victoriametrics/vmauth
    # -- Image tag
    # override Chart.AppVersion
    tag: ""
    # -- Variant of the image to use.
    # e.g. cluster, enterprise-cluster
    variant: ""
    # -- Image pull policy
    pullPolicy: IfNotPresent
  # -- Specify pod lifecycle
  lifecycle: {}
  ports:
    # -- VMAuth http port name
    name: "http"
  # -- Name of Priority Class
  priorityClassName: ""
  # -- Overrides the full name of vmauth component
  fullnameOverride: ""
  # -- Extra command line arguments for vmauth component
  extraArgs:
    envflag.enable: true
    envflag.prefix: VM_
    loggerFormat: json
    httpListenAddr: :8427
    # Enable IPv6 support. Useful for running in IPv6-only Kubernetes clusters
    # enableTCP6: true
  # -- VMAuth annotations
  annotations: {}
  # -- VMAuth additional labels
  extraLabels: {}
  # -- VMAuth pod labels
  podLabels: {}

  # -- Additional environment variables (ex.: secret tokens, flags). Check [here](https://docs.victoriametrics.com/victoriametrics/#environment-variables) for details
  env: []

  # -- Specify alternative source for env variables
  envFrom: []
    #- configMapRef:
    #    name: special-config

  # -- Suppress rendering `--storageNode` FQDNs based on `vmstorage.replicaCount` value. If true suppress rendering `--storageNodes`, they can be re-defined in extraArgs
  suppressStorageFQDNsRender: false
  # Readiness & Liveness probes
  probe:
    # -- VMAuth readiness probe
    readiness:
      httpGet: {}
      initialDelaySeconds: 5
      periodSeconds: 5
      timeoutSeconds: 5
      failureThreshold: 10
    # -- VMAuth liveness probe
    liveness:
      tcpSocket: {}
      initialDelaySeconds: 5
      periodSeconds: 15
      timeoutSeconds: 5
      failureThreshold: 3
    # -- VMAuth startup probe
    startup: {}

  # -- Vertical Pod Autoscaling.
  # Requires VPA CRD (`autoscaling.k8s.io/v1`) to be installed in the cluster.
  # Note that VPA should not be used together with HPA on the same resource metrics (CPU/memory).
  verticalPodAutoscaling:
    # -- Use VPA for vmagent
    enabled: false
    # -- List of custom recommenders to use
    # recommenders:
    #   - name: 'alternative'
    # -- Update policy for VPA
    # updatePolicy:
    #   updateMode: "Auto"
    #   minReplicas: 1
    # -- Resource policy for VPA
    # resourcePolicy:
    #   containerPolicies:
    #     - containerName: '*'
    #       minAllowed:
    #         cpu: 100m
    #         memory: 128Mi
    #       maxAllowed:
    #         cpu: 1
    #         memory: 500Mi
    #       controlledResources: ["cpu", "memory"]

  # -- Horizontal Pod Autoscaling
  horizontalPodAutoscaler:
    # -- Use HPA for vmauth component
    enabled: false
    # -- Maximum replicas for HPA to use to to scale the vmauth component
    maxReplicas: 10
    # -- Minimum replicas for HPA to use to scale the vmauth component
    minReplicas: 2
    # -- Metric for HPA to use to scale the vmauth component
    metrics: []
    # -- Behavior settings for scaling by the HPA
    behavior: {}

  # -- Extra Volumes for the pod
  extraVolumes:
    []
    # - name: example
    #   configMap:
    #     name: example

  # -- Extra Volume Mounts for the container
  extraVolumeMounts:
    []
    # - name: example
    #   mountPath: /example


  # -- Extra containers to run in a pod with vmauth
  extraContainers:
    []
    # - name: config-reloader
    #   image: reloader-image

  # -- Init containers for vmauth
  initContainers:
    []
    # - name: example
    #   image: example-image

  # -- See `kubectl explain poddisruptionbudget.spec` for more. Details are [here](https://kubernetes.io/docs/tasks/run-application/configure-pdb/)
  podDisruptionBudget:
    enabled: false
    # -- min number or percentage of pods that can be unavailable
    minAvailable: 0
    # -- max number or percentage of pods that can be unavailable
    maxUnavailable: 0
    # -- Defines criteria when unhealthy pods should be considered for eviction
    unhealthyPodEvictionPolicy:
    labels: {}

  # -- Array of tolerations object. Details are [here](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/)
  tolerations: []
    # - key: "key"
    #   operator: "Equal|Exists"
    #   value: "value"
    #   effect: "NoSchedule|PreferNoSchedule"

  # -- Pod's node selector. Details are [here](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector)
  nodeSelector: {}
  # -- Pod affinity
  affinity: {}
  # -- Pod topologySpreadConstraints
  topologySpreadConstraints: []
  # -- Pod's annotations
  podAnnotations: {}
  # -- Count of vmauth pods
  replicaCount: 2
  # -- Container workdir
  containerWorkingDir: ""
  # -- Resource object
  resources: {}
    # limits:
    #   cpu: 50m
    #   memory: 64Mi
    # requests:
    #   cpu: 50m
    #   memory: 64Mi
  # -- Pod's security context. Details are [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
  securityContext:
    enabled: false
  # -- Pod's security context. Details are [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
  podSecurityContext:
    enabled: false
  service:
    # -- Create VMAuth service
    enabled: true
    # -- Service annotations
    annotations: {}
    # -- Service labels
    labels: {}
    # -- Service ClusterIP
    clusterIP: ""
    # -- Service External IPs. Details are [here]( https://kubernetes.io/docs/concepts/services-networking/service/#external-ips)
    externalIPs: []
    # -- Extra service ports
    extraPorts: []
    # -- Service load balancer IP
    loadBalancerIP: ""
    # -- Load balancer source range
    loadBalancerSourceRanges: []
    # -- Service port
    servicePort: 8427
    # -- Target port
    targetPort: http
    # -- Service type
    type: ClusterIP
    # -- Enable UDP port. used if you have `spec.opentsdbListenAddr` specified
    # Make sure that service is not type `LoadBalancer`, as it requires `MixedProtocolLBService` feature gate.
    # Check [here](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/)
    udp: false
    # -- Health check node port for a service. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
    healthCheckNodePort: ""
    # -- Service external traffic policy. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
    externalTrafficPolicy: ""
    # -- Service IP family policy. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
    ipFamilyPolicy: ""
    # -- List of service IP families. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
    ipFamilies: []
    # -- Traffic Distribution. Check [Traffic distribution](https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution)
    trafficDistribution: ""
  ingress:
    # -- Enable deployment of ingress for vmauth component
    enabled: false
    # -- Ingress annotations
    annotations: {}
    #   kubernetes.io/ingress.class: nginx
    #   kubernetes.io/tls-acme: 'true'
    extraLabels: {}
    # -- Array of host objects
    hosts:
      - name: vmauth.local
        path:
          - /insert
        port: http
    # -- Array of TLS objects
    tls: []
    #   - secretName: vmauth-ingress-tls
    #     hosts:
    #       - vmauth.local
    # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
    # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
    # ingressClassName: nginx
    # -- pathType is only for k8s >= 1.1=
    pathType: Prefix

  route:
    # -- Enable deployment of HTTPRoute for vmauth component
    enabled: false
    # -- HTTPRoute annotations
    annotations: {}
    # -- HTTPRoute extra labels
    extraLabels: {}
    # -- HTTPGateway objects refs
    parentRefs: []
    # -- Array of hostnames
    hostnames: []
    # -- Extra rules to prepend to route. This is useful when working with annotation based services.
    extraRules: []
    # -- Timeouts for a default rule in HTTPRoute
    timeouts: {}
      # request: "30s"
      # backendRequest: "15s"
    # -- Filters for a default rule in HTTPRoute
    filters: []
    # -- Matches for a default rule in HTTPRoute
    matches:
      - path:
          type: PathPrefix
          value: '{{ dig "extraArgs" "http.pathPrefix" "/" .Values.vmauth }}'

  serviceMonitor:
    # -- Enable deployment of Service Monitor for vmauth component. This is Prometheus operator object
    enabled: false
    # -- Target namespace of ServiceMonitor manifest
    namespace: ""
    # -- Service Monitor labels
    extraLabels: {}
    # -- Service Monitor annotations
    annotations: {}
    # -- Basic auth params for Service Monitor
    basicAuth: {}
    # Commented. Prometheus scare interval for vmauth component
    # interval: 15s
    # Commented. Prometheus pre-scrape timeout for vmauth component
    # scrapeTimeout: 5s
    # -- Commented. HTTP scheme to use for scraping.
    # scheme: https
    # -- Commented. TLS configuration to use when scraping the endpoint
    # tlsConfig:
    # insecureSkipVerify: true
    # -- Service Monitor relabelings
    relabelings: []
    # -- Service Monitor metricRelabelings
    metricRelabelings: []

vmstorage:
  # -- Enable deployment of vmstorage component. StatefulSet is used
  enabled: true
  # -- Override default `app` label name
  name: ""
  image:
    # -- Image registry
    registry: ""
    # -- Image repository
    repository: victoriametrics/vmstorage
    # -- Image tag
    # override Chart.AppVersion
    tag: ""
    # -- Variant of the image to use.
    # e.g. cluster, enterprise-cluster
    variant: cluster
    # -- Image pull policy
    pullPolicy: IfNotPresent
  # -- Specify pod lifecycle
  lifecycle: {}
  ports: 
    # -- VMStorage http port name
    name: "http"
  # -- Name of Priority Class
  priorityClassName: ""
  # -- Overrides the full name of vmstorage component
  fullnameOverride:

  # -- Additional environment variables (ex.: secret tokens, flags). Check [here](https://docs.victoriametrics.com/victoriametrics/#environment-variables) for details
  env: []

  # -- Specify alternative source for env variables
  envFrom: []
    #- configMapRef:
    #    name: special-config

  # -- 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](https://docs.victoriametrics.com/victoriametrics/single-server-victoriametrics/#retention)
  retentionPeriod: 1
  # -- Additional vmstorage container arguments. Extra command line arguments for vmstorage component
  extraArgs:
    envflag.enable: true
    envflag.prefix: VM_
    loggerFormat: json
    httpListenAddr: :8482
    # Enable IPv6 support. Useful for running in IPv6-only Kubernetes clusters
    # enableTCP6: true

  # -- Additional hostPath mounts
  extraHostPathMounts:
    []
    # - name: certs-dir
    #   mountPath: /etc/kubernetes/certs
    #   subPath: ""
    #   hostPath: /etc/kubernetes/certs
    #   readOnly: true

  # -- Extra Volumes for the pod
  extraVolumes:
    []
    # - name: example
    #   configMap:
    #     name: example

  # -- Extra Volume Mounts for the container
  extraVolumeMounts:
    []
    # - name: example
    #   mountPath: /example

  # -- Extra containers to run in a pod with vmstorage
  extraContainers:
    []
    # - name: config-reloader
    #   image: reloader-image
  
  # -- Extra secret mounts for vmstorage
  extraSecretMounts:
    []
    # - name: secret
    #  mountPath: /etc/credentials
    #  subPath: ""
    #  readOnly: true

  # -- Init containers for vmstorage
  initContainers:
    []
    # - name: vmrestore
    #   image: victoriametrics/vmrestore:latest
    #   volumeMounts:
    #   - mountPath: /storage
    #     name: vmstorage-volume
    #   - mountPath: /etc/vm/creds
    #     name: secret-remote-storage-keys
    #     readOnly: true
    #   args:
    #   - -storageDataPath=/storage
    #   - -src=s3://your_bucket/folder/latest
    #   - -credsFilePath=/etc/vm/creds/credentials

  # -- See `kubectl explain poddisruptionbudget.spec` for more. Details are [here](https://kubernetes.io/docs/tasks/run-application/configure-pdb/)
  podDisruptionBudget:
    enabled: false
    # -- min number or percentage of pods that can be unavailable
    minAvailable: 0
    # -- max number or percentage of pods that can be unavailable
    maxUnavailable: 0
    # -- Defines criteria when unhealthy pods should be considered for eviction
    unhealthyPodEvictionPolicy:
    labels: {}

  # -- Array of tolerations object. Node tolerations for server scheduling to nodes with taints. Details are [here](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/)
  tolerations:
    []
    # - key: "key"
    #   operator: "Equal|Exists"
    #   value: "value"
    #   effect: "NoSchedule|PreferNoSchedule"

  # -- Pod's node selector. Details are [here](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector)
  nodeSelector: {}

  # -- Pod affinity
  affinity: {}
    # -- Pod topologySpreadConstraints
  topologySpreadConstraints: []


  # -- Use an alternate scheduler, e.g. "stork". Check [here](https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/) for details
  schedulerName: ""

  # -- Empty dir configuration if persistence is disabled
  emptyDir: {}
  persistentVolume:
    # -- Create/use Persistent Volume Claim for vmstorage component. Empty dir if false. If true,  vmstorage will create/use a Persistent Volume Claim
    enabled: true

    # -- Override Persistent Volume Claim name
    name: vmstorage-volume

    # -- Array of access modes. Must match those of existing PV or dynamic provisioner. Details are [here](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)
    accessModes:
      - ReadWriteOnce

    # -- VolumeClassAttribute to user for persistent volume 
    volumeAttributesClassName:

    # -- Persistent volume annotations
    annotations: {}

    # -- Persistent volume extra labels
    extraLabels: {}

    # -- Storage class name. Will be empty if not set
    storageClassName: ""

    # --  Existing Claim name. Requires vmstorage.persistentVolume.enabled: true. If defined, PVC must be created manually before volume will be bound
    existingClaim: ""

    # -- Data root path. Vmstorage data Persistent Volume mount root path
    mountPath: /storage

    # -- Size of the volume.
    size: 8Gi

    # -- Mount subpath
    subPath: ""

  # -- Pod's annotations
  podAnnotations: {}
  # -- StatefulSet/Deployment annotations
  annotations: {}
  # -- StatefulSet/Deployment additional labels
  extraLabels: {}
  # -- Pod’s additional labels
  podLabels: {}
  # -- Count of vmstorage pods
  replicaCount: 2
  # -- Container workdir
  containerWorkingDir: ""
  # -- Deploy order policy for StatefulSet pods
  podManagementPolicy: OrderedReady
  # -- Resource object. Details are [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)
  resources: {}
    # limits:
    #   cpu: 500m
    #   memory: 512Mi
    # requests:
    #   cpu: 500m
    #   memory: 512Mi

  # -- Pod's security context. Details are [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
  securityContext:
    enabled: false
  # -- Pod's security context. Details are [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
  podSecurityContext:
    enabled: false
  service:
    enabled: true
    # -- Service annotations
    annotations: {}
    # -- Service ClusterIP
    clusterIP: None
    # -- Service type
    type: ClusterIP
    # -- Service labels
    labels: {}
    # -- Service port
    servicePort: 8482
    # -- Port for accepting connections from vminsert
    vminsertPort: 8400
    # -- Port for accepting connections from vmselect
    vmselectPort: 8401
    # -- Extra service ports
    extraPorts: []
    # -- Health check node port for a service. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
    healthCheckNodePort: ""
    # -- Service external traffic policy. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
    externalTrafficPolicy: ""
    # -- Service IP family policy. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
    ipFamilyPolicy: ""
    # -- List of service IP families. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
    ipFamilies: []
    # -- Traffic Distribution. Check [Traffic distribution](https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution)
    trafficDistribution: ""
  # -- Pod's termination grace period in seconds
  terminationGracePeriodSeconds: 60
  minReadySeconds: 5
  # -- Readiness probes
  probe:
    # -- VMStorage readiness probe
    readiness:
      httpGet: {}
      initialDelaySeconds: 5
      periodSeconds: 5
      timeoutSeconds: 5
      failureThreshold: 10
    # -- VMStorage startup probe
    startup: {}

  # -- Vertical Pod Autoscaling.
  # Requires VPA CRD (`autoscaling.k8s.io/v1`) to be installed in the cluster.
  # Note that VPA should not be used together with HPA on the same resource metrics (CPU/memory).
  verticalPodAutoscaling:
    # -- Use VPA for vmagent
    enabled: false
    # -- List of custom recommenders to use
    # recommenders:
    #   - name: 'alternative'
    # -- Update policy for VPA
    # updatePolicy:
    #   updateMode: "Auto"
    #   minReplicas: 1
    # -- Resource policy for VPA
    # resourcePolicy:
    #   containerPolicies:
    #     - containerName: '*'
    #       minAllowed:
    #         cpu: 100m
    #         memory: 128Mi
    #       maxAllowed:
    #         cpu: 1
    #         memory: 500Mi
    #       controlledResources: ["cpu", "memory"]

  horizontalPodAutoscaler:
    # -- Use HPA for vmstorage component
    enabled: false
    # -- Maximum replicas for HPA to use to to scale the vmstorage component
    maxReplicas: 10
    # -- Minimum replicas for HPA to use to scale the vmstorage component
    minReplicas: 2
    # -- Metric for HPA to use to scale the vmstorage component
    metrics: []
    # -- Behavior settings for scaling by the HPA
    behavior:
      scaleDown:
        selectPolicy: Disabled

  vmbackupmanager:
    # -- Enable automatic creation of backup via vmbackupmanager. vmbackupmanager is part of Enterprise packages
    enabled: false
    image:
      # -- VMBackupManager image registry
      registry: ""
      # -- VMBackupManager image repository
      repository: victoriametrics/vmbackupmanager
      # -- VMBackupManager image tag
      # override Chart.AppVersion
      tag: ""
      # -- Variant of the image tag to use.
      # e.g. enterprise.
      variant: cluster
    # -- Disable hourly backups
    disableHourly: false
    # -- Disable daily backups
    disableDaily: false
    # -- Disable weekly backups
    disableWeekly: false
    # -- Disable monthly backups
    disableMonthly: false
    # -- Backup destination at S3, GCS or local filesystem. Pod name will be included to path!
    destination: ""
    # -- Backups' retention settings
    retention:
      # -- Keep last N hourly backups. 0 means delete all existing hourly backups. Specify -1 to turn off
      keepLastHourly: 2
      # -- Keep last N daily backups. 0 means delete all existing daily backups. Specify -1 to turn off
      keepLastDaily: 2
      # -- Keep last N weekly backups. 0 means delete all existing weekly backups. Specify -1 to turn off
      keepLastWeekly: 2
      # -- Keep last N monthly backups. 0 means delete all existing monthly backups. Specify -1 to turn off
      keepLastMonthly: 2
    # -- Extra command line arguments for container of component
    extraArgs:
      envflag.enable: true
      envflag.prefix: VM_
      loggerFormat: json
    # -- Allows to enable restore options for pod. Check [here](https://docs.victoriametrics.com/victoriametrics/vmbackupmanager/#restore-commands) for details
    restore:
      onStart:
        enabled: false
    # -- Resource object. Details are [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)
    resources: {}
    # -- Additional environment variables (ex.: secret tokens, flags). Check [here](https://docs.victoriametrics.com/victoriametrics/#environment-variables) for details
    env: []
    # -- Readiness & Liveness probes
    probe:
      # -- VMBackupManager readiness probe
      readiness:
        httpGet:
          port: manager-http
        initialDelaySeconds: 5
        periodSeconds: 5
        timeoutSeconds: 5
        failureThreshold: 10
      # -- VMBackupManager liveness probe
      liveness:
        tcpSocket:
          port: manager-http
        initialDelaySeconds: 30
        periodSeconds: 30
        timeoutSeconds: 5
        failureThreshold: 10
      # -- VMBackupManager startup probe
      startup: {}
    # -- Extra secret mounts for vmbackupmanager
    extraSecretMounts:
      []
      # - name: secret
      #  mountPath: /etc/credentials
      #  subPath: ""
      #  readOnly: true
  serviceMonitor:
    # -- Enable deployment of Service Monitor for vmstorage component. This is Prometheus operator object
    enabled: false
    # -- Target namespace of ServiceMonitor manifest
    namespace: ""
    # -- Service Monitor labels
    extraLabels: {}
    # -- Service Monitor annotations
    annotations: {}
    # -- Basic auth params for Service Monitor
    basicAuth: {}
    # Commented. Prometheus scare interval for vmstorage component
    # interval: 15s
    # Commented. Prometheus pre-scrape timeout for vmstorage component
    # scrapeTimeout: 5s
    # -- Commented. HTTP scheme to use for scraping.
    # scheme: https
    # -- Commented. TLS configuration to use when scraping the endpoint
    # tlsConfig:
    #   insecureSkipVerify: true
    # -- Service Monitor relabelings
    relabelings: []
    # -- Service Monitor metricRelabelings
    metricRelabelings: []

# -- Enterprise license key configuration for VictoriaMetrics enterprise.
# Required only for VictoriaMetrics enterprise. Check docs [here](https://docs.victoriametrics.com/victoriametrics/enterprise/),
# for more information, visit [site](https://victoriametrics.com/products/enterprise/).
# Request a trial license [here](https://victoriametrics.com/products/enterprise/trial/)
# Supported starting from VictoriaMetrics v1.94.0
license:
  # -- License key
  key: ""

  # -- Use existing secret with license key
  secret:
    # -- Existing secret name
    name: ""
    # -- Key in secret with license key
    key: ""
