camaraproject / EdgeCloud

Repository to describe, develop, document and test the EdgeCloud API family
Apache License 2.0
16 stars 43 forks source link

Updating requiredResources in Application Management API #280

Open felipevicens opened 3 months ago

felipevicens commented 3 months ago

What type of PR is this?

What this PR does / why we need it:

Enables the definition of different infrastructure for the application, allowing selection from among Kubernetes, Virtual Machines, and Containers. Additionally, the developer can specify the sizing of Kubernetes cluster for the application, the characteristics of compute resources, and the base add-ons to enabling monitoring and ingress in Kubernetes clustes.

Moreover, this PR changes requiredResources to a set of infrastructure resorces, enabling developers to specify more than one resource for the application. For example, an application composed of two containers and one virtual machine.

Which issue(s) this PR fixes:

Fixes #253 Discussion #220

Special notes for reviewers:

This PR only applies to requiredResources in Application Management API

Changelog input

 Modify requiredResources in Application Management API
linux-foundation-easycla[bot] commented 2 weeks ago

CLA Missing ID CLA Not Signed

gainsley commented 1 week ago

Not for this PR, but we may want to consider adding a disk space requirement to the Kubernetes Topology and VmResources/ContainerResources/DockerComposeResources objects. I see they have AdditionalStorage fields, but that seems to be something in addition to the root partition. Users should be able to specify the requirements for the root partition size.

gainsley commented 2 days ago

Also for a follow-up PR, for GPU-specific resources, it does make sense that users would want to be able to reserve GPU VRAM for their LLM/etc usage, but Kubernetes really only allocates gpu resources based on number of gpus. A better understanding of what Kubernetes provides and what the Nvidia operator provides would inform how users would actually be able to specify GPU resources. I think we probably need a num GPUs field, and maybe a GPU type/family as well, but it needs some exploration.