|
1 | | - |
| 1 | +# ARCHIVE |
2 | 2 |
|
3 | | -> **Warning**: The `main` branch is under heavy development due to a [rewrite]. |
4 | | -> **Warning**: Experimental. **DO NOT USE IN PRODUCTION**. |
| 3 | +**This project is now concluded**, and archived. Blixt started in the early |
| 4 | +2020's at a time when eBPF technology was a huge buzz for Kubernetes, and |
| 5 | +members of the Kubernetes SIG Network community wanted to experiment with and |
| 6 | +explore the technology on K8s. Over time we suggested some specific goals we |
| 7 | +_could_ have for the project, but those never really stuck. The project operated |
| 8 | +primarily as an experimental sandbox, and a "just for fun" project. |
5 | 9 |
|
6 | | -[rewrite]:https://github.com/kubernetes-sigs/blixt/milestone/8 |
| 10 | +As such if you're reading this, we're glad if it helps you and provides some |
| 11 | +interesting insights, but do note that much of what you'll find in this |
| 12 | +repository is largely incomplete exploratory code which can only be used in |
| 13 | +a limited environment, so just keep that in mind. |
| 14 | + |
| 15 | +We had a lot of fun working on this while it was active. It was great to create |
| 16 | +the first official Kubernetes project in Rust, and experimenting with eBPF in |
| 17 | +its nascence was exciting. All things must come to an end however. Thank you to |
| 18 | +everyone who contributed to the project, good times! |
7 | 19 |
|
8 | 20 | # Blixt |
9 | 21 |
|
10 | 22 | A [layer 4][osi] load-balancer for [Kubernetes] written in [Rust] using |
11 | 23 | [kube-rs] for the control-plane and [eBPF] with [aya] for the data-plane. |
12 | 24 |
|
13 | | -> **Note**: The word "blixt" means "lightning" in Swedish. |
14 | | -
|
15 | 25 | [osi]:https://en.wikipedia.org/wiki/OSI_model |
16 | 26 | [Kubernetes]:https://kubernetes.io |
17 | 27 | [Rust]:https://rust-lang.org |
18 | 28 | [Kube-RS]:https://github.com/kube-rs |
19 | 29 | [eBPF]:https://ebpf.io/what-is-ebpf/ |
20 | 30 | [Aya]:https://aya-rs.dev |
21 | 31 |
|
22 | | -## Current Status |
23 | | - |
24 | | -We're currently focused on getting some of the core functionality in place. The |
25 | | -immediate goals are to add: |
26 | | - |
27 | | -- [ ] support for the [Kubernetes Service API] ([upcoming]) |
28 | | -- [ ] support for [Gateway], [GatewayClass], [UDPRoute], [TCPRoute] (in progress, partially complete) |
29 | | - |
30 | | -After these goals are achieved, further goals may be decided. |
31 | | - |
32 | | -[Kubernetes Service API]:https://kubernetes.io/docs/concepts/services-networking/service/ |
33 | | -[upcoming]:https://github.com/kubernetes-sigs/blixt/issues/279 |
34 | | -[Gateway]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1beta1.Gateway |
35 | | -[GatewayClass]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1beta1.GatewayClass |
36 | | -[UDPRoute]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.UDPRoute |
37 | | -[TCPRoute]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.TCPRoute |
38 | | - |
39 | | -## Usage |
40 | | - |
41 | | -> **Note**: We don't host container images for this project. You **must** build, |
42 | | -> load (or host) the images yourself. |
43 | | -
|
44 | | -> **Warning**: We currently only support [Kubernetes In Docker (KIND)] clusters. |
45 | | -
|
46 | | -Deploy the [Gateway API] [CRDs]: |
47 | | - |
48 | | -```console |
49 | | -kubectl apply -k https://github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=v1.2.1 |
50 | | -``` |
51 | | - |
52 | | -Build container images: |
53 | | - |
54 | | -```console |
55 | | -make build.all.images TAG=latest |
56 | | -``` |
57 | | - |
58 | | -Load images into your Kind cluster: |
59 | | - |
60 | | -```console |
61 | | -make load.all.images TAG=latest |
62 | | -``` |
63 | | - |
64 | | -Deploy Blixt: |
65 | | - |
66 | | -```console |
67 | | -kubectl apply -k config/default |
68 | | -``` |
69 | | - |
70 | | -At this point you should see the `controlplane` and `dataplane` pods running |
71 | | -in the `blixt-system` namespace: |
72 | | - |
73 | | -```console |
74 | | -$ kubectl -n blixt-system get pods |
75 | | -NAME READY STATUS RESTARTS AGE |
76 | | -blixt-controlplane-cdccc685b-9dxj2 2/2 Running 0 83s |
77 | | -blixt-dataplane-brsl9 1/1 Running 0 83s |
78 | | -``` |
79 | | - |
80 | | -> **Note**: Check the `config/samples` directory for `Gateway` and `*Route` |
81 | | -> examples you can now deploy. |
82 | | -
|
83 | | -[Kubernetes In Docker (KIND)]:https://github.com/kubernetes-sigs/kind |
84 | | -[Gateway API]:https://github.com/kubernetes-sigs/gateway-api |
85 | | -[CRDs]:https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/ |
86 | | - |
87 | | -## Development |
88 | | - |
89 | | -Development is generally done by making your changes locally, building images |
90 | | -with those changes locally and then deploying those images to a local `kind` |
91 | | -cluster (see the usage section above to get an environment set up). |
92 | | - |
93 | | -You can build the data-plane: |
94 | | - |
95 | | -```console |
96 | | -make build.image.dataplane |
97 | | -``` |
98 | | - |
99 | | -Then load it into the cluster and perform a rollout on the `Daemonset`: |
100 | | - |
101 | | -```console |
102 | | -make load.image.dataplane |
103 | | -``` |
104 | | - |
105 | | -The same can be done for the control-plane: |
106 | | - |
107 | | -```console |
108 | | -make build.image.controlplane |
109 | | -make load.image.controlplane |
110 | | -``` |
111 | | - |
112 | | -## Community |
113 | | - |
114 | | -Reach by creating [issues] or [discussions]. We also have the `#blixt` channel |
115 | | -on [Kubernetes Slack]. |
116 | | - |
117 | | -[issues]:https://github.com/kubernetes-sigs/blixt/issues |
118 | | -[discussions]:https://github.com/kubernetes-sigs/blixt/discussions |
119 | | -[Kubernetes Slack]:https://kubernetes.slack.com |
120 | | - |
121 | 32 | # License |
122 | 33 |
|
123 | 34 | The Blixt control-plane components are licensed under [Apache License, Version |
|
0 commit comments