apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: webapp
  namespace: webapp
spec:
  interval: 5m
  releaseName: webapp
  chartRef:
    kind: OCIRepository
    name: universal-helm-chart
    namespace: flux-system
  install:
    createNamespace: true
  values:
    fullnameOverride: webapp
    integrations:
      monitoring:
        defaults:
          enabled: true
          provider: prometheus
          discovery: crd
          type: service
    ingress:
      enabled: true
      ingressClassName: nginx
      annotations:
        cert-manager.io/cluster-issuer: letsencrypt-prod
      hosts:
        web.example.com:
          paths:
            - path: /
              pathType: Prefix
              serviceName: webapp-web
              servicePort: 80
      tls:
        - hosts:
            - web.example.com
          secretName: web-example-tls
    deployments:
      web:
        enabled: true
        image:
          repository: nginx
          tag: "1.27"
        service:
          enabled: true
          type: ClusterIP
          ports:
            http:
              port: 80
              targetPort: 8080
            metrics:
              port: 9090
              targetPort: 9090
        metrics:
          enabled: true
          port: metrics
          path: /metrics
          interval: 30s
        hpa:
          enabled: true
          minReplicas: 2
          maxReplicas: 10
          metrics:
            - type: Resource
              resource:
                name: cpu
                target:
                  type: Utilization
                  averageUtilization: 70
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            memory: 256Mi
