{"id":19070027,"url":"https://github.com/ricoberger/parca-operator","last_synced_at":"2025-10-10T01:44:50.803Z","repository":{"id":180508417,"uuid":"664822063","full_name":"ricoberger/parca-operator","owner":"ricoberger","description":"Deploy and Operator Parca","archived":false,"fork":false,"pushed_at":"2025-09-16T16:27:00.000Z","size":361,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-16T19:02:03.341Z","etag":null,"topics":["continuous-profiling","kubernetes","observability","parca"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ricoberger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["ricoberger"],"custom":["https://www.paypal.me/ricoberger"]}},"created_at":"2023-07-10T20:34:51.000Z","updated_at":"2025-09-16T16:27:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"8016df99-6ca2-47b2-9573-ec9748403966","html_url":"https://github.com/ricoberger/parca-operator","commit_stats":null,"previous_names":["ricoberger/parca-operator"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/ricoberger/parca-operator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricoberger%2Fparca-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricoberger%2Fparca-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricoberger%2Fparca-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricoberger%2Fparca-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ricoberger","download_url":"https://codeload.github.com/ricoberger/parca-operator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricoberger%2Fparca-operator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002400,"owners_count":26083374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["continuous-profiling","kubernetes","observability","parca"],"created_at":"2024-11-09T01:16:35.571Z","updated_at":"2025-10-10T01:44:50.788Z","avatar_url":"https://github.com/ricoberger.png","language":"Go","funding_links":["https://github.com/sponsors/ricoberger","https://www.paypal.me/ricoberger"],"categories":[],"sub_categories":[],"readme":"# Parca Operator\n\nThe Parca Operator can be used to deploy and operator\n[Parca](https://www.parca.dev). It can be used to deploy the\n[Parca Server](https://www.parca.dev/docs/parca) and\n[Parca Agent](https://www.parca.dev/docs/parca-agent). Besides that the Parca\nOperator can also be used to configure the\n[pull-based ingestion](https://www.parca.dev/docs/ingestion#pull-based) via\nCustom Resource Definitions.\n\n\u003e [!NOTE]\n\u003e The Parca Operator is work in progress. While I plan to add support for the\n\u003e deployment of the Parca Server and Parca Agent, these features are not\n\u003e implemented yet.\n\u003e\n\u003e This means, that the Parca Operator can currently only be used to configure\n\u003e the pull-based ingestion via the ParcaScrapeConfig Custom Resource Definition.\n\n## Installation\n\nThe Parca Operator can be installed via Helm:\n\n```sh\nhelm upgrade --install parca-operator oci://ghcr.io/ricoberger/charts/parca-operator --version \u003cVERSION\u003e\n```\n\nMake sure that you set the following environment variables for the Parca\nOperator:\n\n- `PARCA_CONFIG_SOURCE`: The path to the configration file for Parca. This file\n  is used as source for the generated Parca configration and should contain the\n  `object_storage` configuration.\n- `PARCA_CONFIG_TARGET_NAME` and `PARCA_CONFIG_TARGET_NAMESPACE`: The name and\n  namespace of secret which should be generated. The secret contains a\n  `parca.yaml` key with the generated configuration for Parca. The generated\n  configuration file contains the content of the source configuration and the\n  configuration for all scrape configuration created via a `ParcaScrapeConfig`\n  resource.\n\n## API Reference\n\n### ParcaScrapeConfig\n\n```yaml\napiVersion: parca.ricoberger.de/v1alpha1\nkind: ParcaScrapeConfig\nmetadata:\n  name:\n  namespace:\nspec:\n  # Selector is the selector for the Pods which should be scraped by Parca.\n  selector:\n    matchLabels:\n    matchExpressions:\n  # ScrapeConfig is the scrape configuration as it can be set in the Parca\n  # configuration.\n  scrapeConfig:\n    # Job is the job name of the section in the configurtion. If no job name is\n    # provided, it will be automatically generated based on the name and\n    # namespace of the CR: \"namespace/name\"\n    job:\n    # Port is the name of the port of the Pods which is used to expose the\n    # profiling endpoints.\n    port:\n    # PortNumber is the number of the port which is used to expose the\n    # profiling endpoints. This can be used instead of the port field. If the\n    # port is not named.\n    portNumber:\n    # Params is a set of query parameters with which the target is scraped.\n    params:\n    # Interval defines how frequently to scrape the targets of this scrape\n    # config.\n    interval:\n    # Timeout defines the timeout for scraping targets of this config.\n    timeout:\n    # Schema sets the URL scheme with which to fetch metrics from targets.\n    scheme:\n    # ProfilingConfig defines the profiling config for the targets, see\n    # https://www.parca.dev/docs/ingestion#pull-based for more information.\n    profiling_config:\n    # RelabelConfigs allows dynamic rewriting of the label set for the targets,\n    # see https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n    # for more information.\n    relabel_configs:\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eExample\u003c/summary\u003e\n\n```yaml\napiVersion: parca.ricoberger.de/v1alpha1\nkind: ParcaScrapeConfig\nmetadata:\n  name: parca-server\n  namespace: parca\nspec:\n  selector:\n    matchLabels:\n      app: parca-server\n  scrapeConfig:\n    port: grpc\n    interval: 45s\n    timeout: 60s\n    profilingConfig:\n      pprofConfig:\n        fgprof:\n          enabled: true\n          path: /debug/pprof/fgprof\n```\n\n\u003c/details\u003e\n\n## Development\n\nAfter modifying the `*_types.go` file always run the following command to update\nthe generated code for that resource type:\n\n```sh\nmake generate\n```\n\nThe above Makefile target will invoke the\n[controller-gen](https://sigs.k8s.io/controller-tools) utility to update the\n`api/v1alpha1/zz_generated.deepcopy.go` file to ensure our API's Go type\ndefinitons implement the `runtime.Object` interface that all Kind types must\nimplement.\n\nOnce the API is defined with spec/status fields and CRD validation markers, the\nCRD manifests can be generated and updated with the following command:\n\n```sh\nmake manifests\n```\n\nThis Makefile target will invoke controller-gen to generate the CRD manifests at\n`charts/parca-operator/crds/parca.ricoberger.de_\u003cCRD\u003e.yaml`.\n\nDeploy the CRD and run the operator locally with the default Kubernetes config\nfile present at `$HOME/.kube/config`:\n\n```sh\nexport PARCA_CONFIG_SOURCE=parca.yaml\nexport PARCA_CONFIG_TARGET_NAME=parca-generated\nexport PARCA_CONFIG_TARGET_NAMESPACE=parca\n\nmake run\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fricoberger%2Fparca-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fricoberger%2Fparca-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fricoberger%2Fparca-operator/lists"}