akash-network / support

Akash Support and Issue Tracking
5 stars 4 forks source link

Ability to provision whole Kubernetes namespace #37

Open remeq opened 2 years ago

remeq commented 2 years ago

Is your feature request related to a problem? Please describe.

One of the strengths of Akash is that it builds on Kubernetes ecosystem. However currently only generalized version of "container" notion is supported in Akash SDL. I understand that it eventually enables to plug different backend then Kubernetes and still provide "container" resource so I could be running my application on different backends without rewriting my app.

However - Kubernetes has become such a rich and adopted ecosystem that it would be nice if Akash would expose Kubernetes-centric resources+semantics via Akash SDL. This would open up a way to tap into rich Kubernetes applications ecosystem.

Describe the solution you'd like

If Akash would allow me to allocate whole Kubernetes namespace I would be able to deploy Kubernetes applications into Akash. That would be a gamechanger. For example - I am currently working as an architect for enterprise application which is running on AWS but its basically a Kubernetes application. With this feature, I would allocate one Kubernetes namespace into Akash, one into AWS, I would deploy Yugabyte DB into both sites - yugabyte automatically replicates data between the sites. Then I would deploy my application containers into that namespace. With this setup I would be running from the Akash site leveraging cheap resources and only in case of a problem with Akash service provider I would seamlessly switch to AWS. This is just an example of such hybrid deployment but generally having such feature would open up access to vast ecosystem of Kubernetes based application and middleware.

boz commented 2 years ago

Hi @remeq, thanks for the request and use-case!

If it helps at all, all services in a lease lease currently run in a single, unique namespace.

remeq commented 2 years ago

Hi @remeq, thanks for the request and use-case!

If it helps at all, all services in a lease lease currently run in a single, unique namespace.

Hi @boz, the problem is that Kubernetes applications work with plethora Kubernetes objects and abstractions. For example Kubernetes application needs to have control over management of Ingress objects, define new paths, services, jobs etc.

I understand that it breaks the way how Akash currently accounts for the service consumption and probably breaks bunch of other things but I think it is the key for widespread adoption as for complex applications it is really probably the only model that is widely adopted in the industry for cloud native apps (other being proprietary AWS/GCP/Azure environments which too allows me to build complex applications).

remeq commented 2 years ago

Also one more impression. As long as Akash only allows isolated containers there is not much of a competitive advantage over other node-focused platforms like Flux etc. The ability to allocate whole "colocated" datacenter-scoped environment is where the key selling point for Akash is for me as an application developer compared to other platforms. However in order to fully exploit it Akash would have to reinvent a lot of Kubernetes constructs on the Akash SDL level or would have to implement something like the feature I requested in this thread.

boz commented 2 years ago

Thanks @remeq. It's a good idea; we'd have to be mindful of the implications for multi-tenanted security, tho.

Will refer our incoming head of product to this. Thanks for sharing your thoughts.

remeq commented 2 years ago

@boz Thanks, also if Akash would be willing to cooperate, the company I work for would be opened to really do the deployment the way I described. It would make a nice case study for the Akash project. I am sure many projects would be able to replicate that pattern. So if you conclude it makes sense, you can reach me out anytime.

andy108369 commented 1 year ago

This is a brilliant idea and I think this project https://github.com/loft-sh/vcluster might be one of the key components in achieving it.