# Default values for pinepods.
# This is a YAML-formatted file.

## Number of pinepods pods to run
replicaCount: 1

## Container image configuration
image:
  # -- Repository to pull the container image from
  repository: madeofpendletonwool/pinepods
  # -- Tag of the image to pull
  # Default uses 'latest' but it's recommended to use a specific version
  tag: latest
  # -- Image pull policy
  # Defaults to IfNotPresent but consider using Always if using latest tag - You know, if you like living on the edge. You could even use nightly.
  pullPolicy: IfNotPresent

## Service configuration for exposing the pinepods application
service:
  # -- Kubernetes service type
  # Valid values are ClusterIP, NodePort, LoadBalancer
  type: ClusterIP
  # -- Port the service will listen on
  port: 8040
  # -- Optional nodePort to use when service type is NodePort
  # If not set, Kubernetes will automatically allocate one
  # nodePort: 30007

## Ingress configuration for exposing the application to external traffic
ingress:
  # -- Enable ingress resource
  enabled: true
  # -- Ingress class name
  className: ""
  # -- Additional ingress annotations
  annotations: {
    traefik.ingress.kubernetes.io/router.entrypoints: web
  }
    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
  # -- Ingress hosts configuration
  hosts:
    - host: pinepods.mydomain.com
      paths:
        - path: /
          pathType: Prefix
  # -- TLS configuration for ingress
  tls: []
  # - secretName: chart-example-tls
  #   hosts:
  #     - chart-example.local

## Persistence configuration
persistence:
  # -- Enable persistent storage
  enabled: true
  downloads:
    # -- Storage class for downloads PVC
    # If empty, default StorageClass will be used
    storageClass: ""
    # -- Access mode for downloads PVC
    accessMode: ReadWriteOnce
    # -- Size of downloads PVC
    size: 5Gi
    # -- Use existing PVC for downloads
    # If set, a new PVC will not be created
    existingClaim: ""
  backups:
    # -- Storage class for backups PVC
    storageClass: ""
    # -- Access mode for backups PVC
    accessMode: ReadWriteOnce
    # -- Size of backups PVC
    size: 2Gi
    # -- Use existing PVC for backups
    existingClaim: ""

## PostgreSQL configuration
postgresql:
  # -- Enable PostgreSQL deployment
  # Set to false if using external database
  enabled: true
  auth:
    # -- PostgreSQL username
    username: postgres
    # -- PostgreSQL password
    # Consider using a secret for production environments
    password: "supersecretpassword"
    # -- PostgreSQL database name
    database: pinepods_database
  # -- PostgreSQL resource configuration
  # Default values provide good performance for most deployments
  # Increase for larger deployments or high concurrent usage
  resources:
    requests:
      # -- Memory request for PostgreSQL container
      memory: 512Mi
      # -- CPU request for PostgreSQL container
      cpu: 250m
    limits:
      # -- Memory limit for PostgreSQL container
      memory: 2Gi
      # -- CPU limit for PostgreSQL container
      cpu: 1000m
  # Run on control planes if needed
  # tolerations:
  #   - key: "node-role.kubernetes.io/control-plane"
  #     operator: "Exists"
  #     effect: "NoSchedule"
  persistence:
    # -- Enable PostgreSQL persistence
    enabled: true
    # -- Storage class for PostgreSQL PVC
    storageClass: ""
    # -- Size of PostgreSQL PVC
    size: 3Gi
    # -- Use existing PVC for PostgreSQL
    existingClaim: ""

# External database configuration
# Only used when postgresql.enabled is false
externalDatabase:
  type: postgresql
  host: ""
  port: 5432
  user: postgres
  password: ""
  database: pinepods_database
  existingSecret:
    enabled: false
    name: existing-secret
    key: password

resources: {}

## Valkey configuration
valkey:
  # -- Enable Valkey deployment
  enabled: true
  architecture: standalone  # This prevents replica creation
  auth:
    enabled: false
  replica:
    replicaCount: 0  # Ensure no replicas are created
  primary:
    persistence:
      enabled: false 
  # Service configuration
  service:
    # -- Valkey port
    port: 6379

## Application environment variables
env:
  # -- Search API URL for podcast search functionality - Change these only if you're hosting the backend and the podcast people database yourself
  SEARCH_API_URL: "https://search.pinepods.online/api/search"
  PEOPLE_API_URL: "https://people.pinepods.online/api/hosts"
  # User Configuration
  # -- Default admin username
  USERNAME: "admin"
  # -- Default admin password
  PASSWORD: "password"
  # -- Admin full name
  FULLNAME: "Admin User"
  # -- Admin email address
  EMAIL: "admin@example.com"
  
  # Valkey Configuration
  # -- Valkey host
  # This is automatically set in deployment template - do not change
  # VALKEY_HOST: "post-valkey"
  # -- Valkey port
  # This is automatically set in deployment template - do not change
  # VALKEY_PORT: "6379"
  
  # Application Configuration
  # -- Debug mode
  # Set to true for additional logging
  DEBUG_MODE: "false"

## Pod Security Context
securityContext: {}
  # fsGroup: 2000
  # runAsUser: 1000
  # runAsNonRoot: true

## Container Security Context
containerSecurityContext: {}
  # capabilities:
  #   drop:
  #   - ALL
  # readOnlyRootFilesystem: true
  # runAsNonRoot: true
  # runAsUser: 1000

## Node selector for pod assignment
nodeSelector: {}

## Pod tolerations
tolerations: []

## Pod affinity
affinity: {}


## Optional Backend configuration
## backend is the itunes and podcast index search API. This is publically maintained at https://search.pinepods.online. If you want to maintain it yourself you can though
backend:
  # -- Enable backend deployment
  enabled: true
  image:
    repository: madeofpendletonwool/pinepods_backend
    tag: latest
    pullPolicy: IfNotPresent
  service:
    type: ClusterIP
    port: 5000
  # -- Backend secrets
  secrets:
    apiKey: "MYPODCASTINDEXKEY"
    apiSecret: "MYPODCASTINDEXSECRET"
    youtubeApiKey: "YOUR_YOUTUBE_API_KEY_HERE"
  ingress:
    enabled: true
    className: ""
    annotations: {}
    hosts:
      - host: backend.mydomain.com
        paths:
          - path: /
            pathType: Prefix
    tls: []

## PodPeople DB configuration
## Podpeople is a publically available website in which you can get details on guests and hosts for podcasts that don't maintain podcast 2.0 in their feeds.
## If you do want to maintain it yourself you'll probably want to download a copy of the database here: https://podpeople.pinepods.online 
podpeople:
  # -- Enable PodPeople DB deployment
  enabled: true
  image:
    repository: madeofpendletonwool/podpeople_db
    tag: latest
    pullPolicy: IfNotPresent
  service:
    type: ClusterIP
    port: 8085
  persistence:
    enabled: true
    storageClass: ""
    size: 1Gi
    accessMode: ReadWriteOnce
    existingClaim: ""
  auth:
    adminUsername: "admin"
    adminPassword: "password"
  # Change this only if you aren't hosting the backend. If you aren't you probably want it to be https://search.pinepods.online
  searchApiUrl: "http://pinepods-backend:{{ .Values.backend.service.port }}" # Only used if backend.enabled is false
  ingress:
    enabled: true
    className: ""
    annotations: {}
    hosts:
      - host: podpeople.mydomain.com
        paths:
          - path: /
            pathType: Prefix
    tls: []