prombench/manifests/cluster-infra/8b_parca.yaml (134 lines of code) (raw):

apiVersion: v1 kind: ConfigMap metadata: name: parca data: # TODO(bwplotka): Add config reloader, otherwise pod has to manually deleted. parca.yaml: |- "object_storage": "bucket": "config": "directory": "/var/lib/parca" "type": "FILESYSTEM" scrape_configs: - job_name: prometheus scrape_interval: 30s scrape_timeout: 40s scheme: http kubernetes_sd_configs: - role: endpoints tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - action: keep source_labels: [__meta_kubernetes_service_label_app] regex: prometheus|prometheus-meta - source_labels: [__meta_kubernetes_service_label_prometheus] target_label: prometheus # Each prometheus is configured with external path option, so it serves on certain hardcoded path. Adjust it. - source_labels: [__meta_kubernetes_namespace] regex: prombench-(.*) target_label: pr_number - source_labels: [__profile_path__] target_label: __init_profile_path - source_labels: [__meta_kubernetes_service_label_app, __init_profile_path] regex: prometheus-meta;(.*) replacement: /prometheus-meta$1 target_label: __profile_path__ - source_labels: [prometheus, pr_number, __init_profile_path] regex: test-.*;(.*);(.*) replacement: /$1/prometheus-release$2 target_label: __profile_path__ - source_labels: [prometheus, pr_number, __init_profile_path] regex: test-pr-.*;(.*);(.*) replacement: /$1/prometheus-pr$2 target_label: __profile_path__ - regex: __init_profile_path action: labeldrop - source_labels: [__address__] target_label: instance --- apiVersion: apps/v1 kind: Deployment metadata: name: parca labels: app: parca spec: replicas: 1 selector: matchLabels: app: parca template: metadata: labels: app: parca spec: serviceAccountName: parca securityContext: fsGroup: 65534 runAsUser: 65534 containers: - image: ghcr.io/parca-dev/parca:v0.18.0 args: - /parca - "--http-address=:7070" - "--config-path=/etc/parca/parca.yaml" - "--path-prefix=/profiles" - "--log-level=info" - "--cors-allowed-origins=*" - "--debuginfod-upstream-servers=https://debuginfod.systemtap.org" - "--debuginfod-http-request-timeout=5m" name: parca terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /etc/parca name: config - mountPath: /var/lib/parca name: storage ports: - name: parca-web containerPort: 7070 volumes: - name: config configMap: name: parca # TODO(bwplotka): Make it persistent at some point. - name: storage emptyDir: {} terminationGracePeriodSeconds: 120 nodeSelector: node-name: main-node --- apiVersion: v1 kind: Service metadata: name: parca labels: app: parca spec: type: NodePort ports: - name: parca-web port: 80 targetPort: parca-web selector: app: parca --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-parca annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/ssl-redirect: "false" spec: rules: - http: paths: - backend: service: name: parca port: name: parca-web path: /profiles pathType: Prefix