{"id":34217643,"url":"https://github.com/seatgeek/buildkit-operator","last_synced_at":"2026-03-13T13:33:43.010Z","repository":{"id":305220929,"uuid":"1022269347","full_name":"seatgeek/buildkit-operator","owner":"seatgeek","description":"An operator for managing BuildKit instances on Kubernetes","archived":false,"fork":false,"pushed_at":"2026-02-25T16:20:22.000Z","size":456,"stargazers_count":27,"open_issues_count":6,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-25T18:21:30.402Z","etag":null,"topics":["buildkit","containerd","kubernetes","kubernetes-operator"],"latest_commit_sha":null,"homepage":"https://chairnerd.seatgeek.com/resilient-builds-with-buildkit-operator/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seatgeek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","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}},"created_at":"2025-07-18T18:41:42.000Z","updated_at":"2026-02-25T16:24:30.000Z","dependencies_parsed_at":"2025-12-13T14:07:21.343Z","dependency_job_id":null,"html_url":"https://github.com/seatgeek/buildkit-operator","commit_stats":null,"previous_names":["seatgeek/buildkit-operator"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/seatgeek/buildkit-operator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seatgeek%2Fbuildkit-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seatgeek%2Fbuildkit-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seatgeek%2Fbuildkit-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seatgeek%2Fbuildkit-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seatgeek","download_url":"https://codeload.github.com/seatgeek/buildkit-operator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seatgeek%2Fbuildkit-operator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30467803,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T11:00:43.441Z","status":"ssl_error","status_checked_at":"2026-03-13T11:00:23.173Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["buildkit","containerd","kubernetes","kubernetes-operator"],"created_at":"2025-12-15T22:34:15.209Z","updated_at":"2026-03-13T13:33:43.001Z","avatar_url":"https://github.com/seatgeek.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# buildkit-operator\n\n[![go.mod](https://img.shields.io/github/go-mod/go-version/seatgeek/buildkit-operator?style=flat-square)](go.mod)\n[![LICENSE](https://img.shields.io/github/license/seatgeek/buildkit-operator?style=flat-square)](LICENSE)\n[![Build Status](https://img.shields.io/github/actions/workflow/status/seatgeek/buildkit-operator/ci.yml?branch=main\u0026style=flat-square)](https://github.com/seatgeek/buildkit-operator/actions?query=workflow%3Aci+branch%3Amain)\n[![Go Report Card](https://goreportcard.com/badge/github.com/seatgeek/buildkit-operator?style=flat-square)](https://goreportcard.com/report/github.com/seatgeek/buildkit-operator)\n[![Codecov](https://img.shields.io/codecov/c/github/seatgeek/buildkit-operator?style=flat-square)](https://codecov.io/gh/seatgeek/buildkit-operator)\n\nAn operator for managing BuildKit instances on Kubernetes.\n\n## How it Works\n\nFirst, deploy one or more `BuildkitTemplate` resources that define the configuration and scheduling for BuildKit instances:\n\n```yaml\napiVersion: buildkit.seatgeek.io/v1alpha1\nkind: BuildkitTemplate\nmetadata:\n  name: buildkit-arm64\n  namespace: some-ns\nspec:\n  # This is a simplified example; many other spec fields are available.\n  rootless: true\n  port: 1234\n\n  buildkitdToml: |\n    [log]\n      format = \"json\"\n\n    [worker.oci]\n      enabled = true\n      max-parallelism = 3\n      cniPoolSize = 16\n\n    [worker.containerd]\n      enabled = false\n\n  resources:\n    default:\n      requests:\n        cpu: 500m\n        memory: 8Gi\n      limits:\n        memory: 8Gi\n    maximum:\n      cpu: 8\n      memory: 16Gi\n\n  scheduling:\n    nodeSelector:\n      kubernetes.io/arch: arm64\n      kubernetes.io/os: linux\n    tolerations:\n      - key: dedicated\n        operator: Equal\n        value: buildkit\n        effect: NoSchedule\n```\n\nThen create any number of `Buildkit` resources that reference the templates:\n\n```yaml\napiVersion: buildkit.seatgeek.io/v1alpha1\nkind: Buildkit\nmetadata:\n  name: buildkit-arm64-instance\n  namespace: some-ns\nspec:\n  template: buildkit-arm64\n```\n\nThe operator will then deploy a BuildKit pod for each `Buildkit` resource, setting the TCP connection URL into the `Buildkit` resource's `status`:\n\n```yaml\n# ...\nstatus:\n  endpoint: tcp://10.1.2.3:1234\n```\n\nUse the `.status.endpoint` field to connect to the BuildKit instance. When you're done, delete the `Buildkit` resource and the associated pod will be cleaned up automatically.\n\n## Installation\n\n### Helm Chart (Recommended)\n\nThe easiest way to install the buildkit-operator is using the Helm chart:\n\n```bash\n# Install the latest stable release\nhelm install buildkit-operator \\\n  oci://ghcr.io/seatgeek/charts/buildkit-operator \\\n  --namespace buildkit-system \\\n  --create-namespace\n```\n\n#### Installation Options\n\n**Install latest from main branch (bleeding edge):**\n```bash\n# Note: Chart versions for main branch use format 0.0.0-main-\u003ccommit-sha\u003e\n# You can find the exact version in GitHub Actions or use --devel flag\nhelm install buildkit-operator \\\n  oci://ghcr.io/seatgeek/charts/buildkit-operator \\\n  --namespace buildkit-system \\\n  --create-namespace \\\n  --set image.tag=main \\\n  --devel\n```\n\n**Install a specific version:**\n```bash\nhelm install buildkit-operator \\\n  oci://ghcr.io/seatgeek/charts/buildkit-operator \\\n  --version 1.0.0 \\\n  --namespace buildkit-system \\\n  --create-namespace\n```\n\n**Test a pull request:**\n```bash\nhelm install buildkit-operator \\\n  oci://ghcr.io/seatgeek/charts/buildkit-operator \\\n  --namespace buildkit-system \\\n  --create-namespace \\\n  --set image.tag=pr-123\n```\n\n### Container Images\n\nContainer images are available at:\n- `ghcr.io/seatgeek/buildkit-operator:latest` - Latest stable release (tagged releases only)\n- `ghcr.io/seatgeek/buildkit-operator:main` - Latest from main branch\n- `ghcr.io/seatgeek/buildkit-operator:v1.0.0` - Specific version releases\n- `ghcr.io/seatgeek/buildkit-operator:pr-123` - Pull request builds\n\nAll images support both `linux/amd64` and `linux/arm64` architectures.\n\n**Note**: Development versions from the main branch use commit-based chart versions (e.g., `0.0.0-main-abc12345`) for better traceability and correlation with the source code.\n\n### Uninstallation\n\n```bash\nhelm uninstall buildkit-operator --namespace buildkit-system\n```\n\n## Local Development\n\n### Prerequisites\n\nYou will need `kind` and `frpc`, which can be installed on macOS with `brew`:\n\n```bash\nbrew install kind frpc\n```\n\n### Running the Operator\n\n(Re)start your local kind cluster and run the operator:\n\n```bash\nmake recreate\nmake run\n```\n\n#### Debugging the Operator\n\nIf you'd rather run the operator from your IDE with a debugger attached, run these commands instead:\n\n```bash\nmake recreate\nmake start_webhook_reverse_proxy # Keep this running in the background until you're done debugging\n```\n\nThen have your IDE run `./cmd/operator` in debug mode with the following program arguments set: `--kubeconfig ./kind/kubeconfig --kubecontext kind-buildkit`\n\n#### Interacting with the Cluster\n\nYou can interact with the cluster either of these ways:\n\n- `kubectl --kubeconfig ./kind/kubeconfig [command]`\n- `k9s --kubeconfig ./kind/kubeconfig --write`\n\nCongratulations! You are now running buildkit-operator locally.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseatgeek%2Fbuildkit-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseatgeek%2Fbuildkit-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseatgeek%2Fbuildkit-operator/lists"}