---
# Source: pyroscope/charts/alloy/charts/crds/crds/monitoring.grafana.com_podlogs.yaml
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.9.2
  name: podlogs.monitoring.grafana.com
spec:
  group: monitoring.grafana.com
  names:
    categories:
    - grafana-alloy
    - alloy
    kind: PodLogs
    listKind: PodLogsList
    plural: podlogs
    singular: podlogs
  scope: Namespaced
  versions:
  - name: v1alpha2
    schema:
      openAPIV3Schema:
        description: PodLogs defines how to collect logs for a Pod.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: PodLogsSpec defines how to collect logs for a Pod.
            properties:
              namespaceSelector:
                description: Selector to select which namespaces the Pod objects are
                  discovered from.
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              relabelings:
                description: RelabelConfigs to apply to logs before delivering.
                items:
                  description: 'RelabelConfig allows dynamic rewriting of the label
                    set, being applied to samples before ingestion. It defines `<metric_relabel_configs>`-section
                    of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
                  properties:
                    action:
                      default: replace
                      description: Action to perform based on regex matching. Default
                        is 'replace'. uppercase and lowercase actions require Prometheus
                        >= 2.36.
                      enum:
                      - replace
                      - Replace
                      - keep
                      - Keep
                      - drop
                      - Drop
                      - hashmod
                      - HashMod
                      - labelmap
                      - LabelMap
                      - labeldrop
                      - LabelDrop
                      - labelkeep
                      - LabelKeep
                      - lowercase
                      - Lowercase
                      - uppercase
                      - Uppercase
                      type: string
                    modulus:
                      description: Modulus to take of the hash of the source label
                        values.
                      format: int64
                      type: integer
                    regex:
                      description: Regular expression against which the extracted
                        value is matched. Default is '(.*)'
                      type: string
                    replacement:
                      description: Replacement value against which a regex replace
                        is performed if the regular expression matches. Regex capture
                        groups are available. Default is '$1'
                      type: string
                    separator:
                      description: Separator placed between concatenated source label
                        values. default is ';'.
                      type: string
                    sourceLabels:
                      description: The source labels select values from existing labels.
                        Their content is concatenated using the configured separator
                        and matched against the configured regular expression for
                        the replace, keep, and drop actions.
                      items:
                        description: LabelName is a valid Prometheus label name which
                          may only contain ASCII letters, numbers, as well as underscores.
                        pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
                        type: string
                      type: array
                    targetLabel:
                      description: Label to which the resulting value is written in
                        a replace action. It is mandatory for replace actions. Regex
                        capture groups are available.
                      type: string
                  type: object
                type: array
              selector:
                description: Selector to select Pod objects. Required.
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
            required:
            - selector
            type: object
        type: object
    served: true
    storage: true

---
# Source: pyroscope/templates/deployments-statefulsets.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: pyroscope
  namespace: default
  labels:
    helm.sh/chart: pyroscope-2.0.2
    app.kubernetes.io/name: pyroscope
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "2.0.2"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: "all"
spec:
  maxUnavailable: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: pyroscope
      app.kubernetes.io/instance: pyroscope
      app.kubernetes.io/component: "all"
---
# Source: pyroscope/charts/alloy/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
automountServiceAccountToken: true
metadata:
  name: pyroscope-alloy
  namespace: default
  labels:
    helm.sh/chart: alloy-1.5.2
    app.kubernetes.io/name: alloy
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "v1.12.2"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: alloy
    app.kubernetes.io/component: rbac
---
# Source: pyroscope/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: pyroscope
  namespace: default
  labels:
    helm.sh/chart: pyroscope-2.0.2
    app.kubernetes.io/name: pyroscope
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "2.0.2"
    app.kubernetes.io/managed-by: Helm
---
# Source: pyroscope/templates/configmap-alloy.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: alloy-config-pyroscope
  namespace: default
  labels:
    helm.sh/chart: pyroscope-2.0.2
    app.kubernetes.io/name: pyroscope
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "2.0.2"
    app.kubernetes.io/managed-by: Helm
data:
  config.alloy: |
    logging {
    	level  = "info"
    	format = "logfmt"
    }

    discovery.kubernetes "pyroscope_kubernetes" {
    	role = "pod"
    }

    // The default scrape config allows to define annotations based scraping.
    //
    // For example the following annotations:
    //
    // ```
    // profiles.grafana.com/memory.scrape: "true"
    // profiles.grafana.com/memory.port: "8080"
    // profiles.grafana.com/cpu.scrape: "true"
    // profiles.grafana.com/cpu.port: "8080"
    // profiles.grafana.com/goroutine.scrape: "true"
    // profiles.grafana.com/goroutine.port: "8080"
    // ```
    //
    // will scrape the `memory`, `cpu` and `goroutine` profiles from the `8080` port of the pod.
    //
    // For more information see https://grafana.com/docs/pyroscope/latest/deploy-kubernetes/helm/#optional-scrape-your-own-workloads-profiles
    discovery.relabel "kubernetes_pods" {
    	targets = concat(discovery.kubernetes.pyroscope_kubernetes.targets)

    	rule {
    		action        = "drop"
    		source_labels = ["__meta_kubernetes_pod_phase"]
    		regex         = "Pending|Succeeded|Failed|Completed"
    	}

    	rule {
    		action = "labelmap"
    		regex  = "__meta_kubernetes_pod_label_(.+)"
    	}

    	rule {
    		action        = "replace"
    		source_labels = ["__meta_kubernetes_namespace"]
    		target_label  = "namespace"
    	}

    	rule {
    		action        = "replace"
    		source_labels = ["__meta_kubernetes_pod_name"]
    		target_label  = "pod"
    	}

    	rule {
    		action        = "replace"
    		source_labels = ["__meta_kubernetes_pod_container_name"]
    		target_label  = "container"
    	}

    	rule {
    		action        = "replace"
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_service_repository"]
    		target_label  = "service_repository"
    	}

    	rule {
    		action        = "replace"
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_service_git_ref"]
    		target_label  = "service_git_ref"
    	}

    	rule {
    		action        = "replace"
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_service_root_path"]
    		target_label  = "service_root_path"
    	}
    }

    discovery.relabel "kubernetes_pods_memory_default_name" {
    	targets = concat(discovery.relabel.kubernetes_pods.output)

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_memory_scrape"]
    		action        = "keep"
    		regex         = "true"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_memory_port_name"]
    		action        = "keep"
    		regex         = ""
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_container_port_number"]
    		target_label  = "__meta_kubernetes_pod_annotation_profiles_grafana_com_memory_port"
    		action        = "keepequal"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_memory_scheme"]
    		action        = "replace"
    		regex         = "(https?)"
    		target_label  = "__scheme__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_memory_path"]
    		action        = "replace"
    		regex         = "(.+)"
    		target_label  = "__profile_path__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__address__", "__meta_kubernetes_pod_annotation_profiles_grafana_com_memory_port"]
    		action        = "replace"
    		regex         = "(.+?)(?::\\d+)?;(\\d+)"
    		target_label  = "__address__"
    		replacement   = "$1:$2"
    	}
    }

    discovery.relabel "kubernetes_pods_memory_custom_name" {
    	targets = concat(discovery.relabel.kubernetes_pods.output)

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_memory_scrape"]
    		action        = "keep"
    		regex         = "true"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_memory_port_name"]
    		action        = "drop"
    		regex         = ""
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_container_port_name"]
    		target_label  = "__meta_kubernetes_pod_annotation_profiles_grafana_com_memory_port_name"
    		action        = "keepequal"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_memory_scheme"]
    		action        = "replace"
    		regex         = "(https?)"
    		target_label  = "__scheme__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_memory_path"]
    		action        = "replace"
    		regex         = "(.+)"
    		target_label  = "__profile_path__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__address__", "__meta_kubernetes_pod_annotation_profiles_grafana_com_memory_port"]
    		action        = "replace"
    		regex         = "(.+?)(?::\\d+)?;(\\d+)"
    		target_label  = "__address__"
    		replacement   = "$1:$2"
    	}
    }

    pyroscope.scrape "pyroscope_scrape_memory" {
    	clustering {
    		enabled = true
    	}

    	targets    = concat(discovery.relabel.kubernetes_pods_memory_default_name.output, discovery.relabel.kubernetes_pods_memory_custom_name.output)
    	forward_to = [pyroscope.write.pyroscope_write.receiver]

    	profiling_config {
    		profile.memory {
    			enabled = true
    		}

    		profile.process_cpu {
    			enabled = false
    		}

    		profile.goroutine {
    			enabled = false
    		}

    		profile.block {
    			enabled = false
    		}

    		profile.mutex {
    			enabled = false
    		}

    		profile.fgprof {
    			enabled = false
    		}
    	}
    }

    discovery.relabel "kubernetes_pods_cpu_default_name" {
    	targets = concat(discovery.relabel.kubernetes_pods.output)

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_cpu_scrape"]
    		action        = "keep"
    		regex         = "true"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_cpu_port_name"]
    		action        = "keep"
    		regex         = ""
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_container_port_number"]
    		target_label  = "__meta_kubernetes_pod_annotation_profiles_grafana_com_cpu_port"
    		action        = "keepequal"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_cpu_scheme"]
    		action        = "replace"
    		regex         = "(https?)"
    		target_label  = "__scheme__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_cpu_path"]
    		action        = "replace"
    		regex         = "(.+)"
    		target_label  = "__profile_path__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__address__", "__meta_kubernetes_pod_annotation_profiles_grafana_com_cpu_port"]
    		action        = "replace"
    		regex         = "(.+?)(?::\\d+)?;(\\d+)"
    		target_label  = "__address__"
    		replacement   = "$1:$2"
    	}
    }

    discovery.relabel "kubernetes_pods_cpu_custom_name" {
    	targets = concat(discovery.relabel.kubernetes_pods.output)

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_cpu_scrape"]
    		action        = "keep"
    		regex         = "true"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_cpu_port_name"]
    		action        = "drop"
    		regex         = ""
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_container_port_name"]
    		target_label  = "__meta_kubernetes_pod_annotation_profiles_grafana_com_cpu_port_name"
    		action        = "keepequal"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_cpu_scheme"]
    		action        = "replace"
    		regex         = "(https?)"
    		target_label  = "__scheme__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_cpu_path"]
    		action        = "replace"
    		regex         = "(.+)"
    		target_label  = "__profile_path__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__address__", "__meta_kubernetes_pod_annotation_profiles_grafana_com_cpu_port"]
    		action        = "replace"
    		regex         = "(.+?)(?::\\d+)?;(\\d+)"
    		target_label  = "__address__"
    		replacement   = "$1:$2"
    	}
    }

    pyroscope.scrape "pyroscope_scrape_cpu" {
    	clustering {
    		enabled = true
    	}

    	targets    = concat(discovery.relabel.kubernetes_pods_cpu_default_name.output, discovery.relabel.kubernetes_pods_cpu_custom_name.output)
    	forward_to = [pyroscope.write.pyroscope_write.receiver]

    	profiling_config {
    		profile.memory {
    			enabled = false
    		}

    		profile.process_cpu {
    			enabled = true
    		}

    		profile.goroutine {
    			enabled = false
    		}

    		profile.block {
    			enabled = false
    		}

    		profile.mutex {
    			enabled = false
    		}

    		profile.fgprof {
    			enabled = false
    		}
    	}
    }

    discovery.relabel "kubernetes_pods_goroutine_default_name" {
    	targets = concat(discovery.relabel.kubernetes_pods.output)

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_goroutine_scrape"]
    		action        = "keep"
    		regex         = "true"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_goroutine_port_name"]
    		action        = "keep"
    		regex         = ""
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_container_port_number"]
    		target_label  = "__meta_kubernetes_pod_annotation_profiles_grafana_com_goroutine_port"
    		action        = "keepequal"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_goroutine_scheme"]
    		action        = "replace"
    		regex         = "(https?)"
    		target_label  = "__scheme__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_goroutine_path"]
    		action        = "replace"
    		regex         = "(.+)"
    		target_label  = "__profile_path__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__address__", "__meta_kubernetes_pod_annotation_profiles_grafana_com_goroutine_port"]
    		action        = "replace"
    		regex         = "(.+?)(?::\\d+)?;(\\d+)"
    		target_label  = "__address__"
    		replacement   = "$1:$2"
    	}
    }

    discovery.relabel "kubernetes_pods_goroutine_custom_name" {
    	targets = concat(discovery.relabel.kubernetes_pods.output)

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_goroutine_scrape"]
    		action        = "keep"
    		regex         = "true"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_goroutine_port_name"]
    		action        = "drop"
    		regex         = ""
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_container_port_name"]
    		target_label  = "__meta_kubernetes_pod_annotation_profiles_grafana_com_goroutine_port_name"
    		action        = "keepequal"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_goroutine_scheme"]
    		action        = "replace"
    		regex         = "(https?)"
    		target_label  = "__scheme__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_goroutine_path"]
    		action        = "replace"
    		regex         = "(.+)"
    		target_label  = "__profile_path__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__address__", "__meta_kubernetes_pod_annotation_profiles_grafana_com_goroutine_port"]
    		action        = "replace"
    		regex         = "(.+?)(?::\\d+)?;(\\d+)"
    		target_label  = "__address__"
    		replacement   = "$1:$2"
    	}
    }

    pyroscope.scrape "pyroscope_scrape_goroutine" {
    	clustering {
    		enabled = true
    	}

    	targets    = concat(discovery.relabel.kubernetes_pods_goroutine_default_name.output, discovery.relabel.kubernetes_pods_goroutine_custom_name.output)
    	forward_to = [pyroscope.write.pyroscope_write.receiver]

    	profiling_config {
    		profile.memory {
    			enabled = false
    		}

    		profile.process_cpu {
    			enabled = false
    		}

    		profile.goroutine {
    			enabled = true
    		}

    		profile.block {
    			enabled = false
    		}

    		profile.mutex {
    			enabled = false
    		}

    		profile.fgprof {
    			enabled = false
    		}
    	}
    }

    discovery.relabel "kubernetes_pods_block_default_name" {
    	targets = concat(discovery.relabel.kubernetes_pods.output)

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_block_scrape"]
    		action        = "keep"
    		regex         = "true"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_block_port_name"]
    		action        = "keep"
    		regex         = ""
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_container_port_number"]
    		target_label  = "__meta_kubernetes_pod_annotation_profiles_grafana_com_block_port"
    		action        = "keepequal"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_block_scheme"]
    		action        = "replace"
    		regex         = "(https?)"
    		target_label  = "__scheme__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_block_path"]
    		action        = "replace"
    		regex         = "(.+)"
    		target_label  = "__profile_path__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__address__", "__meta_kubernetes_pod_annotation_profiles_grafana_com_block_port"]
    		action        = "replace"
    		regex         = "(.+?)(?::\\d+)?;(\\d+)"
    		target_label  = "__address__"
    		replacement   = "$1:$2"
    	}
    }

    discovery.relabel "kubernetes_pods_block_custom_name" {
    	targets = concat(discovery.relabel.kubernetes_pods.output)

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_block_scrape"]
    		action        = "keep"
    		regex         = "true"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_block_port_name"]
    		action        = "drop"
    		regex         = ""
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_container_port_name"]
    		target_label  = "__meta_kubernetes_pod_annotation_profiles_grafana_com_block_port_name"
    		action        = "keepequal"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_block_scheme"]
    		action        = "replace"
    		regex         = "(https?)"
    		target_label  = "__scheme__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_block_path"]
    		action        = "replace"
    		regex         = "(.+)"
    		target_label  = "__profile_path__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__address__", "__meta_kubernetes_pod_annotation_profiles_grafana_com_block_port"]
    		action        = "replace"
    		regex         = "(.+?)(?::\\d+)?;(\\d+)"
    		target_label  = "__address__"
    		replacement   = "$1:$2"
    	}
    }

    pyroscope.scrape "pyroscope_scrape_block" {
    	clustering {
    		enabled = true
    	}

    	targets    = concat(discovery.relabel.kubernetes_pods_block_default_name.output, discovery.relabel.kubernetes_pods_block_custom_name.output)
    	forward_to = [pyroscope.write.pyroscope_write.receiver]

    	profiling_config {
    		profile.memory {
    			enabled = false
    		}

    		profile.process_cpu {
    			enabled = false
    		}

    		profile.goroutine {
    			enabled = false
    		}

    		profile.block {
    			enabled = true
    		}

    		profile.mutex {
    			enabled = false
    		}

    		profile.fgprof {
    			enabled = false
    		}
    	}
    }

    discovery.relabel "kubernetes_pods_mutex_default_name" {
    	targets = concat(discovery.relabel.kubernetes_pods.output)

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_mutex_scrape"]
    		action        = "keep"
    		regex         = "true"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_mutex_port_name"]
    		action        = "keep"
    		regex         = ""
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_container_port_number"]
    		target_label  = "__meta_kubernetes_pod_annotation_profiles_grafana_com_mutex_port"
    		action        = "keepequal"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_mutex_scheme"]
    		action        = "replace"
    		regex         = "(https?)"
    		target_label  = "__scheme__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_mutex_path"]
    		action        = "replace"
    		regex         = "(.+)"
    		target_label  = "__profile_path__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__address__", "__meta_kubernetes_pod_annotation_profiles_grafana_com_mutex_port"]
    		action        = "replace"
    		regex         = "(.+?)(?::\\d+)?;(\\d+)"
    		target_label  = "__address__"
    		replacement   = "$1:$2"
    	}
    }

    discovery.relabel "kubernetes_pods_mutex_custom_name" {
    	targets = concat(discovery.relabel.kubernetes_pods.output)

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_mutex_scrape"]
    		action        = "keep"
    		regex         = "true"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_mutex_port_name"]
    		action        = "drop"
    		regex         = ""
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_container_port_name"]
    		target_label  = "__meta_kubernetes_pod_annotation_profiles_grafana_com_mutex_port_name"
    		action        = "keepequal"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_mutex_scheme"]
    		action        = "replace"
    		regex         = "(https?)"
    		target_label  = "__scheme__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_mutex_path"]
    		action        = "replace"
    		regex         = "(.+)"
    		target_label  = "__profile_path__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__address__", "__meta_kubernetes_pod_annotation_profiles_grafana_com_mutex_port"]
    		action        = "replace"
    		regex         = "(.+?)(?::\\d+)?;(\\d+)"
    		target_label  = "__address__"
    		replacement   = "$1:$2"
    	}
    }

    pyroscope.scrape "pyroscope_scrape_mutex" {
    	clustering {
    		enabled = true
    	}

    	targets    = concat(discovery.relabel.kubernetes_pods_mutex_default_name.output, discovery.relabel.kubernetes_pods_mutex_custom_name.output)
    	forward_to = [pyroscope.write.pyroscope_write.receiver]

    	profiling_config {
    		profile.memory {
    			enabled = false
    		}

    		profile.process_cpu {
    			enabled = false
    		}

    		profile.goroutine {
    			enabled = false
    		}

    		profile.block {
    			enabled = false
    		}

    		profile.mutex {
    			enabled = true
    		}

    		profile.fgprof {
    			enabled = false
    		}
    	}
    }

    discovery.relabel "kubernetes_pods_fgprof_default_name" {
    	targets = concat(discovery.relabel.kubernetes_pods.output)

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_fgprof_scrape"]
    		action        = "keep"
    		regex         = "true"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_fgprof_port_name"]
    		action        = "keep"
    		regex         = ""
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_container_port_number"]
    		target_label  = "__meta_kubernetes_pod_annotation_profiles_grafana_com_fgprof_port"
    		action        = "keepequal"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_fgprof_scheme"]
    		action        = "replace"
    		regex         = "(https?)"
    		target_label  = "__scheme__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_fgprof_path"]
    		action        = "replace"
    		regex         = "(.+)"
    		target_label  = "__profile_path__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__address__", "__meta_kubernetes_pod_annotation_profiles_grafana_com_fgprof_port"]
    		action        = "replace"
    		regex         = "(.+?)(?::\\d+)?;(\\d+)"
    		target_label  = "__address__"
    		replacement   = "$1:$2"
    	}
    }

    discovery.relabel "kubernetes_pods_fgprof_custom_name" {
    	targets = concat(discovery.relabel.kubernetes_pods.output)

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_fgprof_scrape"]
    		action        = "keep"
    		regex         = "true"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_fgprof_port_name"]
    		action        = "drop"
    		regex         = ""
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_container_port_name"]
    		target_label  = "__meta_kubernetes_pod_annotation_profiles_grafana_com_fgprof_port_name"
    		action        = "keepequal"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_fgprof_scheme"]
    		action        = "replace"
    		regex         = "(https?)"
    		target_label  = "__scheme__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__meta_kubernetes_pod_annotation_profiles_grafana_com_fgprof_path"]
    		action        = "replace"
    		regex         = "(.+)"
    		target_label  = "__profile_path__"
    		replacement   = "$1"
    	}

    	rule {
    		source_labels = ["__address__", "__meta_kubernetes_pod_annotation_profiles_grafana_com_fgprof_port"]
    		action        = "replace"
    		regex         = "(.+?)(?::\\d+)?;(\\d+)"
    		target_label  = "__address__"
    		replacement   = "$1:$2"
    	}
    }

    pyroscope.scrape "pyroscope_scrape_fgprof" {
    	clustering {
    		enabled = true
    	}

    	targets    = concat(discovery.relabel.kubernetes_pods_fgprof_default_name.output, discovery.relabel.kubernetes_pods_fgprof_custom_name.output)
    	forward_to = [pyroscope.write.pyroscope_write.receiver]

    	profiling_config {
    		profile.memory {
    			enabled = false
    		}

    		profile.process_cpu {
    			enabled = false
    		}

    		profile.goroutine {
    			enabled = false
    		}

    		profile.block {
    			enabled = false
    		}

    		profile.mutex {
    			enabled = false
    		}

    		profile.fgprof {
    			enabled = true
    		}
    	}
    }

    pyroscope.write "pyroscope_write" {
    	endpoint {
    		url = "http://pyroscope.default.svc.cluster.local.:4040"
    	}
    }
---
# Source: pyroscope/templates/configmap-overrides.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: pyroscope-overrides-config
  namespace: default
  labels:
    helm.sh/chart: pyroscope-2.0.2
    app.kubernetes.io/name: pyroscope
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "2.0.2"
    app.kubernetes.io/managed-by: Helm
data:
  overrides.yaml: |
    overrides:
      {}
---
# Source: pyroscope/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: pyroscope-config
  namespace: default
  labels:
    helm.sh/chart: pyroscope-2.0.2
    app.kubernetes.io/name: pyroscope
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "2.0.2"
    app.kubernetes.io/managed-by: Helm
data:
  config.yaml: |
    {}
---
# Source: pyroscope/charts/alloy/templates/rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: pyroscope-alloy
  labels:
    helm.sh/chart: alloy-1.5.2
    app.kubernetes.io/name: alloy
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "v1.12.2"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: alloy
    app.kubernetes.io/component: rbac
rules:
  - apiGroups:
    - ""
    - discovery.k8s.io
    - networking.k8s.io
    resources:
    - endpoints
    - endpointslices
    - ingresses
    - pods
    - services
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - ""
    resources:
    - pods
    - pods/log
    - namespaces
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - monitoring.grafana.com
    resources:
    - podlogs
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - monitoring.coreos.com
    resources:
    - prometheusrules
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - monitoring.coreos.com
    resources:
    - alertmanagerconfigs
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - monitoring.coreos.com
    resources:
    - podmonitors
    - servicemonitors
    - probes
    - scrapeconfigs
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - ""
    resources:
    - events
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - ""
    resources:
    - configmaps
    - secrets
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - apps
    - extensions
    resources:
    - replicasets
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - ""
    resources:
    - nodes
    - nodes/proxy
    - nodes/metrics
    verbs:
    - get
    - list
    - watch
  - nonResourceURLs:
    - /metrics
    verbs:
    - get
---
# Source: pyroscope/charts/alloy/templates/rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: pyroscope-alloy
  labels:
    helm.sh/chart: alloy-1.5.2
    app.kubernetes.io/name: alloy
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "v1.12.2"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: alloy
    app.kubernetes.io/component: rbac
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: pyroscope-alloy
subjects:
  - kind: ServiceAccount
    name: pyroscope-alloy
    namespace: default
---
# Source: pyroscope/templates/rbac-discovery.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: pyroscope-discovery
  labels:
    helm.sh/chart: pyroscope-2.0.2
    app.kubernetes.io/name: pyroscope
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "2.0.2"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - ""
  - discovery.k8s.io
  resources:
  - endpointslices
  - endpoints
  - services
  - pods
  verbs:
  - get
  - watch
  - list
---
# Source: pyroscope/templates/rbac-discovery.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: pyroscope-discovery
  labels:
    helm.sh/chart: pyroscope-2.0.2
    app.kubernetes.io/name: pyroscope
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "2.0.2"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: pyroscope-discovery
subjects:
- kind: ServiceAccount
  name: pyroscope
  namespace: default
---
# Source: pyroscope/charts/alloy/templates/cluster_service.yaml
apiVersion: v1
kind: Service
metadata:
  name: pyroscope-alloy-cluster
  namespace: default
  labels:
    helm.sh/chart: alloy-1.5.2
    app.kubernetes.io/name: alloy
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "v1.12.2"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: alloy
    app.kubernetes.io/component: networking
spec:
  type: ClusterIP
  clusterIP: 'None'
  publishNotReadyAddresses: true
  selector:
    app.kubernetes.io/name: alloy
    app.kubernetes.io/instance: pyroscope
  ports:
    # Do not include the -metrics suffix in the port name, otherwise metrics
    # can be double-collected with the non-headless Service if it's also
    # enabled.
    #
    # This service should only be used for clustering, and not metric
    # collection.
    - name: http
      port: 12345
      targetPort: 12345
      protocol: "TCP"
---
# Source: pyroscope/charts/alloy/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  name: pyroscope-alloy
  namespace: default
  labels:
    helm.sh/chart: alloy-1.5.2
    app.kubernetes.io/name: alloy
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "v1.12.2"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: alloy
    app.kubernetes.io/component: networking
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/name: alloy
    app.kubernetes.io/instance: pyroscope
  internalTrafficPolicy: Cluster
  ports:
    - name: http-metrics
      port: 12345
      targetPort: 12345
      protocol: "TCP"
---
# Source: pyroscope/templates/memberlist-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: pyroscope-memberlist
  namespace: default
  labels:
    helm.sh/chart: pyroscope-2.0.2
    app.kubernetes.io/name: pyroscope
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "2.0.2"
    app.kubernetes.io/managed-by: Helm
spec:
  type: ClusterIP
  clusterIP: None
  ports:
    - name: memberlist
      port: 7946
      protocol: TCP
      targetPort: 7946
  publishNotReadyAddresses: true
  selector:
    app.kubernetes.io/name: pyroscope
    app.kubernetes.io/instance: pyroscope
    # TODO: Ensure only services that offer memberlist register
    # pyroscope.grafana.com/memberlist: "true"
---
# Source: pyroscope/templates/services.yaml
apiVersion: v1
kind: Service
metadata:
  name: pyroscope
  namespace: default
  labels:
    helm.sh/chart: pyroscope-2.0.2
    app.kubernetes.io/name: pyroscope
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "2.0.2"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: "all"
spec:
  type: ClusterIP
  ports:
    - port: 4040
      targetPort: http2
      protocol: TCP
      name: http2
    - port: 9095
      targetPort: grpc
      protocol: TCP
      name: grpc
    - port: 9099
      targetPort: raft
      protocol: TCP
      name: raft
  selector:
    app.kubernetes.io/name: pyroscope
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/component: "all"
---
# Source: pyroscope/templates/services.yaml
apiVersion: v1
kind: Service
metadata:
  name: pyroscope-headless
  namespace: default
  labels:
    helm.sh/chart: pyroscope-2.0.2
    app.kubernetes.io/name: pyroscope
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "2.0.2"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: "all"
spec:
  type: ClusterIP
  clusterIP: None
  ports:
    - port: 4040
      targetPort: http2
      protocol: TCP
      name: http2
    - port: 9095
      targetPort: grpc
      protocol: TCP
      name: grpc
    - port: 9099
      targetPort: raft
      protocol: TCP
      name: raft
  publishNotReadyAddresses: true
  selector:
    app.kubernetes.io/name: pyroscope
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/component: "all"
---
# Source: pyroscope/charts/alloy/templates/controllers/statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: pyroscope-alloy
  namespace: default
  labels:
    helm.sh/chart: alloy-1.5.2
    app.kubernetes.io/name: alloy
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "v1.12.2"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: alloy
spec:
  replicas: 1
  podManagementPolicy: Parallel
  minReadySeconds: 10
  serviceName: pyroscope-alloy
  selector:
    matchLabels:
      app.kubernetes.io/name: alloy
      app.kubernetes.io/instance: pyroscope
  template:
    metadata:
      annotations:
        kubectl.kubernetes.io/default-container: alloy
        profiles.grafana.com/cpu.port_name: http-metrics
        profiles.grafana.com/cpu.scrape: "true"
        profiles.grafana.com/goroutine.port_name: http-metrics
        profiles.grafana.com/goroutine.scrape: "true"
        profiles.grafana.com/memory.port_name: http-metrics
        profiles.grafana.com/memory.scrape: "true"
        profiles.grafana.com/service_git_ref: v1.8.1
        profiles.grafana.com/service_repository: https://github.com/grafana/alloy
      labels:
        app.kubernetes.io/name: alloy
        app.kubernetes.io/instance: pyroscope
    spec:
      serviceAccountName: pyroscope-alloy
      containers:
        - name: alloy
          image: docker.io/grafana/alloy:v1.12.2
          imagePullPolicy: IfNotPresent
          args:
            - run
            - /etc/alloy/config.alloy
            - --storage.path=/tmp/alloy
            - --server.http.listen-addr=0.0.0.0:12345
            - --server.http.ui-path-prefix=/
            - --cluster.enabled=true
            - --cluster.join-addresses=pyroscope-alloy-cluster
            - --stability.level=public-preview
          env:
            - name: ALLOY_DEPLOY_MODE
              value: "helm"
            - name: HOSTNAME
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName
          ports:
            - containerPort: 12345
              name: http-metrics
          readinessProbe:
            httpGet:
              path: /-/ready
              port: 12345
              scheme: HTTP
            initialDelaySeconds: 10
            timeoutSeconds: 1
          volumeMounts:
            - name: config
              mountPath: /etc/alloy
        - name: config-reloader
          image: quay.io/prometheus-operator/prometheus-config-reloader:v0.81.0
          args:
            - --watched-dir=/etc/alloy
            - --reload-url=http://localhost:12345/-/reload
          volumeMounts:
            - name: config
              mountPath: /etc/alloy
          resources:
            requests:
              cpu: 10m
              memory: 50Mi
      dnsPolicy: ClusterFirst
      volumes:
        - name: config
          configMap:
            name: alloy-config-pyroscope
---
# Source: pyroscope/templates/deployments-statefulsets.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: pyroscope
  namespace: default
  labels:
    helm.sh/chart: pyroscope-2.0.2
    app.kubernetes.io/name: pyroscope
    app.kubernetes.io/instance: pyroscope
    app.kubernetes.io/version: "2.0.2"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: "all"
spec:
  serviceName: pyroscope-headless
  podManagementPolicy: Parallel
  replicas: 2
  selector:
    matchLabels:
      app.kubernetes.io/name: pyroscope
      app.kubernetes.io/instance: pyroscope
      app.kubernetes.io/component: "all"
  template:
    metadata:
      annotations:
        checksum/config: 8a4f819897979ed0bc3d732a2380b919c0688ecafd39ceb238856b74223db8ab
        profiles.grafana.com/service_repository: "https://github.com/grafana/pyroscope"
        profiles.grafana.com/service_git_ref: "v2.0.2"
        profiles.grafana.com/cpu.port_name: http2
        profiles.grafana.com/cpu.scrape: "true"
        profiles.grafana.com/goroutine.port_name: http2
        profiles.grafana.com/goroutine.scrape: "true"
        profiles.grafana.com/memory.port_name: http2
        profiles.grafana.com/memory.scrape: "true"
      labels:
        app.kubernetes.io/name: pyroscope
        app.kubernetes.io/instance: pyroscope
        app.kubernetes.io/component: "all"
        name: "pyroscope"
    spec:
      serviceAccountName: pyroscope
      securityContext:
        fsGroup: 10001
        runAsNonRoot: true
        runAsUser: 10001
      dnsPolicy: ClusterFirst
      containers:
        - name: "pyroscope"
          securityContext:
            {}
          image: "grafana/pyroscope:2.0.2"
          imagePullPolicy: IfNotPresent
          args:
            - "-target=all"
            - "-self-profiling.disable-push=true"
            - "-server.http-listen-port=4040"
            - "-memberlist.cluster-label=default-pyroscope"
            - "-memberlist.join=dns+pyroscope-memberlist.default.svc.cluster.local.:7946"
            - "-config.file=/etc/pyroscope/config.yaml"
            - "-runtime-config.file=/etc/pyroscope/overrides/overrides.yaml"
            - "-log.level=debug"
            - "-query-backend.address=dns:///_grpc._tcp.pyroscope-headless.$(NAMESPACE_FQDN):9095"
            - "-metastore.address=kubernetes:///pyroscope-headless.$(NAMESPACE_FQDN):9095"
            - "-metastore.data-dir=./data-metastore/data"
            - "-metastore.raft.dir=./data-metastore/raft"
            - "-metastore.raft.snapshots-dir=./data-metastore/raft"
            - "-metastore.raft.bind-address=:9099"
            - "-metastore.raft.server-id=$(POD_NAME).$(PYROSCOPE_METASTORE_SERVICE)"
            - "-metastore.raft.advertise-address=$(POD_NAME).$(PYROSCOPE_METASTORE_SERVICE)"
            - "-metastore.raft.bootstrap-peers=dnssrvnoa+_raft._tcp.$(PYROSCOPE_METASTORE_SERVICE)"
            - "-architecture.storage=v2"
          env:
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: NAMESPACE_FQDN
              value: "default.svc.cluster.local."
            - name: PYROSCOPE_METASTORE_SERVICE
              value: "pyroscope-headless.default.svc.cluster.local.:9099"
          ports:
            - name: http2
              containerPort: 4040
              protocol: TCP
            - name: memberlist
              containerPort: 7946
              protocol: TCP
            - name: grpc
              containerPort: 9095
              protocol: TCP
            - name: raft
              containerPort: 9099
              protocol: TCP
          readinessProbe:
            httpGet:
              path: /ready
              port: http2
              scheme: HTTP
          volumeMounts:
            - name: config
              mountPath: /etc/pyroscope/config.yaml
              subPath: config.yaml
            - name: overrides-config
              mountPath: /etc/pyroscope/overrides/
            - name: data
              mountPath: /data
            - name: data
              mountPath: /data-metastore
              subPath: .metastore
          resources:
            {}
      volumes:
        - name: config
          configMap:
            name: pyroscope-config
        - name: overrides-config
          configMap:
            name: pyroscope-overrides-config
        - name: data
          emptyDir: {}
