--- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: pyroscope-dev namespace: default labels: helm.sh/chart: pyroscope-1.19.1 app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/version: "1.19.0" 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-dev app.kubernetes.io/component: "all" --- # Source: pyroscope/charts/alloy/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount automountServiceAccountToken: true metadata: name: pyroscope-dev-alloy namespace: default labels: helm.sh/chart: alloy-1.5.2 app.kubernetes.io/name: alloy app.kubernetes.io/instance: pyroscope-dev 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-dev namespace: default labels: helm.sh/chart: pyroscope-1.19.1 app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/version: "1.19.0" 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-1.19.1 app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/version: "1.19.0" 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-dev.default.svc.cluster.local.:4040" } } --- # Source: pyroscope/templates/configmap-overrides.yaml apiVersion: v1 kind: ConfigMap metadata: name: pyroscope-dev-overrides-config namespace: default labels: helm.sh/chart: pyroscope-1.19.1 app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/version: "1.19.0" app.kubernetes.io/managed-by: Helm data: overrides.yaml: | overrides: {} --- # Source: pyroscope/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: pyroscope-dev-config namespace: default labels: helm.sh/chart: pyroscope-1.19.1 app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/version: "1.19.0" 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-dev-alloy labels: helm.sh/chart: alloy-1.5.2 app.kubernetes.io/name: alloy app.kubernetes.io/instance: pyroscope-dev 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-dev-alloy labels: helm.sh/chart: alloy-1.5.2 app.kubernetes.io/name: alloy app.kubernetes.io/instance: pyroscope-dev 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-dev-alloy subjects: - kind: ServiceAccount name: pyroscope-dev-alloy namespace: default --- # Source: pyroscope/charts/alloy/templates/cluster_service.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-alloy-cluster namespace: default labels: helm.sh/chart: alloy-1.5.2 app.kubernetes.io/name: alloy app.kubernetes.io/instance: pyroscope-dev 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-dev 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-dev-alloy namespace: default labels: helm.sh/chart: alloy-1.5.2 app.kubernetes.io/name: alloy app.kubernetes.io/instance: pyroscope-dev 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-dev ports: - name: http-metrics port: 12345 targetPort: 12345 protocol: "TCP" --- # Source: pyroscope/templates/memberlist-service.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-memberlist namespace: default labels: helm.sh/chart: pyroscope-1.19.1 app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/version: "1.19.0" 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-dev # 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-dev namespace: default labels: helm.sh/chart: pyroscope-1.19.1 app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/version: "1.19.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: "all" spec: type: ClusterIP ports: - port: 4040 targetPort: http2 protocol: TCP name: http2 selector: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "all" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-headless namespace: default labels: helm.sh/chart: pyroscope-1.19.1 app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/version: "1.19.0" 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 selector: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "all" --- # Source: pyroscope/charts/alloy/templates/controllers/statefulset.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: pyroscope-dev-alloy namespace: default labels: helm.sh/chart: alloy-1.5.2 app.kubernetes.io/name: alloy app.kubernetes.io/instance: pyroscope-dev 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-dev-alloy selector: matchLabels: app.kubernetes.io/name: alloy app.kubernetes.io/instance: pyroscope-dev 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-dev spec: serviceAccountName: pyroscope-dev-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-dev-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-dev namespace: default labels: helm.sh/chart: pyroscope-1.19.1 app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/version: "1.19.0" app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: "all" spec: serviceName: pyroscope-dev-headless podManagementPolicy: Parallel replicas: 1 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "all" template: metadata: annotations: checksum/config: 8e13b03787d98f732345114a954e05d00244276036fe3e003c1e8d3a5f7e8aeb profiles.grafana.com/service_repository: "https://github.com/grafana/pyroscope" profiles.grafana.com/service_git_ref: "v1.19.0" 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-dev app.kubernetes.io/component: "all" name: "pyroscope" spec: serviceAccountName: pyroscope-dev securityContext: fsGroup: 10001 runAsNonRoot: true runAsUser: 10001 dnsPolicy: ClusterFirst containers: - name: "pyroscope" securityContext: {} image: "grafana/pyroscope:1.19.0" imagePullPolicy: IfNotPresent args: - "-target=all" - "-self-profiling.disable-push=true" - "-server.http-listen-port=4040" - "-memberlist.cluster-label=default-pyroscope-dev" - "-memberlist.join=dns+pyroscope-dev-memberlist.default.svc.cluster.local.:7946" - "-config.file=/etc/pyroscope/config.yaml" - "-runtime-config.file=/etc/pyroscope/overrides/overrides.yaml" - "-log.level=debug" env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: NAMESPACE_FQDN value: "default.svc.cluster.local." ports: - name: http2 containerPort: 4040 protocol: TCP - name: memberlist containerPort: 7946 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 resources: {} volumes: - name: config configMap: name: pyroscope-dev-config - name: overrides-config configMap: name: pyroscope-dev-overrides-config - name: data emptyDir: {}