{{- $myNS := lookup "v1" "Namespace" "" .Release.Namespace }}
{{- $targetTenant := index $myNS.metadata.annotations "namespace.cozystack.io/monitoring" }}
{{- if .Values.addons.monitoringAgents.enabled }}
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: {{ .Release.Name }}-monitoring-agents
  labels:
    cozystack.io/repository: system
    cozystack.io/target-cluster-name: {{ .Release.Name }}
spec:
  interval: 5m
  releaseName: cozy-monitoring-agents
  chart:
    spec:
      chart: cozy-monitoring-agents
      reconcileStrategy: Revision
      sourceRef:
        kind: HelmRepository
        name: cozystack-system
        namespace: cozy-system
      version: '>= 0.0.0-0'
  kubeConfig:
    secretRef:
      name: {{ .Release.Name }}-admin-kubeconfig
      key: super-admin.svc
  targetNamespace: cozy-monitoring-agents
  storageNamespace: cozy-monitoring-agents
  install:
    createNamespace: true
    timeout: "300s"
    remediation:
      retries: -1
  upgrade:
    remediation:
      retries: -1
  dependsOn:
  {{- if lookup "helm.toolkit.fluxcd.io/v2" "HelmRelease" .Release.Namespace .Release.Name }}
  - name: {{ .Release.Name }}
    namespace: {{ .Release.Namespace }}
  {{- end }}
  - name: {{ .Release.Name }}-cozy-victoria-metrics-operator
    namespace: {{ .Release.Namespace }}
  - name: {{ .Release.Name }}-vertical-pod-autoscaler-crds
    namespace: {{ .Release.Namespace }}
  values:
    vmagent:
      externalLabels:
        cluster: {{ .Release.Name }}
        tenant: {{ .Release.Namespace }}
      remoteWrite:
        url: http://vminsert-shortterm.{{ $targetTenant }}.svc:8480/insert/0/prometheus
    fluent-bit:
      readinessProbe:
        httpGet:
          path: /
      daemonSetVolumes:
        - name: varlog
          hostPath:
            path: /var/log
        - name: varlibdockercontainers
          hostPath:
            path: /var/lib/docker/containers
      daemonSetVolumeMounts:
        - name: varlog
          mountPath: /var/log
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
      config:
        outputs: |
          [OUTPUT]
              Name http
              Match kube.*
              Host vlogs-generic.{{ $targetTenant }}.svc
              port 9428
              compress gzip
              uri /insert/jsonline?_stream_fields=stream,kubernetes_pod_name,kubernetes_container_name,kubernetes_namespace_name&_msg_field=log&_time_field=date
              format json_lines
              json_date_format iso8601
              header AccountID 0
              header ProjectID 0
        filters: |
          [FILTER]
              Name kubernetes
              Match kube.*
              Merge_Log On
              Keep_Log On
              K8S-Logging.Parser On
              K8S-Logging.Exclude On
          [FILTER]
              Name                nest
              Match               *
              Wildcard            pod_name
              Operation lift
              Nested_under kubernetes
              Add_prefix   kubernetes_
          [FILTER]
              Name modify
              Match *
              Add tenant {{ .Release.Namespace }}
          [FILTER]
              Name modify
              Match *
              Add cluster {{ .Release.Name }}
{{- end }}
