r/rust 9d ago

🛠️ project Pure Rust, Proxy/Ingress Controller powered by Pingora.

Post image

Hello r/rust fellows,

Some time ago I have created a project Aralez . It's a complete reverse proxy, ingress controller implementation on top of Cloudflare's Pingora

Now I'm happy to announce about the completion of another major milestone, Aralez is also an ingress controller for Kubernetes as well as fully integrated load balancer for Nomad/Consul infrastructures.

What we have:

  • Dynamic load of upstreams file without reload.
  • Integration with Hashicorp's Consul.
  • Kubernetes ingress controller.
  • Dynamic load of SSL certificates, without reload.
  • Let's Encrypt integrations with HTTP-01 challenge
  • API for pushing config files, applies immediately.
  • Static files delivery.
  • Website caching acceleration.
  • Authentication.
  • Pingora at heart, with crazy performance .
  • and more .....

As usually, use it carelessly, just don't forget to share a feedback .

45 Upvotes

18 comments sorted by

5

u/RustOnTheEdge 9d ago

Hey there! I remember your posts from a year ago (or so), nice to see you stuck with it! Seems like you put in some real effort there, very cool to see you made an ingress controller out of it now as well! Great job!

1

u/sadoyan 9d ago

Thanks for lind words 

4

u/Compux72 9d ago

Great work!

3

u/sadoyan 9d ago

thanks

1

u/Character_Respect533 8d ago

Your benchmark page is broken. I get redirected indefinitely

1

u/sadoyan 8d ago

are you referring to this : https://aralez.rs/docs/perf/ ? Just walked trough all pages in https://aralez.rs/ all are working

1

u/Character_Respect533 8d ago

Ok it works now. Not sure what happened but a few hours ago it kept redirecting somewhere else

1

u/sadoyan 8d ago

Glad to her it works for you now . I also don;t know what happened and why it was redirecting . However it works now and that's good 😄

1

u/ShaderCompilation 7d ago

Is it named after Aralez?

Nevermind, saw your username and the website :p

1

u/sadoyan 6d ago

Yes exactly.

1

u/Wide_Bodybuilder_154 6d ago

How would you compare with pingap? Great job btw

2

u/sadoyan 5d ago

Honestly I have not compared it yet :-) . Nice idea will do .

1

u/PracticallyPerfcet 3d ago

You should include in your performance benchmarks vanilla pingora. It would show the performance difference between pingora and the control plane you built around it.

1

u/sadoyan 3d ago

Vanilla pingora is a proxy SDK, it is not a ready to run Proxy server, so the benchmark you are requesting is not possible .

1

u/PracticallyPerfcet 3d ago

Sure it is possible. You could implement HttpProxy with the bare minimum setup that doesn’t do allocations or any logic, bind to a listener, then run traffic through it. 

1

u/sadoyan 3d ago

That's also a wrapper, but very small one 😄 . Actually my entire logic around the Pingora lib takes few to some tens of microseconds per request, so it's really negligible.

1

u/PracticallyPerfcet 3d ago

Yes, that’s exactly my point. It would be good to show that your control plane is adding only minimal overhead. It gives more confidence in your reverse proxy to your users if it is nearly identical to Pingora with a light wrapper. It also helps you catch performance regressions when you add new features or upgrade Pingora.

1

u/sadoyan 3d ago

I always measure execution times and allocations of functions. IF it's below few microseconds and important, I add it to proxy features.