nameOverride: ""
fullnameOverride: ""

global:
  imageRegistry: ""
  imageNamespace: ""
  imageTag: edge
  imagePullSecrets: []

security:
  existingSecret: ""
  jwtSecret: change-me-in-production
  encryptionKey: change-me-in-production-32-bytes-minimum

database:
  schema: public
  username: attune
  password: attune
  database: attune
  host: ""
  port: 5432
  url: ""
  postgresql:
    enabled: true
    image:
      repository: timescale/timescaledb
      tag: 2.17.2-pg16
    persistence:
      enabled: true
      accessModes:
        - ReadWriteOnce
      size: 20Gi
      storageClassName: ""
    resources: {}

rabbitmq:
  username: attune
  password: attune
  host: ""
  port: 5672
  url: ""
  managementPort: 15672
  enabled: true
  image:
    repository: rabbitmq
    tag: 3.13-management-alpine
  persistence:
    enabled: true
    accessModes:
      - ReadWriteOnce
    size: 8Gi
    storageClassName: ""
  resources: {}

redis:
  enabled: true
  host: ""
  port: 6379
  url: ""
  image:
    repository: redis
    tag: 7-alpine
  persistence:
    enabled: true
    accessModes:
      - ReadWriteOnce
    size: 8Gi
    storageClassName: ""
  resources: {}

bootstrap:
  testUser:
    login: test@attune.local
    displayName: Test User
    password: TestPass123!

sharedStorage:
  packs:
    enabled: true
    accessModes:
      - ReadWriteMany
    size: 2Gi
    storageClassName: ""
  runtimeEnvs:
    enabled: true
    accessModes:
      - ReadWriteMany
    size: 10Gi
    storageClassName: ""
  artifacts:
    enabled: true
    accessModes:
      - ReadWriteMany
    size: 20Gi
    storageClassName: ""

images:
  api:
    repository: attune-api
    tag: ""
    pullPolicy: IfNotPresent
  executor:
    repository: attune-executor
    tag: ""
    pullPolicy: IfNotPresent
  worker:
    repository: attune-worker
    tag: ""
    pullPolicy: IfNotPresent
  sensor:
    repository: nikolaik/python-nodejs
    tag: python3.12-nodejs22-slim
    pullPolicy: IfNotPresent
  notifier:
    repository: attune-notifier
    tag: ""
    pullPolicy: IfNotPresent
  web:
    repository: attune-web
    tag: ""
    pullPolicy: IfNotPresent
  migrations:
    repository: attune-migrations
    tag: ""
    pullPolicy: IfNotPresent
  initUser:
    repository: attune-init-user
    tag: ""
    pullPolicy: IfNotPresent
  initPacks:
    repository: attune-init-packs
    tag: ""
    pullPolicy: IfNotPresent
  agent:
    repository: attune-agent
    tag: ""
    pullPolicy: IfNotPresent

jobs:
  migrations:
    ttlSecondsAfterFinished: 300
    resources: {}
  initUser:
    ttlSecondsAfterFinished: 300
    resources: {}
  initPacks:
    ttlSecondsAfterFinished: 300
    resources: {}

api:
  replicaCount: 1
  service:
    type: ClusterIP
    port: 8080
  resources: {}

executor:
  replicaCount: 1
  resources: {}

worker:
  replicaCount: 1
  runtimes: shell,python,node,native
  name: worker-full-01
  resources: {}

sensor:
  replicaCount: 1
  runtimes: shell,python,node,native
  logLevel: debug
  resources: {}

notifier:
  replicaCount: 1
  service:
    type: ClusterIP
    port: 8081
  resources: {}

web:
  replicaCount: 1
  service:
    type: ClusterIP
    port: 80
  config:
    environment: kubernetes
    apiUrl: http://localhost:8080
    wsUrl: ws://localhost:8081
  resources: {}
  ingress:
    enabled: false
    className: ""
    annotations: {}
    hosts:
      - host: attune.local
        paths:
          - path: /
            pathType: Prefix
    tls: []

# Agent-based workers
# These deploy the universal worker agent into any container image.
# The agent auto-detects available runtimes (python, ruby, node, etc.)
# and registers with the Attune platform.
#
# Each entry creates a separate Deployment with an init container that
# copies the statically-linked agent binary into the worker container.
#
# Supported fields per worker:
#   name             (required) - Unique name for this worker (used in resource names)
#   image            (required) - Container image with your desired runtime(s)
#   replicas         (optional) - Number of pod replicas (default: 1)
#   runtimes         (optional) - List of runtimes to expose; [] = auto-detect
#   resources        (optional) - Kubernetes resource requests/limits
#   env              (optional) - Extra environment variables (list of {name, value})
#   imagePullPolicy  (optional) - Pull policy for the worker image
#   logLevel         (optional) - RUST_LOG level (default: "info")
#   runtimeClassName (optional) - Kubernetes RuntimeClass (e.g., "nvidia" for GPU)
#   nodeSelector     (optional) - Node selector map for pod scheduling
#   tolerations      (optional) - Tolerations list for pod scheduling
#   stopGracePeriod  (optional) - Termination grace period in seconds (default: 45)
#
# Examples:
#   agentWorkers:
#     - name: ruby
#       image: ruby:3.3
#       replicas: 2
#       runtimes: []  # auto-detect
#       resources: {}
#
#     - name: python-gpu
#       image: nvidia/cuda:12.3.1-runtime-ubuntu22.04
#       replicas: 1
#       runtimes: [python, shell]
#       runtimeClassName: nvidia
#       nodeSelector:
#         gpu: "true"
#       tolerations:
#         - key: nvidia.com/gpu
#           operator: Exists
#           effect: NoSchedule
#       resources:
#         limits:
#           nvidia.com/gpu: 1
#
#     - name: custom
#       image: my-org/my-custom-image:latest
#       replicas: 1
#       runtimes: []
#       env:
#         - name: MY_CUSTOM_VAR
#           value: my-value
agentWorkers: []
