# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Default values for banyandb.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

## @section Common configuration
##

## @param fullnameOverride Override the full name of the chart
##
fullnameOverride: ""
## @param nameOverride Override the name of the chart
##
nameOverride: "banyandb"

## @section Container image configuration
##
image:
  ## @param image.repository Docker repository for SkyWalking BanyanDB
  ##
  repository: docker.io/apache/skywalking-banyandb
  ## @param image.tag Image tag/version (empty for latest)
  ##
  tag: ""
  ## @param image.pullPolicy Image pull policy (e.g. IfNotPresent)
  ##
  pullPolicy: IfNotPresent

## @section Configuration for standalone deployment
##
standalone:
  ## @param standalone.enabled Enable standalone mode (boolean)
  ##
  enabled: false
  ## @param standalone.podAnnotations Additional pod annotations
  ##
  podAnnotations: {}
  ## @param standalone.securityContext Security context for the pod
  ##
  securityContext: {}
  ## @param standalone.env Environment variables for the pod
  ##
  env: []
  ## @param standalone.priorityClassName Priority class name for the pod
  ##
  priorityClassName: ""
  ## @param standalone.podDisruptionBudget Pod disruption budget configuration
  ##
  podDisruptionBudget: {}
  ## @param standalone.tolerations Tolerations for pod scheduling
  ##
  tolerations: []
  ## @param standalone.nodeSelector Node selector for pod scheduling
  ##
  nodeSelector: []
  ## @param standalone.affinity Affinity rules for pod scheduling
  ##
  affinity: {}
  ## @param standalone.resources Resource requests/limits for the pod
  ##
  resources: {}
  ## GRPC service settings
  ##
  grpcSvc:
    ## @param standalone.grpcSvc.labels Labels for GRPC service
    ##
    labels: {}
    ## @param standalone.grpcSvc.annotations Annotations for GRPC service
    ##
    annotations: {}
    ## @param standalone.grpcSvc.port Port number for GRPC service
    ##
    port: 17912
  ## HTTP service settings
  ##
  httpSvc:
    ## @param standalone.httpSvc.labels Labels for HTTP service
    ##
    labels: {}
    ## @param standalone.httpSvc.annotations Annotations for HTTP service
    ##
    annotations: {}
    ## @param standalone.httpSvc.port Port number for HTTP service
    ##
    port: 17913
    ## @param standalone.httpSvc.type Service type (e.g., LoadBalancer)
    ##
    type: LoadBalancer
    ## @param standalone.httpSvc.externalIPs External IP addresses for the service
    ##
    externalIPs: []
    ## @param standalone.httpSvc.loadBalancerIP Load balancer IP address
    ##
    loadBalancerIP: null
    ## @param standalone.httpSvc.loadBalancerSourceRanges Allowed source ranges for the load balancer
    ##
    loadBalancerSourceRanges: []
  ## Ingress configuration
  ##
  ingress:
    ## @param standalone.ingress.enabled Enable ingress (boolean)
    ##
    enabled: false
    ## @param standalone.ingress.labels Labels for ingress
    ##
    labels: {}
    ## @param standalone.ingress.annotations Annotations for ingress
    ##
    annotations: {}
    ## @param standalone.ingress.rules Ingress routing rules
    ##
    rules: []
    ## @param standalone.ingress.tls TLS configuration for ingress
    ##
    tls: []
  ## @param standalone.sidecar Sidecar container configurations
  ##
  sidecar: []
  ## Liveness probe configuration
  ##
  livenessProbe:
    ## @param standalone.livenessProbe.initialDelaySeconds Initial delay for liveness probe
    ##
    initialDelaySeconds: 20
    ## @param standalone.livenessProbe.periodSeconds Probe period in seconds
    ##
    periodSeconds: 30
    ## @param standalone.livenessProbe.timeoutSeconds Probe timeout in seconds
    ##
    timeoutSeconds: 5
    ## @param standalone.livenessProbe.successThreshold Number of successful probes
    ##
    successThreshold: 1
    ## @param standalone.livenessProbe.failureThreshold Number of failed probes
    ##
    failureThreshold: 5
  ## Readiness probe configuration
  ##
  readinessProbe:
    ## @param standalone.readinessProbe.initialDelaySeconds Initial delay for readiness probe
    ##
    initialDelaySeconds: 20
    ## @param standalone.readinessProbe.periodSeconds Probe period for readiness probe
    ##
    periodSeconds: 30
    ## @param standalone.readinessProbe.timeoutSeconds Timeout in seconds for readiness probe
    ##
    timeoutSeconds: 5
    ## @param standalone.readinessProbe.successThreshold Number of successful readiness probes
    ##
    successThreshold: 1
    ## @param standalone.readinessProbe.failureThreshold Number of failed readiness probes before marked unready
    ##
    failureThreshold: 5
  ## Startup probe configuration
  ##
  startupProbe:
    ## @param standalone.startupProbe.initialDelaySeconds Initial delay for startup probe
    ##
    initialDelaySeconds: 0
    ## @param standalone.startupProbe.periodSeconds Probe period for startup probe
    ##
    periodSeconds: 10
    ## @param standalone.startupProbe.timeoutSeconds Timeout in seconds for startup probe
    ##
    timeoutSeconds: 5
    ## @param standalone.startupProbe.successThreshold Number of successful startup probes
    ##
    successThreshold: 1
    ## @param standalone.startupProbe.failureThreshold Number of failed startup probes before timeout
    ##
    failureThreshold: 60

## @section Cluster mode configuration
##
cluster:
  ## @param cluster.enabled Enable cluster mode (boolean)
  ##
  enabled: true
  ## @param cluster.etcdEndpoints List of etcd endpoints
  ##
  etcdEndpoints: []
  ## @section Configuration for liaison component
  ##
  liaison:
    ## @param cluster.liaison.replicas Number of liaison replicas
    ##
    replicas: 2
    ## @param cluster.liaison.podAnnotations Pod annotations for liaison
    ##
    podAnnotations: {}
    ## @param cluster.liaison.securityContext Security context for liaison pods
    ##
    securityContext: {}
    ## @param cluster.liaison.env Environment variables for liaison pods
    ##
    env: []
    ## @param cluster.liaison.priorityClassName Priority class name for liaison pods
    ##
    priorityClassName: ""
    ## Update strategy for liaison pods
    ##
    updateStrategy:
      ## @param cluster.liaison.updateStrategy.type Update strategy type for liaison pods
      type: RollingUpdate
      rollingUpdate:
        ## @param cluster.liaison.updateStrategy.rollingUpdate.maxUnavailable Maximum unavailable pods during update
        maxUnavailable: 1
        ## @param cluster.liaison.updateStrategy.rollingUpdate.maxSurge Maximum surge pods during update
        maxSurge: 1
    ## @param cluster.liaison.podDisruptionBudget Pod disruption budget for liaison
    ##
    podDisruptionBudget: {}
    ## @param cluster.liaison.tolerations Tolerations for liaison pods
    ##
    tolerations: []
    ## @param cluster.liaison.nodeSelector Node selector for liaison pods
    ##
    nodeSelector: []
    ## @param cluster.liaison.affinity Affinity rules for liaison pods
    ##
    affinity: {}
    ## @param cluster.liaison.podAffinityPreset Pod affinity preset for liaison
    ##
    podAffinityPreset: ""
    ## @param cluster.liaison.podAntiAffinityPreset Pod anti-affinity preset for liaison
    ##
    podAntiAffinityPreset: soft
    ## Resource requests/limits for liaison
    ##
    resources:
      ## @param cluster.liaison.resources.requests Resource requests for liaison pods
      requests: []
      ## @param cluster.liaison.resources.limits Resource limits for liaison pods
      limits: []
    ## GRPC service settings for liaison
    ##
    grpcSvc:
      ## @param cluster.liaison.grpcSvc.labels Labels for GRPC service for liaison
      labels: {}
      ## @param cluster.liaison.grpcSvc.annotations Annotations for GRPC service for liaison
      annotations: {}
      ## @param cluster.liaison.grpcSvc.port Port number for GRPC service for liaison
      port: 17912
    ## HTTP service settings for liaison
    ##
    httpSvc:
      ## @param cluster.liaison.httpSvc.labels Labels for HTTP service for liaison
      labels: {}
      ## @param cluster.liaison.httpSvc.annotations Annotations for HTTP service for liaison
      annotations: {}
      ## @param cluster.liaison.httpSvc.port Port number for HTTP service for liaison
      port: 17913
      ## @param cluster.liaison.httpSvc.type Service type for HTTP service for liaison
      type: LoadBalancer
      ## @param cluster.liaison.httpSvc.externalIPs External IP addresses for liaison HTTP service
      externalIPs: []
      ## @param cluster.liaison.httpSvc.loadBalancerIP Load balancer IP for liaison HTTP service
      loadBalancerIP: null
      ## @param cluster.liaison.httpSvc.loadBalancerSourceRanges Allowed source ranges for liaison HTTP service
      loadBalancerSourceRanges: []
    ## Ingress configuration for liaison
    ##
    ingress:
      ## @param cluster.liaison.ingress.enabled Enable ingress for liaison
      enabled: false
      ## @param cluster.liaison.ingress.labels Labels for ingress of liaison
      labels: {}
      ## @param cluster.liaison.ingress.annotations Annotations for ingress of liaison
      annotations: {}
      ## @param cluster.liaison.ingress.rules Ingress rules for liaison
      rules: []
      ## @param cluster.liaison.ingress.tls TLS configuration for liaison ingress
      tls: []
    ## Liveness probe for liaison
    ##
    livenessProbe:
      ## @param cluster.liaison.livenessProbe.initialDelaySeconds Initial delay for liaison liveness probe
      initialDelaySeconds: 20
      ## @param cluster.liaison.livenessProbe.periodSeconds Probe period for liaison liveness probe
      periodSeconds: 30
      ## @param cluster.liaison.livenessProbe.timeoutSeconds Timeout in seconds for liaison liveness probe
      timeoutSeconds: 5
      ## @param cluster.liaison.livenessProbe.successThreshold Success threshold for liaison liveness probe
      successThreshold: 1
      ## @param cluster.liaison.livenessProbe.failureThreshold Failure threshold for liaison liveness probe
      failureThreshold: 5
    ## Readiness probe for liaison
    ##
    readinessProbe:
      ## @param cluster.liaison.readinessProbe.initialDelaySeconds Initial delay for liaison readiness probe
      ##
      initialDelaySeconds: 20
      ## @param cluster.liaison.readinessProbe.periodSeconds Probe period for liaison readiness probe
      ##
      periodSeconds: 30
      ## @param cluster.liaison.readinessProbe.timeoutSeconds Timeout in seconds for liaison readiness probe
      ##
      timeoutSeconds: 5
      ## @param cluster.liaison.readinessProbe.successThreshold Success threshold for liaison readiness probe
      ##
      successThreshold: 1
      ## @param cluster.liaison.readinessProbe.failureThreshold Failure threshold for liaison readiness probe
      ##
      failureThreshold: 5
    ## Startup probe for liaison
    ##
    startupProbe:
      ## @param cluster.liaison.startupProbe.initialDelaySeconds Initial delay for liaison startup probe
      ##
      initialDelaySeconds: 0
      ## @param cluster.liaison.startupProbe.periodSeconds Probe period for liaison startup probe
      ##
      periodSeconds: 10
      ## @param cluster.liaison.startupProbe.timeoutSeconds Timeout in seconds for liaison startup probe
      ##
      timeoutSeconds: 5
      ## @param cluster.liaison.startupProbe.successThreshold Success threshold for liaison startup probe
      ##
      successThreshold: 1
      ## @param cluster.liaison.startupProbe.failureThreshold Failure threshold for liaison startup probe
      ##
      failureThreshold: 60
  ## @section Configuration for data component
  ##
  data:
    ## Add nodeTemplate with common defaults
    ##
    nodeTemplate:
      ## @param cluster.data.nodeTemplate.replicas Number of data replicas by default
      ##
      replicas: 2
      ## @param cluster.data.nodeTemplate.podAnnotations Pod annotations for data pods
      ##
      podAnnotations: {}
      ## @param cluster.data.nodeTemplate.securityContext Security context for data pods
      ##
      securityContext: {}
      ## @param cluster.data.nodeTemplate.env Environment variables for data pods
      ##
      env: []
      ## @param cluster.data.nodeTemplate.priorityClassName Priority class name for data pods
      ##
      priorityClassName: ""
      ## Pod disruption budget for data pods
      ##
      podDisruptionBudget:
        ## @param cluster.data.nodeTemplate.podDisruptionBudget.maxUnavailable Maximum unavailable data pods
        ##
        maxUnavailable: 1
      ## @param cluster.data.nodeTemplate.tolerations Tolerations for data pods
      ##
      tolerations: []
      ## @param cluster.data.nodeTemplate.nodeSelector Node selector for data pods
      ##
      nodeSelector: []
      ## @param cluster.data.nodeTemplate.affinity Affinity rules for data pods
      ##
      affinity: {}
      ## @param cluster.data.nodeTemplate.podAffinityPreset Pod affinity preset for data pods
      ##
      podAffinityPreset: ""
      ## @param cluster.data.nodeTemplate.podAntiAffinityPreset Pod anti-affinity preset for data pods
      ##
      podAntiAffinityPreset: soft
      ## Resource requests/limits for data pods
      ##
      resources:
        ## @param cluster.data.nodeTemplate.resources.requests Resource requests for data pods
        ##
        requests: []
        ## @param cluster.data.nodeTemplate.resources.limits Resource limits for data pods
        ##
        limits: []
      ## GRPC service settings for data pods
      ##
      grpcSvc:
        ## @param cluster.data.nodeTemplate.grpcSvc.labels Labels for GRPC service for data pods
        ##
        labels: {}
        ## @param cluster.data.nodeTemplate.grpcSvc.annotations Annotations for GRPC service for data pods
        ##
        annotations: {}
        ## @param cluster.data.nodeTemplate.grpcSvc.port Port number for GRPC service for data pods
        ##
        port: 17912
      ## @param cluster.data.nodeTemplate.sidecar Sidecar containers for data pods
      ##
      sidecar: []
      ## Backup sidecar configuration for data pods
      ##
      backupSidecar:
        ## @param cluster.data.nodeTemplate.backupSidecar.enabled Enable backup sidecar for data pods (boolean)
        ##
        enabled: false
        ## @param cluster.data.nodeTemplate.backupSidecar.dest Backup destination path for data pods
        ##
        dest: "file:///tmp/backups/data-$(ORDINAL_NUMBER)"
        ## @param cluster.data.nodeTemplate.backupSidecar.timeStyle Backup time style for data pods (e.g., daily)
        ##
        timeStyle: "daily"
        ## @param cluster.data.nodeTemplate.backupSidecar.schedule Backup schedule for data pods (cron format)
        schedule: "@hourly"
        ##
        ## @param cluster.data.nodeTemplate.backupSidecar.resources Resources for backup sidecar for data pods
        ##
        resources: {}
      ## Lifecycle sidecar configuration for data pods
      ##
      lifecycleSidecar:
        ## @param cluster.data.nodeTemplate.lifecycleSidecar.enabled Enable lifecycle sidecar for data pods (boolean)
        ##
        enabled: false
        ## @param cluster.data.nodeTemplate.lifecycleSidecar.schedule Schedule for lifecycle sidecar (cron format)
        ##
        schedule: "@hourly"
        ## @param cluster.data.nodeTemplate.lifecycleSidecar.resources Resources for lifecycle sidecar for data pods
        ##
        resources: {}
      ## Restore init container configuration for data pods
      ##
      restoreInitContainer:
        ## @param cluster.data.nodeTemplate.restoreInitContainer.enabled Enable restore init container for data pods (boolean)
        ##
        enabled: false
        ## @param cluster.data.nodeTemplate.restoreInitContainer.resources Resources for restore init container for data pods
        ##
        resources: {}
      ## Liveness probe for data pods
      ##
      livenessProbe:
        ## @param cluster.data.nodeTemplate.livenessProbe.initialDelaySeconds Initial delay for data liveness probe
        ##
        initialDelaySeconds: 20
        ## @param cluster.data.nodeTemplate.livenessProbe.periodSeconds Probe period for data liveness probe
        ##
        periodSeconds: 30
        ## @param cluster.data.nodeTemplate.livenessProbe.timeoutSeconds Timeout in seconds for data liveness probe
        ##
        timeoutSeconds: 5
        ## @param cluster.data.nodeTemplate.livenessProbe.successThreshold Success threshold for data liveness probe
        ##
        successThreshold: 1
        ## @param cluster.data.nodeTemplate.livenessProbe.failureThreshold Failure threshold for data liveness probe
        ##
        failureThreshold: 5
      ## Readiness probe for data pods
      ##
      readinessProbe:
        ## @param cluster.data.nodeTemplate.readinessProbe.initialDelaySeconds Initial delay for data readiness probe
        ##
        initialDelaySeconds: 20
        ## @param cluster.data.nodeTemplate.readinessProbe.periodSeconds Probe period for data readiness probe
        ##
        periodSeconds: 30
        ## @param cluster.data.nodeTemplate.readinessProbe.timeoutSeconds Timeout in seconds for data readiness probe
        ##
        timeoutSeconds: 5
        ## @param cluster.data.nodeTemplate.readinessProbe.successThreshold Success threshold for data readiness probe
        ##
        successThreshold: 1
        ## @param cluster.data.nodeTemplate.readinessProbe.failureThreshold Failure threshold for data readiness probe
        ##
        failureThreshold: 5
      ## Startup probe for data pods
      ##
      startupProbe:
        ## @param cluster.data.nodeTemplate.startupProbe.initialDelaySeconds Initial delay for data startup probe
        ##
        initialDelaySeconds: 0
        ## @param cluster.data.nodeTemplate.startupProbe.periodSeconds Probe period for data startup probe
        ##
        periodSeconds: 10
        ## @param cluster.data.nodeTemplate.startupProbe.timeoutSeconds Timeout in seconds for data startup probe
        ##
        timeoutSeconds: 5
        ## @param cluster.data.nodeTemplate.startupProbe.successThreshold Success threshold for data startup probe
        ##
        successThreshold: 1
        ## @param cluster.data.nodeTemplate.startupProbe.failureThreshold Failure threshold for data startup probe
        ##
        failureThreshold: 60

    ## @extra cluster.data.roles List of data roles (hot, warm, cold)
    ##
    roles:
      ## @param cluster.data.roles.hot Hot data role
      ##
      hot: {}
     
  ## @section Configuration for UI component
  ##
  ui:
    ## @param cluster.ui.type UI deployment type (None, Standalone, Embedded)
    ##
    type: Embedded
    ## Standalone UI configuration
    ##
    standalone:
      ## @param cluster.ui.standalone.replicas Number of UI replicas
      ##
      replicas: 1
      ## @param cluster.ui.standalone.podAnnotations Pod annotations for UI
      ##
      podAnnotations: {}
      ## @param cluster.ui.standalone.securityContext Security context for UI pods
      ##
      securityContext: {}
      ## @param cluster.ui.standalone.env Environment variables for UI pods
      ##
      env: []
      ## @param cluster.ui.standalone.priorityClassName Priority class name for UI pods
      ##
      priorityClassName: ""
      ## Update strategy for UI pods
      ##
      updateStrategy:
        ## @param cluster.ui.standalone.updateStrategy.type Update strategy type for UI pods
        type: RollingUpdate
        rollingUpdate:
          ## @param cluster.ui.standalone.updateStrategy.rollingUpdate.maxUnavailable Maximum unavailable pods for UI update
          maxUnavailable: 1
          ## @param cluster.ui.standalone.updateStrategy.rollingUpdate.maxSurge Maximum surge pods for UI update
          maxSurge: 1
      ## @param cluster.ui.standalone.podDisruptionBudget Pod disruption budget for UI
      ##
      podDisruptionBudget: {}
      ## @param cluster.ui.standalone.tolerations Tolerations for UI pods
      ##
      tolerations: []
      ## @param cluster.ui.standalone.nodeSelector Node selector for UI pods
      ##
      nodeSelector: []
      ## @param cluster.ui.standalone.affinity Affinity rules for UI pods
      ##
      affinity: {}
      ## @param cluster.ui.standalone.podAffinityPreset Pod affinity preset for UI
      ##
      podAffinityPreset: ""
      ## @param cluster.ui.standalone.podAntiAffinityPreset Pod anti-affinity preset for UI
      ##
      podAntiAffinityPreset: soft
      ## Resource requests/limits for UI
      ##
      resources:
        ## @param cluster.ui.standalone.resources.requests Resource requests for UI pods
        requests: []
        ## @param cluster.ui.standalone.resources.limits Resource limits for UI pods
        limits: []
      ## HTTP service settings for UI
      ##
      httpSvc:
        ## @param cluster.ui.standalone.httpSvc.labels Labels for UI HTTP service
        labels: {}
        ## @param cluster.ui.standalone.httpSvc.annotations Annotations for UI HTTP service
        annotations: {}
        ## @param cluster.ui.standalone.httpSvc.port Port for UI HTTP service
        port: 17913
        ## @param cluster.ui.standalone.httpSvc.type Service type for UI HTTP service
        type: LoadBalancer
        ## @param cluster.ui.standalone.httpSvc.externalIPs External IPs for UI HTTP service
        externalIPs: []
        ## @param cluster.ui.standalone.httpSvc.loadBalancerIP Load balancer IP for UI HTTP service
        loadBalancerIP: null
        ## @param cluster.ui.standalone.httpSvc.loadBalancerSourceRanges Allowed source ranges for UI HTTP service
        loadBalancerSourceRanges: []
      ## Ingress configuration for UI
      ##
      ingress:
        ## @param cluster.ui.standalone.ingress.enabled Enable ingress for UI
        enabled: false
        ## @param cluster.ui.standalone.ingress.labels Labels for UI ingress
        labels: {}
        ## @param cluster.ui.standalone.ingress.annotations Annotations for UI ingress
        annotations: {}
        ## @param cluster.ui.standalone.ingress.rules Ingress rules for UI
        rules: []
        ## @param cluster.ui.standalone.ingress.tls TLS configuration for UI ingress
        tls: []
      ## Liveness probe for UI
      ##
      livenessProbe:
        ## @param cluster.ui.standalone.livenessProbe.initialDelaySeconds Initial delay for UI liveness probe
        initialDelaySeconds: 20
        ## @param cluster.ui.standalone.livenessProbe.periodSeconds Probe period for UI liveness probe
        periodSeconds: 30
        ## @param cluster.ui.standalone.livenessProbe.timeoutSeconds Timeout in seconds for UI liveness probe
        timeoutSeconds: 5
        ## @param cluster.ui.standalone.livenessProbe.successThreshold Success threshold for UI liveness probe
        successThreshold: 1
        ## @param cluster.ui.standalone.livenessProbe.failureThreshold Failure threshold for UI liveness probe
        failureThreshold: 5
      ## Readiness probe for UI
      ##
      readinessProbe:
        ## @param cluster.ui.standalone.readinessProbe.initialDelaySeconds Initial delay for UI readiness probe
        ##
        initialDelaySeconds: 20
        ## @param cluster.ui.standalone.readinessProbe.periodSeconds Probe period for UI readiness probe
        ##
        periodSeconds: 30
        ## @param cluster.ui.standalone.readinessProbe.timeoutSeconds Timeout in seconds for UI readiness probe
        ##
        timeoutSeconds: 5
        ## @param cluster.ui.standalone.readinessProbe.successThreshold Success threshold for UI readiness probe
        ##
        successThreshold: 1
        ## @param cluster.ui.standalone.readinessProbe.failureThreshold Failure threshold for UI readiness probe
        ##
        failureThreshold: 5
      ## Startup probe for UI
      ##
      startupProbe:
        ## @param cluster.ui.standalone.startupProbe.initialDelaySeconds Initial delay for UI startup probe
        ##
        initialDelaySeconds: 0
        ## @param cluster.ui.standalone.startupProbe.periodSeconds Probe period for UI startup probe
        ##
        periodSeconds: 10
        ## @param cluster.ui.standalone.startupProbe.timeoutSeconds Timeout in seconds for UI startup probe
        ##
        timeoutSeconds: 5
        ## @param cluster.ui.standalone.startupProbe.successThreshold Success threshold for UI startup probe
        ##
        successThreshold: 1
        ## @param cluster.ui.standalone.startupProbe.failureThreshold Failure threshold for UI startup probe
        ##
        failureThreshold: 60

## @section Storage configuration for persistent volumes
##
storage:
  ## @param storage.enabled Enable persistent storage (boolean)
  ##
  enabled: false
  ## @extra storage.persistentVolumeClaims List of PVC configurations
  ##
  persistentVolumeClaims:
  ## @param storage.persistentVolumeClaims[0].mountTargets Mount targets for the PVC
  ##
  - mountTargets: [ "measure" ]
    ## @param storage.persistentVolumeClaims[0].nodeRole Node role this PVC is bound to (hot, warm, cold)
    ##
    nodeRole: hot
    ## @param storage.persistentVolumeClaims[0].existingClaimName Existing PVC name (if any)
    existingClaimName: null
    ## @param storage.persistentVolumeClaims[0].claimName Name of the PVC
    claimName: hot-measure-data
    ## @param storage.persistentVolumeClaims[0].size Size of the PVC
    size: 50Gi
    ## @param storage.persistentVolumeClaims[0].accessModes Access modes for the PVC
    accessModes:
    - ReadWriteOnce
    ## @param storage.persistentVolumeClaims[0].storageClass Storage class for the PVC
    storageClass: null
    ## @param storage.persistentVolumeClaims[0].volumeMode Volume mode for the PVC
    volumeMode: Filesystem
  ## @param storage.persistentVolumeClaims[1].mountTargets Mount targets for the PVC
  - mountTargets: [ "stream" ]
    ## @param storage.persistentVolumeClaims[1].nodeRole Node role this PVC is bound to
    ##
    nodeRole: hot
    ## @param storage.persistentVolumeClaims[1].existingClaimName Existing PVC name (if any)
    existingClaimName: null
    ## @param storage.persistentVolumeClaims[1].claimName Name of the PVC
    claimName: hot-stream-data
    ## @param storage.persistentVolumeClaims[1].size Size of the PVC
    size: 50Gi
    ## @param storage.persistentVolumeClaims[1].accessModes Access modes for the PVC
    accessModes:
    - ReadWriteOnce
    ## @param storage.persistentVolumeClaims[1].storageClass Storage class for the PVC
    storageClass: null
    ## @param storage.persistentVolumeClaims[1].volumeMode Volume mode for the PVC
    volumeMode: Filesystem
  ## @param storage.persistentVolumeClaims[2].mountTargets Mount targets for the PVC
  - mountTargets: [ "property" ]
    ## @param storage.persistentVolumeClaims[2].nodeRole Node role this PVC is bound to
    ##
    nodeRole: hot
    ## @param storage.persistentVolumeClaims[2].existingClaimName Existing PVC name (if any)
    existingClaimName: null
    ## @param storage.persistentVolumeClaims[2].claimName Name of the PVC
    claimName: hot-property-data
    ## @param storage.persistentVolumeClaims[2].size Size of the PVC
    size: 5Gi
    ## @param storage.persistentVolumeClaims[2].accessModes Access modes for the PVC
    accessModes:
    - ReadWriteOnce
    ## @param storage.persistentVolumeClaims[2].storageClass Storage class for the PVC
    storageClass: null
    ## @param storage.persistentVolumeClaims[2].volumeMode Volume mode for the PVC
    volumeMode: Filesystem

## @section Service account configuration
##
serviceAccount:
  ## @param serviceAccount.create Create a service account (boolean)
  ##
  create: true
  ## @param serviceAccount.annotations Annotations for the service account
  ##
  annotations: {}
  ## @param serviceAccount.name Name of the service account
  ##
  name: ""

## @section Etcd configuration for cluster state management
##
etcd:
  ## @param etcd.enabled Enable etcd (boolean)
  ##
  enabled: true
  ## @param etcd.replicaCount Number of etcd replicas
  ##
  replicaCount: 1
  ## @section Authentication configuration for etcd
  ##
  auth:
    ## @section RBAC configuration for etcd
    ##
    rbac:
      ## @param etcd.auth.rbac.create Create RBAC roles (boolean)
      ##
      create: true
      ## @param etcd.auth.rbac.allowNoneAuthentication Allow unauthenticated access (boolean)
      ##
      allowNoneAuthentication: false
      ## @param etcd.auth.rbac.rootPassword Root user password
      ##
      rootPassword: banyandb
    ## @section Client TLS configuration
    ##
    client:
      ## @param etcd.auth.client.secureTransport Enable TLS for client communication (boolean)
      ##
      secureTransport: false
      ## @param etcd.auth.client.existingSecret Existing secret containing TLS certs
      ##
      existingSecret: ""
      ## @param etcd.auth.client.enableAuthentication Enable client authentication (boolean)
      ##
      enableAuthentication: false
      ## @param etcd.auth.client.certFilename Client certificate filename
      ##
      certFilename: tls.crt
      ## @param etcd.auth.client.certKeyFilename Client certificate key filename
      ##
      certKeyFilename: tls.key
      ## @param etcd.auth.client.caFilename CA certificate filename for TLS
      ##
      caFilename: ""
    ## Authentication token
    ## ref: https://etcd.io/docs/latest/learning/design-auth-v3/#two-types-of-tokens-simple-and-jwt
    ##
    token:
      ## @param etcd.auth.token.enabled Enables token authentication
      ##
      enabled: true
      ## @param etcd.auth.token.type Authentication token type. Allowed values: 'simple' or 'jwt'
      ## ref: https://etcd.io/docs/latest/op-guide/configuration/#--auth-token
      ##
      type: simple
  ## @section Liveness probe configuration for etcd
  ##
  livenessProbe:
    ## @param etcd.livenessProbe.initialDelaySeconds Initial delay for liveness probe
    ##
    initialDelaySeconds: 10
  ## @section Readiness probe configuration for etcd
  ##
  readinessProbe:
    ## @param etcd.readinessProbe.initialDelaySeconds Initial delay for readiness probe
    ##
    initialDelaySeconds: 10
  ## @param etcd.autoCompactionMode Auto-compaction mode (periodic, revision)
  ##
  autoCompactionMode: periodic
  ## @param etcd.autoCompactionRetention Auto-compaction retention period
  ##
  autoCompactionRetention: "1"
  ## @extra etcd.defrag Configuration for defragmentation
  ##
  defrag:
    ## @param etcd.defrag.enabled Enable defragmentation (boolean)
    ##
    enabled: true
    ## @extra etcd.defrag.cronjob Cron job configuration for defragmentation
    ##
    cronjob:
      ## @param etcd.defrag.cronjob.schedule Cron schedule for defragmentation
      ##
      schedule: "0 0 * * *"
