Welcome to my first development blog about Netting. In this series, I am going to be posting updates about the project and any cool findings during my time developing.
To introduce you to the project, I am going to copy/paste the description I have in my README:
Netting is an unopinionated, simple, fast service mesh written in Rust. Its main goal is to solve the issue service mesh's face now with forcing users into using specific infrastructure as well as being hard to integrate into an already existing Kubernetes cluster. Netting will be a plug & play type of mesh.
I have been exposed to technologies like Istio, Linkerd, and Consul, which are all great in their own way. I just wanted to take some parts I like from each and make one that fits what I think a service mesh should be. It resembles Consul the most, but it isn't an exact rewrite. The main problem I want to fix is making service meshes plug & play. Within Istio, it is difficult to integrate it into your already existing system. Some of the reasons why is it forces you to use a particular infrastructure you may not be using such as Prometheus, Grafana, and Jaegar. I want to take a different approach to this. I want to have the observability feature of my service mesh to be generic (a.k.a write a bunch of exporters to different formats that most popular infra tools support). I also have written a catalog that will continously maintain the state of the cluster by watching for changes. This functionality will help me reach the goal of making my service mesh plug & play.
So far, I've laid out some groundwork for the catalog, injecting sidecars, and streaming gRPC between the side-car and the control plane.
Here are a few things I need to figure out just so I don't forget:
- Need to figure out how init containers work so I can set up all my IP tables in there
- I should probably figure out the difference between
- I also should probably find out how to idiomatically write asynchronous rust code, I feel I am calling
awaitfar too much.
Well today, I am going to continue to work on container injection and maybe have some code cleanup.
Until next time,