# Default values for colanode.

# -- Override the name for the selector labels, defaults to the chart name
nameOverride: ''
# -- Override the full name of the deployed resources, defaults to a combination of the release name and the name for the selector labels
fullnameOverride: ''

# Core Colanode Configuration
colanode:
  # -- Number of replicas for the Colanode server deployment
  replicaCount: 1

  image:
    # -- Colanode server image repository
    repository: ghcr.io/colanode/server
    # -- Colanode server image pull policy
    pullPolicy: Always
    # -- Colanode server image tag
    tag: 'latest'

  # -- Image pull secrets
  imagePullSecrets: []

  serviceAccount:
    # -- Specifies whether a service account should be created
    create: true
    # -- Annotations to add to the service account
    annotations: {}
    # -- The name of the service account to use. If not set and create is true, a name is generated using the fullname template
    name: ''
    # -- Automatically mount a ServiceAccount's API credentials?
    automount: true

  # -- Pod annotations (empty by default)
  podAnnotations: {}

  # -- Pod labels (empty by default)
  podLabels: {}

  service:
    # -- Kubernetes service type
    type: ClusterIP
    # -- Kubernetes service port
    port: 3000

  ingress:
    # -- Enable ingress controller resource
    enabled: false
    # -- Ingress controller class name
    className: ''
    # -- Ingress annotations
    annotations: {}
      # kubernetes.io/ingress.class: nginx
      # kubernetes.io/tls-acme: "true"
    # -- Ingress hostnames
    hosts:
      - host: chart-example.local
        paths:
          - path: /
            pathType: Prefix
    # -- Ingress TLS configuration
    tls: []
    #  - secretName: chart-example-tls
    #    hosts:
    #      - chart-example.local

  # -- Resource requests and limits (empty by default for flexibility)
  resources: {}

  # -- Horizontal Pod Autoscaler (disabled by default for simplicity)
  autoscaling:
    enabled: false

  # -- Node runtime mode exposed as NODE_ENV. Even without colanode.configFile,
  #    the container ships with a default config.json that references env://POSTGRES_URL
  #    and env://REDIS_URL; this chart wires those automatically.
  nodeEnv: production

  # -- Additional env vars consumed via env:// pointers in config.json
  #    Example (secret reference):
  #    additionalEnv:
  #      - name: ACCOUNT_GOOGLE_CLIENT_ID
  #        valueFrom:
  #          secretKeyRef:
  #            name: google-oauth
  #            key: clientId
  additionalEnv: []

  # -- Extra volume mounts for file:// pointers (e.g., TLS certs). Combine with
  #    colanode.extraVolumes below to mount Secrets/ConfigMaps into the pod.
  #    Example: config.json contains "ca": "file://secrets/postgres-ca.crt".
  #      extraVolumeMounts:
  #        - name: postgres-ca
  #          mountPath: /config/secrets
  #          readOnly: true
  extraVolumeMounts: []

  # -- Extra volumes referenced by extraVolumeMounts. Each item becomes a standard
  #    Kubernetes volume definition. The example pairs with the mount above and
  #    assumes a secret created via `kubectl create secret generic postgres-ca \
  #    --from-file=postgres-ca.crt=./certs/rootCA.crt`.
  #      extraVolumes:
  #        - name: postgres-ca
  #          secret:
  #            secretName: postgres-ca
  extraVolumes: []

  # -- Optional config.json override
  configFile:
    enabled: false
    # -- Reference an existing ConfigMap instead of inlining data
    existingConfigMap: ''
    # -- Name to give the generated ConfigMap (defaults to "<release>-config-json")
    name: ''
    # -- Key to use inside the ConfigMap
    key: config.json
    # -- Raw config.json content (use --set-file to load your version). When
    #    disabled, the baked-in config.json remains in place and already expects
    #    env://POSTGRES_URL and env://REDIS_URL, both supplied automatically by
    #    this chart.
    data: |
      {}

  storage:
    # -- Storage backend type. Supported values: file, s3, gcs, azure
    type: file

    file:
      # -- Directory inside the pod where files are stored when using file storage
      directory: /var/lib/colanode/storage
      persistence:
        # -- Enable a PersistentVolumeClaim for file storage
        enabled: true
        # -- Use an existing PVC instead of creating one
        existingClaim: ''
        # -- Requested storage size for the PVC (only when creating a new claim)
        size: 20Gi
        # -- Storage class for the PVC. Leave empty to use the cluster default
        storageClass: ''
        # -- Access modes for the PVC
        accessModes:
          - ReadWriteOnce

    s3:
      # -- Custom endpoint for S3-compatible storage. Leave empty to use the bundled MinIO service hostname
      endpoint: ''
      # -- Bucket name to use when STORAGE_TYPE is s3
      bucket: colanode
      # -- Region for the S3 bucket
      region: us-east-1
      # -- Force path-style URLs (required for MinIO and most S3-compatible providers)
      forcePathStyle: true
      accessKey:
        # -- Optional plain-text access key (prefer using secrets in production)
        value: ''
        # -- Name of an existing secret that stores the access key (takes precedence over value)
        existingSecret: ''
        # -- Key within the existing secret that stores the access key
        secretKey: ''
      secretKey:
        # -- Optional plain-text secret key (prefer using secrets in production)
        value: ''
        # -- Name of an existing secret that stores the secret key (takes precedence over value)
        existingSecret: ''
        # -- Key within the existing secret that stores the secret key
        secretKey: ''

    gcs:
      # -- Bucket name when STORAGE_TYPE is gcs
      bucket: ''
      # -- GCP project ID associated with the bucket
      projectId: ''
      # -- Optional direct path to the credentials file (used when credentialsSecret.name is empty)
      credentialsPath: ''
      credentialsSecret:
        # -- Name of the secret that contains the GCP service account JSON key
        name: ''
        # -- Key inside the secret that stores the JSON key
        key: ''
        # -- Directory where the secret will be mounted
        mountPath: /var/secrets/gcp
        # -- File name to use when mounting the JSON key
        fileName: service-account.json

    azure:
      # -- Storage account name when STORAGE_TYPE is azure
      account: ''
      # -- Blob container name when STORAGE_TYPE is azure
      containerName: ''
      accountKey:
        # -- Optional plain-text storage account key
        value: ''
        # -- Name of an existing secret that stores the account key (takes precedence over value)
        existingSecret: ''
        # -- Key within the existing secret that stores the account key
        secretKey: ''

global:
  security:
    # Required for custom PostgreSQL image with pgvector extension
    # Bitnami Helm charts require this setting for non-official images
    allowInsecureImages: true

# PostgreSQL with pgvector extension
postgresql:
  # -- Enable PostgreSQL deployment
  enabled: true
  image:
    registry: ghcr.io
    repository: colanode/postgresql
    tag: '17'
    pullPolicy: Always

  auth:
    username: postgres
    # password: ""  # Leave empty to auto-generate
    # existingSecret: ""  # Will use auto-generated secret
    database: colanode_db
    secretKeys:
      userPasswordKey: 'postgres-password'
  primary:
    persistence:
      enabled: true
      size: 8Gi

# Redis (alias for Valkey)
redis:
  # -- Enable Redis deployment
  enabled: true
  architecture: standalone
  auth:
    enabled: true
    username: default
    # password: ""  # Leave empty to auto-generate
    # existingSecret: ""  # Will use auto-generated secret
    secretKeys:
      redisPasswordKey: 'valkey-password'
  master:
    persistence:
      enabled: true
      size: 8Gi

# MinIO object storage
minio:
  enabled: false
  auth:
    rootUser: 'minioadmin'
    # password: ""  # Leave empty to auto-generate
    # existingSecret: ""  # Will use auto-generated secret
    rootUserKey: 'root-user'
    # -- Key within the existing secret that holds the root password
    rootPasswordKey: 'root-password'
  persistence:
    enabled: true
    size: 10Gi
  service:
    type: ClusterIP
  # Create default buckets for Colanode
  defaultBuckets: 'colanode'
  extraArgs:
    - '--console-address'
    - ':9001'
