{"id":13496011,"url":"https://github.com/kubernetes-sigs/blixt","last_synced_at":"2025-05-15T20:02:50.116Z","repository":{"id":62841366,"uuid":"549763807","full_name":"kubernetes-sigs/blixt","owner":"kubernetes-sigs","description":"Layer 4 Kubernetes load-balancer","archived":false,"fork":false,"pushed_at":"2025-03-31T15:40:38.000Z","size":1129,"stargazers_count":399,"open_issues_count":15,"forks_count":56,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-04-01T03:26:46.546Z","etag":null,"topics":["ebpf","gateway","golang","kubernetes","operator","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/kubernetes-sigs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-11T17:43:12.000Z","updated_at":"2025-04-01T02:21:45.000Z","dependencies_parsed_at":"2023-11-20T16:49:14.243Z","dependency_job_id":"46d14422-6a35-43d6-bf26-288b2c097e5a","html_url":"https://github.com/kubernetes-sigs/blixt","commit_stats":{"total_commits":375,"total_committers":22,"mean_commits":"17.045454545454547","dds":"0.41866666666666663","last_synced_commit":"a322c2eec72e3323e09b5106b45312cf958142bb"},"previous_names":["kong/blixt"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernetes-sigs%2Fblixt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernetes-sigs%2Fblixt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernetes-sigs%2Fblixt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernetes-sigs%2Fblixt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kubernetes-sigs","download_url":"https://codeload.github.com/kubernetes-sigs/blixt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247773719,"owners_count":20993639,"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","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":["ebpf","gateway","golang","kubernetes","operator","rust"],"created_at":"2024-07-31T19:01:40.691Z","updated_at":"2025-04-08T04:11:26.794Z","avatar_url":"https://github.com/kubernetes-sigs.png","language":"Rust","funding_links":[],"categories":["Rust","rust","Major Projects that Use Aya"],"sub_categories":["Aya-related talks"],"readme":"![blixt](https://github.com/kubernetes-sigs/blixt/assets/5332524/387ce94a-88fd-43a9-bde9-73fb9005564d)\n\n\u003e **Warning**: The `main` branch is under heavy development as we are [rewriting\n\u003e our control-plane][rewrite]. if you're interested in using or testing Blixt,\n\u003e consider using the `archive/golang-control-plane` branch temporarily. If you\n\u003e have any questions or issues, check in with us in the `#blixt` channel on\n\u003e [Kubernetes Slack]!\n\n\u003e **Warning**: Experimental. We currently intend this project to be a sandbox\n\u003e for experimenting with networking functionality, and a safe place to learn.\n\u003e For the moment there is no intention to ever make this viable for production\n\u003e use cases. **DO NOT USE IN PRODUCTION**.\n\n[rewrite]:https://github.com/kubernetes-sigs/blixt/milestone/8\n[Kubernetes Slack]:https://kubernetes.slack.com\n\n# Blixt\n\nAn experimental [layer 4][osi] load-balancer for [Kubernetes] written in [Rust]\nusing [Kube-RS] for the control-plane and [eBPF] with [Aya] for the data-plane.\n\n\u003e **Note**: The word \"blixt\" means \"lightning\" in Swedish.\n\n[osi]:https://en.wikipedia.org/wiki/OSI_model\n[Kubernetes]:https://kubernetes.io\n[Rust]:https://rust-lang.org\n[Kube-RS]:https://github.com/kube-rs\n[eBPF]:https://www.tigera.io/learn/guides/ebpf/ebpf-xdp/\n[Aya]:https://aya-rs.dev\n\n## Current Status\n\nCurrent project goals are the following:\n\n- [ ] support the [Kubernetes Service API][svc] (upcoming)\n- [ ] support [Gateway]/[GatewayClass] + [UDPRoute] / [TCPRoute] (in progress, partially complete)\n\nAfter these goals are achieved, further goals may be decided.\n\n[svc]:https://kubernetes.io/docs/concepts/services-networking/service/\n[Gateway]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1beta1.Gateway\n[GatewayClass]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1beta1.GatewayClass\n[UDPRoute]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.UDPRoute\n[TCPRoute]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.TCPRoute\n\n## Usage\n\n\u003e **Warning**: Currently our container images are under migration from a private\n\u003e repository. At this moment, you **must** build and load images yourself locally.\n\n\u003e **Warning**: Currently usage is only intended on [Kubernetes In Docker\n\u003e (KIND)][kind] clusters. You can generate a new development cluster for testing\n\u003e with `make build.cluster`.\n\nDeploy the [Gateway API] [CRDs]:\n\n```console\nkubectl apply -k https://github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=v1.2.1\n```\n\nBuild container images:\n\n```console\nmake build.all.images TAG=latest\n```\n\nLoad images into your Kind cluster:\n\n```console\nmake load.all.images TAG=latest\n```\n\nDeploy Blixt:\n\n```console\nkubectl apply -k config/default\n```\n\nAt this point you should see the `controlplane` and `dataplane` pods running\nin the `blixt-system` namespace:\n\n```console\n$ kubectl -n blixt-system get pods\nNAME                                 READY   STATUS    RESTARTS   AGE\nblixt-controlplane-cdccc685b-9dxj2   2/2     Running   0          83s\nblixt-dataplane-brsl9                1/1     Running   0          83s\n```\n\n\u003e **Note**: Check the `config/samples` directory for `Gateway` and `*Route`\n\u003e examples you can now deploy.\n\n[kind]:https://github.com/kubernetes-sigs/kind\n[Gateway API]:https://github.com/kubernetes-sigs/gateway-api\n[CRDs]:https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/\n\n## Development\n\nDevelopment is generally done by making your changes locally, building images\nwith those changes locally and then deploying those images to a local `kind`\ncluster (see the usage section above to get an environment set up).\n\nYou can build the data-plane:\n\n```console\nmake build.image.dataplane\n```\n\nThen load it into the cluster and perform a rollout on the `Daemonset`:\n\n```console\nmake load.image.dataplane\n```\n\nThe same can be done for the control-plane:\n\n```console\nmake build.image.controlplane\nmake load.image.controlplane\n```\n\n\u003e **Warning**: The integration tests are currently written in Golang, which is\n\u003e a little awkward, but it is a temporary situation as we rewrite them in Rust.\n\u003e Run `make test.integration.deprecated` after deploying your custom images to\n\u003e the cluster to run them.\n\n\u003e **Note**: We use [Cargo workspaces] to manage the various crates spread across\n\u003e the Rust parts of the repo. However, there is one exception. The\n\u003e `dataplane/eBPF` crate must be kept as a standalone because it needs to\n\u003e re-implement the `panic` handler. All new crates should be added to the\n\u003e workspace, if possible.\n\n[Cargo Workspaces]:https://doc.rust-lang.org/book/ch14-03-cargo-workspaces.html\n\n## Community\n\nYou can reach out to the community by creating [issues] or [discussions]. You\ncan also reach out on [Kubernetes Slack] on the `#blixt` channel. There is also\nan `#ebpf` channel on Kubernetes Slack for general eBPF related help as well.\n\n[issues]:https://github.com/kubernetes-sigs/blixt/issues\n[discussions]:https://github.com/kubernetes-sigs/blixt/discussions\n[Kubernetes Slack]:https://kubernetes.slack.com\n\n# License\n\nThe Blixt control-plane components are licensed under [Apache License, Version\n2.0][apache2], which is everything _outside_ of the `dataplane/` directory. The\ndata-plane components are dual-licensed under the [General Public License,\nVersion 2.0 (only)][gplv2] and the [2-Clause BSD License][bsd2c] (at your\noption) including everything _inside_ the `dataplane/` directory.\n\n[apache2]:https://github.com/kubernetes-sigs/blixt/blob/main/LICENSE\n[gplv2]:https://github.com/kubernetes-sigs/blixt/blob/main/dataplane/LICENSE.GPL-2.0\n[bsd2c]:https://github.com/kubernetes-sigs/blixt/blob/main/dataplane/LICENSE.BSD-2-Clause\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubernetes-sigs%2Fblixt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkubernetes-sigs%2Fblixt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubernetes-sigs%2Fblixt/lists"}