{{ define "agent.config.kube_state_metrics" }}
// Kube State Metrics
discovery.relabel "kube_state_metrics" {
  targets = discovery.kubernetes.services.targets
{{- if (index .Values "kube-state-metrics").enabled }}
  rule {
    source_labels = ["__meta_kubernetes_service_label_app_kubernetes_io_instance"]
    regex = "{{ .Release.Name }}"
    action = "keep"
  }
{{- end }}
  rule {
    source_labels = ["__meta_kubernetes_service_label_app_kubernetes_io_name"]
    regex = "kube-state-metrics"
    action = "keep"
  }
  rule {
    source_labels = ["__meta_kubernetes_service_port_name"]
    regex = "{{- (index .Values.metrics "kube-state-metrics").service.port -}}"
    action = "keep"
  }
  rule {
    source_labels = ["__name__"]
    replacement   = local.file.cluster_name.content
    target_label  = "cluster"
  }
}

prometheus.scrape "kube_state_metrics" {
  job_name   = "integrations/kubernetes/kube-state-metrics"
  targets    = discovery.relabel.kube_state_metrics.output
  forward_to = [prometheus.relabel.kube_state_metrics.receiver]
{{- if (index .Values.metrics "kube-state-metrics").service.isTLS }}
  scheme     = "https"
  bearer_token_file = "/var/run/secrets/kubernetes.io/serviceaccount/token"
  tls_config {
    insecure_skip_verify = true
  }
{{- end }}
}

prometheus.relabel "kube_state_metrics" {
  rule {
    source_labels = ["__name__"]
    regex = "up|{{ join "|" (index .Values.metrics "kube-state-metrics").allowList }}"
    action = "keep"
  }
  forward_to = [prometheus.remote_write.grafana_cloud_prometheus.receiver]
}
{{ end }}
