apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: keda
  namespace: keda
spec:
  interval: 5m
  releaseName: keda
  chartRef:
    kind: OCIRepository
    name: universal-helm-chart
    namespace: flux-system
  install:
    createNamespace: true
  values:
    integrations:
      monitoring:
        defaults:
          enabled: true
          provider: prometheus
          discovery: crd
          type: service
          exposeService:
            enabled: true
            port: 9090
            targetPort: 9090
    deployments:
      worker:
        enabled: true
        image:
          repository: ghcr.io/example/orders-worker
          tag: v0.9.0
        service:
          enabled: false
        metrics:
          enabled: true
          type: pod
        keda:
          enabled: true
          minReplicas: 1
          maxReplicas: 30
          pollingInterval: 30
          cooldownPeriod: 300
          triggers:
            - type: kafka
              metadata:
                bootstrapServers: kafka.kafka:9092
                consumerGroup: orders-worker
                topic: orders
                lagThreshold: "100"
                offsetResetPolicy: earliest
          advanced:
            restoreToOriginalReplicaCount: true
            horizontalPodAutoscalerConfig:
              behavior:
                scaleUp:
                  stabilizationWindowSeconds: 60
                  policies:
                    - type: Pods
                      value: 1
                      periodSeconds: 60
                scaleDown:
                  stabilizationWindowSeconds: 900
                  policies:
                    - type: Pods
                      value: 1
                      periodSeconds: 300
        verticalPodAutoscaler:
          enabled: true
          updateMode: Initial
          resourcePolicy:
            containerPolicies:
              - containerName: "*"
                minAllowed:
                  cpu: 50m
                  memory: 128Mi
                maxAllowed:
                  cpu: "2"
                  memory: 1Gi
        env:
          LOG_LEVEL:
            value: info
        resources:
          requests:
            cpu: 100m
            memory: 256Mi
          limits:
            memory: 512Mi
    podDisruptionBudget:
      enabled: true
      minAvailable: 1
