--- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: pyroscope-dev-ad-hoc-profiles 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: "ad-hoc-profiles" spec: maxUnavailable: 1 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "ad-hoc-profiles" --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: pyroscope-dev-compactor 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: "compactor" spec: maxUnavailable: 1 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "compactor" --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: pyroscope-dev-distributor 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: "distributor" spec: maxUnavailable: 1 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "distributor" --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: pyroscope-dev-ingester 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: "ingester" spec: maxUnavailable: 1 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "ingester" --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: pyroscope-dev-querier 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: "querier" spec: maxUnavailable: 1 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "querier" --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: pyroscope-dev-query-frontend 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: "query-frontend" spec: maxUnavailable: 1 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "query-frontend" --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: pyroscope-dev-query-scheduler 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: "query-scheduler" spec: maxUnavailable: 1 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "query-scheduler" --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: pyroscope-dev-store-gateway 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: "store-gateway" spec: maxUnavailable: 1 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "store-gateway" --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: pyroscope-dev-tenant-settings 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: "tenant-settings" spec: maxUnavailable: 1 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "tenant-settings" --- # 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/charts/minio/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: name: "minio-sa" namespace: "default" --- # 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/charts/minio/templates/secrets.yaml apiVersion: v1 kind: Secret metadata: name: pyroscope-dev-minio namespace: "default" labels: app: minio chart: minio-4.1.0 release: pyroscope-dev heritage: Helm type: Opaque data: rootUser: "Z3JhZmFuYS1weXJvc2NvcGU=" rootPassword: "c3VwZXJzZWNyZXQ=" --- # Source: pyroscope/charts/minio/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: pyroscope-dev-minio namespace: "default" labels: app: minio chart: minio-4.1.0 release: pyroscope-dev heritage: Helm data: initialize: |- #!/bin/sh set -e ; # Have script exit in the event of a failed command. MC_CONFIG_DIR="/etc/minio/mc/" MC="/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}" # connectToMinio # Use a check-sleep-check loop to wait for MinIO service to be available connectToMinio() { SCHEME=$1 ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts set -e ; # fail if we can't read the keys. ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ; set +e ; # The connections to minio are allowed to fail. echo "Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT" ; MC_COMMAND="${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET" ; $MC_COMMAND ; STATUS=$? ; until [ $STATUS = 0 ] do ATTEMPTS=`expr $ATTEMPTS + 1` ; echo \"Failed attempts: $ATTEMPTS\" ; if [ $ATTEMPTS -gt $LIMIT ]; then exit 1 ; fi ; sleep 2 ; # 1 second intervals between attempts $MC_COMMAND ; STATUS=$? ; done ; set -e ; # reset `e` as active return 0 } # checkBucketExists ($bucket) # Check if the bucket exists, by using the exit code of `mc ls` checkBucketExists() { BUCKET=$1 CMD=$(${MC} ls myminio/$BUCKET > /dev/null 2>&1) return $? } # createBucket ($bucket, $policy, $purge) # Ensure bucket exists, purging if asked to createBucket() { BUCKET=$1 POLICY=$2 PURGE=$3 VERSIONING=$4 OBJECTLOCKING=$5 # Purge the bucket, if set & exists # Since PURGE is user input, check explicitly for `true` if [ $PURGE = true ]; then if checkBucketExists $BUCKET ; then echo "Purging bucket '$BUCKET'." set +e ; # don't exit if this fails ${MC} rm -r --force myminio/$BUCKET set -e ; # reset `e` as active else echo "Bucket '$BUCKET' does not exist, skipping purge." fi fi # Create the bucket if it does not exist and set objectlocking if enabled (NOTE: versioning will be not changed if OBJECTLOCKING is set because it enables versioning to the Buckets created) if ! checkBucketExists $BUCKET ; then if [ ! -z $OBJECTLOCKING ] ; then if [ $OBJECTLOCKING = true ] ; then echo "Creating bucket with OBJECTLOCKING '$BUCKET'" ${MC} mb --with-lock myminio/$BUCKET elif [ $OBJECTLOCKING = false ] ; then echo "Creating bucket '$BUCKET'" ${MC} mb myminio/$BUCKET fi elif [ -z $OBJECTLOCKING ] ; then echo "Creating bucket '$BUCKET'" ${MC} mb myminio/$BUCKET else echo "Bucket '$BUCKET' already exists." fi fi # set versioning for bucket if objectlocking is disabled or not set if [ -z $OBJECTLOCKING ] ; then if [ ! -z $VERSIONING ] ; then if [ $VERSIONING = true ] ; then echo "Enabling versioning for '$BUCKET'" ${MC} version enable myminio/$BUCKET elif [ $VERSIONING = false ] ; then echo "Suspending versioning for '$BUCKET'" ${MC} version suspend myminio/$BUCKET fi fi else echo "Bucket '$BUCKET' versioning unchanged." fi # At this point, the bucket should exist, skip checking for existence # Set policy on the bucket echo "Setting policy of bucket '$BUCKET' to '$POLICY'." ${MC} policy set $POLICY myminio/$BUCKET } # Try connecting to MinIO instance scheme=http connectToMinio $scheme # Create the buckets createBucket grafana-pyroscope-data none false add-user: |- #!/bin/sh set -e ; # Have script exit in the event of a failed command. MC_CONFIG_DIR="/etc/minio/mc/" MC="/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}" # AccessKey and secretkey credentials file are added to prevent shell execution errors caused by special characters. # Special characters for example : ',",<,>,{,} MINIO_ACCESSKEY_SECRETKEY_TMP="/tmp/accessKey_and_secretKey_tmp" # connectToMinio # Use a check-sleep-check loop to wait for MinIO service to be available connectToMinio() { SCHEME=$1 ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts set -e ; # fail if we can't read the keys. ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ; set +e ; # The connections to minio are allowed to fail. echo "Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT" ; MC_COMMAND="${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET" ; $MC_COMMAND ; STATUS=$? ; until [ $STATUS = 0 ] do ATTEMPTS=`expr $ATTEMPTS + 1` ; echo \"Failed attempts: $ATTEMPTS\" ; if [ $ATTEMPTS -gt $LIMIT ]; then exit 1 ; fi ; sleep 2 ; # 1 second intervals between attempts $MC_COMMAND ; STATUS=$? ; done ; set -e ; # reset `e` as active return 0 } # checkUserExists () # Check if the user exists, by using the exit code of `mc admin user info` checkUserExists() { CMD=$(${MC} admin user info myminio $(head -1 $MINIO_ACCESSKEY_SECRETKEY_TMP) > /dev/null 2>&1) return $? } # createUser ($policy) createUser() { POLICY=$1 #check accessKey_and_secretKey_tmp file if [[ ! -f $MINIO_ACCESSKEY_SECRETKEY_TMP ]];then echo "credentials file does not exist" return 1 fi if [[ $(cat $MINIO_ACCESSKEY_SECRETKEY_TMP|wc -l) -ne 2 ]];then echo "credentials file is invalid" rm -f $MINIO_ACCESSKEY_SECRETKEY_TMP return 1 fi USER=$(head -1 $MINIO_ACCESSKEY_SECRETKEY_TMP) # Create the user if it does not exist if ! checkUserExists ; then echo "Creating user '$USER'" cat $MINIO_ACCESSKEY_SECRETKEY_TMP | ${MC} admin user add myminio else echo "User '$USER' already exists." fi #clean up credentials files. rm -f $MINIO_ACCESSKEY_SECRETKEY_TMP # set policy for user if [ ! -z $POLICY -a $POLICY != " " ] ; then echo "Adding policy '$POLICY' for '$USER'" ${MC} admin policy set myminio $POLICY user=$USER else echo "User '$USER' has no policy attached." fi } # Try connecting to MinIO instance scheme=http connectToMinio $scheme # Create the users echo console > $MINIO_ACCESSKEY_SECRETKEY_TMP echo console123 >> $MINIO_ACCESSKEY_SECRETKEY_TMP createUser consoleAdmin add-policy: |- #!/bin/sh set -e ; # Have script exit in the event of a failed command. MC_CONFIG_DIR="/etc/minio/mc/" MC="/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}" # connectToMinio # Use a check-sleep-check loop to wait for MinIO service to be available connectToMinio() { SCHEME=$1 ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts set -e ; # fail if we can't read the keys. ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ; set +e ; # The connections to minio are allowed to fail. echo "Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT" ; MC_COMMAND="${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET" ; $MC_COMMAND ; STATUS=$? ; until [ $STATUS = 0 ] do ATTEMPTS=`expr $ATTEMPTS + 1` ; echo \"Failed attempts: $ATTEMPTS\" ; if [ $ATTEMPTS -gt $LIMIT ]; then exit 1 ; fi ; sleep 2 ; # 1 second intervals between attempts $MC_COMMAND ; STATUS=$? ; done ; set -e ; # reset `e` as active return 0 } # checkPolicyExists ($policy) # Check if the policy exists, by using the exit code of `mc admin policy info` checkPolicyExists() { POLICY=$1 CMD=$(${MC} admin policy info myminio $POLICY > /dev/null 2>&1) return $? } # createPolicy($name, $filename) createPolicy () { NAME=$1 FILENAME=$2 # Create the name if it does not exist echo "Checking policy: $NAME (in /config/$FILENAME.json)" if ! checkPolicyExists $NAME ; then echo "Creating policy '$NAME'" else echo "Policy '$NAME' already exists." fi ${MC} admin policy add myminio $NAME /config/$FILENAME.json } # Try connecting to MinIO instance scheme=http connectToMinio $scheme custom-command: |- #!/bin/sh set -e ; # Have script exit in the event of a failed command. MC_CONFIG_DIR="/etc/minio/mc/" MC="/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}" # connectToMinio # Use a check-sleep-check loop to wait for MinIO service to be available connectToMinio() { SCHEME=$1 ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts set -e ; # fail if we can't read the keys. ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ; set +e ; # The connections to minio are allowed to fail. echo "Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT" ; MC_COMMAND="${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET" ; $MC_COMMAND ; STATUS=$? ; until [ $STATUS = 0 ] do ATTEMPTS=`expr $ATTEMPTS + 1` ; echo \"Failed attempts: $ATTEMPTS\" ; if [ $ATTEMPTS -gt $LIMIT ]; then exit 1 ; fi ; sleep 2 ; # 1 second intervals between attempts $MC_COMMAND ; STATUS=$? ; done ; set -e ; # reset `e` as active return 0 } # runCommand ($@) # Run custom mc command runCommand() { ${MC} "$@" return $? } # Try connecting to MinIO instance scheme=http connectToMinio $scheme --- # 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-distributor.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: | storage: backend: s3 s3: access_key_id: grafana-pyroscope bucket_name: grafana-pyroscope-data endpoint: pyroscope-dev-minio:9000 insecure: true secret_access_key: supersecret --- # 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/charts/minio/templates/console-service.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-minio-console namespace: "default" labels: app: minio chart: minio-4.1.0 release: pyroscope-dev heritage: Helm spec: type: ClusterIP ports: - name: http port: 9001 protocol: TCP targetPort: 9001 selector: app: minio release: pyroscope-dev --- # Source: pyroscope/charts/minio/templates/service.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-minio namespace: "default" labels: app: minio chart: minio-4.1.0 release: pyroscope-dev heritage: Helm monitoring: "true" spec: type: ClusterIP ports: - name: http port: 9000 protocol: TCP targetPort: 9000 selector: app: minio release: pyroscope-dev --- # Source: pyroscope/charts/minio/templates/statefulset.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-minio-svc namespace: "default" labels: app: minio chart: minio-4.1.0 release: "pyroscope-dev" heritage: "Helm" spec: publishNotReadyAddresses: true clusterIP: None ports: - name: http port: 9000 protocol: TCP targetPort: 9000 selector: app: minio release: pyroscope-dev --- # 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-ad-hoc-profiles 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: "ad-hoc-profiles" 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: "ad-hoc-profiles" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-ad-hoc-profiles-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: "ad-hoc-profiles" 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: "ad-hoc-profiles" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-compactor 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: "compactor" 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: "compactor" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-compactor-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: "compactor" 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: "compactor" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-distributor 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: "distributor" 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: "distributor" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-distributor-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: "distributor" 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: "distributor" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-ingester 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: "ingester" 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: "ingester" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-ingester-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: "ingester" 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: "ingester" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-querier 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: "querier" 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: "querier" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-querier-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: "querier" 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: "querier" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-query-frontend 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: "query-frontend" 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: "query-frontend" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-query-frontend-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: "query-frontend" 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: "query-frontend" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-query-scheduler 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: "query-scheduler" 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: "query-scheduler" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-query-scheduler-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: "query-scheduler" 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: "query-scheduler" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-store-gateway 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: "store-gateway" 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: "store-gateway" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-store-gateway-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: "store-gateway" 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: "store-gateway" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-tenant-settings 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: "tenant-settings" 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: "tenant-settings" --- # Source: pyroscope/templates/services.yaml apiVersion: v1 kind: Service metadata: name: pyroscope-dev-tenant-settings-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: "tenant-settings" 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: "tenant-settings" --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: apps/v1 kind: Deployment metadata: name: pyroscope-dev-ad-hoc-profiles 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: "ad-hoc-profiles" spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "ad-hoc-profiles" template: metadata: annotations: checksum/config: 7cd587e5dbf9cf3ab28388fed8f1f8aa9247f5a29f7054bc79704cf57cb7ceec 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: "ad-hoc-profiles" name: "ad-hoc-profiles" spec: serviceAccountName: pyroscope-dev securityContext: fsGroup: 10001 runAsNonRoot: true runAsUser: 10001 dnsPolicy: ClusterFirst containers: - name: "ad-hoc-profiles" securityContext: {} image: "grafana/pyroscope:1.19.0" imagePullPolicy: IfNotPresent args: - "-target=ad-hoc-profiles" - "-self-profiling.disable-push=true" - "-server.http-listen-port=4040" - "-memberlist.cluster-label=default-pyroscope-dev-micro-services" - "-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: limits: memory: 4Gi requests: cpu: 0.1 memory: 16Mi volumes: - name: config configMap: name: pyroscope-dev-config - name: overrides-config configMap: name: pyroscope-dev-overrides-config - name: data emptyDir: {} --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: apps/v1 kind: Deployment metadata: name: pyroscope-dev-distributor 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: "distributor" spec: replicas: 2 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "distributor" template: metadata: annotations: checksum/config: 7cd587e5dbf9cf3ab28388fed8f1f8aa9247f5a29f7054bc79704cf57cb7ceec 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: "distributor" name: "distributor" spec: serviceAccountName: pyroscope-dev securityContext: fsGroup: 10001 runAsNonRoot: true runAsUser: 10001 dnsPolicy: ClusterFirst containers: - name: "distributor" securityContext: {} image: "grafana/pyroscope:1.19.0" imagePullPolicy: IfNotPresent args: - "-target=distributor" - "-self-profiling.disable-push=true" - "-server.http-listen-port=4040" - "-memberlist.cluster-label=default-pyroscope-dev-micro-services" - "-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: limits: memory: 1Gi requests: cpu: 500m memory: 256Mi volumes: - name: config configMap: name: pyroscope-dev-config - name: overrides-config configMap: name: pyroscope-dev-overrides-config - name: data emptyDir: {} --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: apps/v1 kind: Deployment metadata: name: pyroscope-dev-querier 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: "querier" spec: replicas: 3 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "querier" template: metadata: annotations: checksum/config: 7cd587e5dbf9cf3ab28388fed8f1f8aa9247f5a29f7054bc79704cf57cb7ceec 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: "querier" name: "querier" spec: serviceAccountName: pyroscope-dev securityContext: fsGroup: 10001 runAsNonRoot: true runAsUser: 10001 dnsPolicy: ClusterFirst containers: - name: "querier" securityContext: {} image: "grafana/pyroscope:1.19.0" imagePullPolicy: IfNotPresent args: - "-target=querier" - "-self-profiling.disable-push=true" - "-server.http-listen-port=4040" - "-memberlist.cluster-label=default-pyroscope-dev-micro-services" - "-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" - "-store-gateway.sharding-ring.replication-factor=3" 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: limits: memory: 1Gi requests: cpu: 1 memory: 256Mi volumes: - name: config configMap: name: pyroscope-dev-config - name: overrides-config configMap: name: pyroscope-dev-overrides-config - name: data emptyDir: {} --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: apps/v1 kind: Deployment metadata: name: pyroscope-dev-query-frontend 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: "query-frontend" spec: replicas: 2 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "query-frontend" template: metadata: annotations: checksum/config: 7cd587e5dbf9cf3ab28388fed8f1f8aa9247f5a29f7054bc79704cf57cb7ceec 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: "query-frontend" name: "query-frontend" spec: serviceAccountName: pyroscope-dev securityContext: fsGroup: 10001 runAsNonRoot: true runAsUser: 10001 dnsPolicy: ClusterFirst containers: - name: "query-frontend" securityContext: {} image: "grafana/pyroscope:1.19.0" imagePullPolicy: IfNotPresent args: - "-target=query-frontend" - "-self-profiling.disable-push=true" - "-server.http-listen-port=4040" - "-memberlist.cluster-label=default-pyroscope-dev-micro-services" - "-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: limits: memory: 1Gi requests: cpu: 100m memory: 256Mi volumes: - name: config configMap: name: pyroscope-dev-config - name: overrides-config configMap: name: pyroscope-dev-overrides-config - name: data emptyDir: {} --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: apps/v1 kind: Deployment metadata: name: pyroscope-dev-query-scheduler 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: "query-scheduler" spec: replicas: 2 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "query-scheduler" template: metadata: annotations: checksum/config: 7cd587e5dbf9cf3ab28388fed8f1f8aa9247f5a29f7054bc79704cf57cb7ceec 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: "query-scheduler" name: "query-scheduler" spec: serviceAccountName: pyroscope-dev securityContext: fsGroup: 10001 runAsNonRoot: true runAsUser: 10001 dnsPolicy: ClusterFirst containers: - name: "query-scheduler" securityContext: {} image: "grafana/pyroscope:1.19.0" imagePullPolicy: IfNotPresent args: - "-target=query-scheduler" - "-self-profiling.disable-push=true" - "-server.http-listen-port=4040" - "-memberlist.cluster-label=default-pyroscope-dev-micro-services" - "-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: limits: memory: 1Gi requests: cpu: 100m memory: 256Mi volumes: - name: config configMap: name: pyroscope-dev-config - name: overrides-config configMap: name: pyroscope-dev-overrides-config - name: data emptyDir: {} --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: apps/v1 kind: Deployment metadata: name: pyroscope-dev-tenant-settings 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: "tenant-settings" spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "tenant-settings" template: metadata: annotations: checksum/config: 7cd587e5dbf9cf3ab28388fed8f1f8aa9247f5a29f7054bc79704cf57cb7ceec 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: "tenant-settings" name: "tenant-settings" spec: serviceAccountName: pyroscope-dev securityContext: fsGroup: 10001 runAsNonRoot: true runAsUser: 10001 dnsPolicy: ClusterFirst containers: - name: "tenant-settings" securityContext: {} image: "grafana/pyroscope:1.19.0" imagePullPolicy: IfNotPresent args: - "-target=tenant-settings" - "-self-profiling.disable-push=true" - "-server.http-listen-port=4040" - "-memberlist.cluster-label=default-pyroscope-dev-micro-services" - "-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: limits: memory: 4Gi requests: cpu: 0.1 memory: 16Mi volumes: - name: config configMap: name: pyroscope-dev-config - name: overrides-config configMap: name: pyroscope-dev-overrides-config - name: data emptyDir: {} --- # 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/charts/minio/templates/statefulset.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: pyroscope-dev-minio namespace: "default" labels: app: minio chart: minio-4.1.0 release: pyroscope-dev heritage: Helm spec: updateStrategy: type: RollingUpdate podManagementPolicy: "Parallel" serviceName: pyroscope-dev-minio-svc replicas: 1 selector: matchLabels: app: minio release: pyroscope-dev template: metadata: name: pyroscope-dev-minio labels: app: minio release: pyroscope-dev annotations: checksum/secrets: 1327df257dd66b53a08dc3d9f2584d6c07cd43932cd3c3f68a7ffc636c5a0d92 checksum/config: 68ad5341411f10a6da13194dfbe5544a594ccedef5dfb12d34529d2be6d0f67f spec: securityContext: runAsUser: 1000 runAsGroup: 1000 fsGroup: 1000 fsGroupChangePolicy: OnRootMismatch serviceAccountName: minio-sa containers: - name: minio image: quay.io/minio/minio:RELEASE.2022-10-24T18-35-07Z imagePullPolicy: IfNotPresent command: [ "/bin/sh", "-ce", "/usr/bin/docker-entrypoint.sh minio server http://pyroscope-dev-minio-{0...0}.pyroscope-dev-minio-svc.default.svc.cluster.local/export-{0...1} -S /etc/minio/certs/ --address :9000 --console-address :9001" ] volumeMounts: - name: export-0 mountPath: /export-0 - name: export-1 mountPath: /export-1 ports: - name: http containerPort: 9000 - name: http-console containerPort: 9001 env: - name: MINIO_ROOT_USER valueFrom: secretKeyRef: name: pyroscope-dev-minio key: rootUser - name: MINIO_ROOT_PASSWORD valueFrom: secretKeyRef: name: pyroscope-dev-minio key: rootPassword - name: MINIO_PROMETHEUS_AUTH_TYPE value: "public" resources: requests: cpu: 100m memory: 128Mi volumes: - name: minio-user secret: secretName: pyroscope-dev-minio volumeClaimTemplates: - metadata: name: export-0 spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 5Gi - metadata: name: export-1 spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 5Gi --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: pyroscope-dev-compactor 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: "compactor" spec: serviceName: pyroscope-dev-compactor-headless podManagementPolicy: Parallel replicas: 3 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "compactor" template: metadata: annotations: checksum/config: 7cd587e5dbf9cf3ab28388fed8f1f8aa9247f5a29f7054bc79704cf57cb7ceec 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: "compactor" name: "compactor" spec: serviceAccountName: pyroscope-dev securityContext: fsGroup: 10001 runAsNonRoot: true runAsUser: 10001 dnsPolicy: ClusterFirst containers: - name: "compactor" securityContext: {} image: "grafana/pyroscope:1.19.0" imagePullPolicy: IfNotPresent args: - "-target=compactor" - "-self-profiling.disable-push=true" - "-server.http-listen-port=4040" - "-memberlist.cluster-label=default-pyroscope-dev-micro-services" - "-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 subPath: default - name: data mountPath: /data-compactor subPath: compactor resources: limits: memory: 16Gi requests: cpu: 1 memory: 8Gi terminationGracePeriodSeconds: 1200 volumes: - name: config configMap: name: pyroscope-dev-config - name: overrides-config configMap: name: pyroscope-dev-overrides-config - name: data emptyDir: {} --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: pyroscope-dev-ingester 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: "ingester" spec: serviceName: pyroscope-dev-ingester-headless podManagementPolicy: Parallel replicas: 3 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "ingester" template: metadata: annotations: checksum/config: 7cd587e5dbf9cf3ab28388fed8f1f8aa9247f5a29f7054bc79704cf57cb7ceec 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: "ingester" name: "ingester" spec: serviceAccountName: pyroscope-dev securityContext: fsGroup: 10001 runAsNonRoot: true runAsUser: 10001 dnsPolicy: ClusterFirst containers: - name: "ingester" securityContext: {} image: "grafana/pyroscope:1.19.0" imagePullPolicy: IfNotPresent args: - "-target=ingester" - "-self-profiling.disable-push=true" - "-server.http-listen-port=4040" - "-memberlist.cluster-label=default-pyroscope-dev-micro-services" - "-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: limits: memory: 16Gi requests: cpu: 1 memory: 8Gi terminationGracePeriodSeconds: 600 volumes: - name: config configMap: name: pyroscope-dev-config - name: overrides-config configMap: name: pyroscope-dev-overrides-config - name: data emptyDir: {} --- # Source: pyroscope/templates/deployments-statefulsets.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: pyroscope-dev-store-gateway 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: "store-gateway" spec: serviceName: pyroscope-dev-store-gateway-headless podManagementPolicy: Parallel replicas: 3 selector: matchLabels: app.kubernetes.io/name: pyroscope app.kubernetes.io/instance: pyroscope-dev app.kubernetes.io/component: "store-gateway" template: metadata: annotations: checksum/config: 7cd587e5dbf9cf3ab28388fed8f1f8aa9247f5a29f7054bc79704cf57cb7ceec 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: "store-gateway" name: "store-gateway" spec: serviceAccountName: pyroscope-dev securityContext: fsGroup: 10001 runAsNonRoot: true runAsUser: 10001 dnsPolicy: ClusterFirst containers: - name: "store-gateway" securityContext: {} image: "grafana/pyroscope:1.19.0" imagePullPolicy: IfNotPresent args: - "-target=store-gateway" - "-self-profiling.disable-push=true" - "-server.http-listen-port=4040" - "-memberlist.cluster-label=default-pyroscope-dev-micro-services" - "-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" - "-store-gateway.sharding-ring.replication-factor=3" 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 initialDelaySeconds: 60 volumeMounts: - name: config mountPath: /etc/pyroscope/config.yaml subPath: config.yaml - name: overrides-config mountPath: /etc/pyroscope/overrides/ - name: data mountPath: /data resources: limits: memory: 16Gi requests: cpu: 1 memory: 8Gi volumes: - name: config configMap: name: pyroscope-dev-config - name: overrides-config configMap: name: pyroscope-dev-overrides-config - name: data emptyDir: {} --- # Source: pyroscope/charts/minio/templates/post-install-create-bucket-job.yaml apiVersion: batch/v1 kind: Job metadata: name: pyroscope-dev-minio-make-bucket-job namespace: "default" labels: app: minio-make-bucket-job chart: minio-4.1.0 release: pyroscope-dev heritage: Helm annotations: "helm.sh/hook": post-install,post-upgrade "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation spec: template: metadata: labels: app: minio-job release: pyroscope-dev spec: restartPolicy: OnFailure volumes: - name: minio-configuration projected: sources: - configMap: name: pyroscope-dev-minio - secret: name: pyroscope-dev-minio serviceAccountName: minio-sa containers: - name: minio-mc image: "quay.io/minio/mc:RELEASE.2022-10-20T23-26-33Z" imagePullPolicy: IfNotPresent command: ["/bin/sh", "/config/initialize"] env: - name: MINIO_ENDPOINT value: pyroscope-dev-minio - name: MINIO_PORT value: "9000" volumeMounts: - name: minio-configuration mountPath: /config resources: requests: memory: 128Mi --- # Source: pyroscope/charts/minio/templates/post-install-create-user-job.yaml apiVersion: batch/v1 kind: Job metadata: name: pyroscope-dev-minio-make-user-job namespace: "default" labels: app: minio-make-user-job chart: minio-4.1.0 release: pyroscope-dev heritage: Helm annotations: "helm.sh/hook": post-install,post-upgrade "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation spec: template: metadata: labels: app: minio-job release: pyroscope-dev spec: restartPolicy: OnFailure volumes: - name: minio-configuration projected: sources: - configMap: name: pyroscope-dev-minio - secret: name: pyroscope-dev-minio serviceAccountName: minio-sa containers: - name: minio-mc image: "quay.io/minio/mc:RELEASE.2022-10-20T23-26-33Z" imagePullPolicy: IfNotPresent command: ["/bin/sh", "/config/add-user"] env: - name: MINIO_ENDPOINT value: pyroscope-dev-minio - name: MINIO_PORT value: "9000" volumeMounts: - name: minio-configuration mountPath: /config resources: requests: memory: 128Mi