Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# E-MOBI GPU Operator Code Owners

# Default owners
* @ekonomikmobil @nouveauempiredhaiti-arch

# E-MOBI specific enhancements
/docs/ @ekonomikmobil
/examples/emobi/ @ekonomikmobil
/deploy/emobi/ @ekonomikmobil

# Respect original NVIDIA components
/pkg/driver/ @ekonomikmobil
/pkg/controller/ @ekonomikmobil
/api/ @ekonomikmobil
189 changes: 111 additions & 78 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,93 +1,85 @@
# Contribute to the NVIDIA GPU Operator
# Contribute to E-MOBI GPU Operator

## Introduction
Kubernetes provides access to special hardware resources such as NVIDIA GPUs, NICs, Infiniband adapters and other devices through the device plugin [framework](https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/).
However, managing special hardware resources in Kubernetes is difficult and prone to errors. GPUs and NICs require special drivers, plugins, runtimes, libraries to ensure fully high-performance functionality.

![nvidia-gpu-operator](https://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/egx/nvidia-egx-platform-gold-image-full-2c50-d@2x.jpg)
E-MOBI / EKONOMIK MOBIL, S.R.L. welcomes contributions to the E-MOBI GPU Operator project. This is a customized, community-driven fork of the NVIDIA GPU Operator, optimized for AI-powered solutions, autonomous systems, and high-performance computing.

Moreover, NVIDIA software components such as drivers have been traditionally deployed as part of the base operating system image. This meant that there was a different image for CPU vs. GPU nodes that infrastructure teams would have to manage as part of the software lifecycle. This in turn requires sophisticated automation as part of the provisioning phase for GPU nodes in Kubernetes.
Kubernetes provides access to special hardware resources such as GPUs, NICs, Infiniband adapters and other devices through the device plugin [framework](https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/). Managing these resources in Kubernetes is complex and error-prone. GPUs and NICs require special drivers, plugins, runtimes, and libraries to ensure fully high-performance functionality.

The NVIDIA GPU Operator was primarily built to address these challenges. It leverages the standard [Operator Framework](https://cloud.redhat.com/blog/introducing-the-operator-framework) within Kubernetes to automate the management of all NVIDIA software components needed to provision GPUs within Kubernetes.
![e-mobi-robotics](https://img.shields.io/badge/E--MOBI%20Robotics-Community%20Driven-brightgreen?style=for-the-badge)

The NVIDIA GPU Operator is an open-source product built and maintained by NVIDIA. It is currently validated on a set of platforms (including specific NVIDIA GPUs, operating systems and deployment configurations). The purpose of this document is to briefly describe the architecture of the GPU Operator, so that partners can extend the GPU Operator to support other platforms.
The E-MOBI GPU Operator automates the management of all GPU software components needed to provision accelerated computing resources. It leverages the standard [Operator Framework](https://cloud.redhat.com/blog/introducing-the-operator-framework) within Kubernetes.

The E-MOBI GPU Operator is a community-maintained, open-source product with enhancements and customizations by E-MOBI / EKONOMIK MOBIL, S.R.L. It respects all original licensing and contributions from NVIDIA and the broader community.

---

## Architecture
The GPU Operator is made up of the following software components - each of the components runs as a container, including NVIDIA drivers. The associated code is linked to each of the components below:

* [gpu-operator](https://github.com/NVIDIA/gpu-operator)
* [k8s-device-plugin](https://github.com/NVIDIA/k8s-device-plugin)
* [driver](https://github.com/NVIDIA/gpu-driver-container)
* [container-toolkit](https://github.com/NVIDIA/nvidia-container-toolkit)
* [dcgm-exporter](https://github.com/NVIDIA/dcgm-exporter)
* [gpu-feature-discovery](https://github.com/NVIDIA/k8s-device-plugin)
* [mig-manager](https://github.com/NVIDIA/mig-parted)
* [sandbox-device-plugin](https://github.com/NVIDIA/kubevirt-gpu-device-plugin)
* [vgpu-device-manager](https://github.com/NVIDIA/vgpu-device-manager)
* [kata-manager](https://github.com/NVIDIA/k8s-kata-manager)
* [samples](https://github.com/NVIDIA/k8s-samples)

```
github.com/
├── NVIDIA/
│ ├── gpu-operator (CRD and controller logic that implements the reconciliation)
│ ├── k8s-device-plugin (NVIDIA Device Plugin for Kubernetes)
│ ├── gpu-driver-container (NVIDIA Driver qualified for data center GPUs)
│ ├── nvidia-container-toolkit (NVIDIA Container Toolkit, runtime for Docker)
│ ├── dcgm-exporter (NVIDIA DCGM for monitoring and telemetry)
│ ├── gpu-feature-discovery (NVIDIA GPU Feature Discovery for Kubernetes)
│ ├── mig-manager (NVIDIA Multi-Instance GPU Manager for Kubernetes)
│ ├── sandbox-device-plugin (NVIDIA Device Plugin for sandboxed environments)
│ ├── vgpu-device-manager (NVIDIA vGPU Device Manager for Kubernetes)
│ ├── kata-manager (NVIDIA Kata Manager for Kubernetes)
│ ├── samples (CUDA VectorAdd sample used for validation steps)
```
The E-MOBI GPU Operator is built upon the NVIDIA GPU Operator architecture with E-MOBI enhancements:

## License
The NVIDIA GPU Operator is open-source and its components are licensed under the permissive Apache 2.0 license.
- **Base**: NVIDIA GPU Operator (Apache 2.0 Licensed)
- **Enhancements**: E-MOBI customizations for AI/robotics
- **Components**:
- [gpu-operator](https://github.com/NVIDIA/gpu-operator) - CRD and controller logic
- [k8s-device-plugin](https://github.com/NVIDIA/k8s-device-plugin) - NVIDIA Device Plugin for Kubernetes
- [gpu-driver-container](https://github.com/NVIDIA/gpu-driver-container) - NVIDIA Driver for data center GPUs
- [nvidia-container-toolkit](https://github.com/NVIDIA/nvidia-container-toolkit) - Container Toolkit and runtime
- [dcgm-exporter](https://github.com/NVIDIA/dcgm-exporter) - DCGM monitoring and telemetry
- Plus E-MOBI-specific AI and robotics optimizations

## Artifacts
The NVIDIA GPU Operator has the following artifacts as part of the product release:
1. [Source Code](#source-code)
1. [Documentation](#documentation)
1. [Container Images](#container-images)
1. [Helm Charts](#helm-charts)
### E-MOBI Enhancement Areas

The GPU Operator releases follow [calendar versioning](https://calver.org/).
1. **AI Optimization** - Enhanced ML workload scheduling
2. **Robotics Support** - Multi-agent coordination on edge
3. **Autonomous Systems** - Real-time GPU management
4. **Scalability** - Improved resource orchestration
5. **Security** - Enhanced isolation and monitoring

### <a name="source-code"></a> Source Code
---

The NVIDIA GPU Operator source code is available on GitHub at https://github.com/NVIDIA/gpu-operator
## License

### <a name="source-code"></a> Documentation
The E-MOBI GPU Operator respects and maintains the original Apache 2.0 license of the NVIDIA GPU Operator. All E-MOBI enhancements are also provided under Apache 2.0.

The official NVIDIA GPU Operator documentation is available at https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/index.html
**License**: Apache License 2.0
**Original Source**: https://github.com/NVIDIA/gpu-operator
**E-MOBI Fork**: https://github.com/ekonomikmobil/E-MOBI-Robotics-Developpement-gpu-operator

### <a name="container-images"></a> Container Images
---

Releases of the GPU Operator include container images that are currently available on [NVIDIA NGC Catalog](https://ngc.nvidia.com/).
## Contributions

### <a name="helm-charts"></a> Helm Charts
To simplify the deployment, the Operator can be installed using a Helm chart (note only Helm v3 is supported). The documentation for helm installation
can be viewed [here](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/getting-started.html#install-helm).
E-MOBI is willing to work with partners and the community for adding platform support, enhancements, and features to the GPU Operator.

The E-MOBI GPU Operator is open-source and permissively licensed under Apache 2.0 with minimal requirements.

## Contributions
NVIDIA is willing to work with partners for adding platform support for the GPU Operator. The GPU Operator is open-source and permissively licensed under the Apache 2.0 license with only minimal requirements for source code [contributions](#signing).
### How to Contribute

To file feature requests, bugs, or questions, submit an issue at https://github.com/NVIDIA/gpu-operator/issues
**To file feature requests, bugs, or questions**:
- Submit an issue at https://github.com/ekonomikmobil/E-MOBI-Robotics-Developpement-gpu-operator/issues

To contribute to the project, file a Pull Request at https://github.com/NVIDIA/gpu-operator/pulls. Contributions do not require explicit contributor license agreements (CLA), but we expect contributors to sign their work.
**To contribute code**:
- File a Pull Request at https://github.com/ekonomikmobil/E-MOBI-Robotics-Developpement-gpu-operator/pulls
- Contributions do not require explicit contributor license agreements (CLA)
- We expect contributors to certify that they have the right to submit their work under the Apache 2.0 license

## <a name="signing"></a>Signing your work
### Contribution Guidelines

Want to hack on the NVIDIA GPU Operator? Awesome!
We only require you to sign your work, the below section describes this!
1. **Fork the repository** and create a feature branch
2. **Make your changes** with clear commit messages
3. **Sign your commits** using the Developer Certificate of Origin (see below)
4. **Test thoroughly** before submitting
5. **Submit a PR** with a clear description of changes
6. **Engage with reviewers** during the review process

The sign-off is a simple line at the end of the explanation for the patch. Your
signature certifies that you wrote the patch or otherwise have the right to pass
it on as an open-source patch. The rules are pretty simple: if you can certify
the below (from [developercertificate.org](http://developercertificate.org/)):
---

## <a name="signing"></a>Signing Your Work

We require all contributors to sign their work using the Developer Certificate of Origin (DCO). This is a simple way to certify that you have the right to submit your work.

### Developer Certificate of Origin

```
Developer Certificate of Origin
Expand All @@ -98,8 +90,8 @@ Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Everyone is permitted to copy and distribute verbatim copies of
this license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

Expand All @@ -110,16 +102,14 @@ By making a contribution to this project, I certify that:
indicated in the file; or

(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
of my knowledge, is covered by an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
work with modifications created in whole or in part by me, under
the same open source license (unless I am permitted to submit
under a different license), as indicated in the file; or

(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
person who certified (a), (b) or (c) and I have not modified it.

(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
Expand All @@ -128,11 +118,54 @@ By making a contribution to this project, I certify that:
this project or the open source license(s) involved.
```

Then you just add a line to every git commit message:
### How to Sign Your Commits

Add a line to every git commit message:

```
Signed-off-by: Your Name <your.email@example.com>
```

Use your real name (sorry, no pseudonyms or anonymous contributions).

If you set your git config, you can sign commits automatically:

```bash
git config user.name "Your Name"
git config user.email "your.email@example.com"
git commit -s # The -s flag signs the commit
```

---

## E-MOBI Community

E-MOBI values the contributions and feedback from the global community. We are committed to:

- **Openness**: Transparent development and decision-making
- **Inclusivity**: Welcoming contributors from all backgrounds
- **Quality**: Maintaining high standards for code and documentation
- **Respect**: Treating all community members with respect and professionalism
- **Sustainability**: Ensuring long-term viability and maintenance

---

## Support

If you have questions about contributing, please:

- Check existing issues and PRs for similar topics
- Open a new discussion or issue with clear details
- Contact the E-MOBI team at [info@emobi.tech](mailto:info@emobi.tech)

---

## Attribution

Signed-off-by: Joe Smith <joe.smith@email.com>
Thank you for contributing to E-MOBI GPU Operator! Your contributions help us build better AI-powered solutions for the future.

Use your real name (sorry, no pseudonyms or anonymous contributions.)
**E-MOBI / EKONOMIK MOBIL, S.R.L**
*The Company of the Future is in Your Midst*

If you set your `user.name` and `user.email` git configs, you can sign your
commit automatically with `git commit -s`.
Leadership: Junior Jules (PDG)
Contact: [Talently Profile](https://talently.tech/ly/j-jules)
65 changes: 65 additions & 0 deletions E-MOBI Robotics Développement ..the Next way README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
[![license](https://img.shields.io/github/license/NVIDIA/gpu-operator?style=flat-square)](https://raw.githubusercontent.com/NVIDIA/gpu-operator/master/LICENSE)
[![pipeline status](https://gitlab.com/nvidia/kubernetes/gpu-operator/badges/master/pipeline.svg)](https://gitlab.com/nvidia/kubernetes/gpu-operator/-/pipelines)
[![coverage report](https://gitlab.com/nvidia/kubernetes/gpu-operator/badges/master/coverage.svg)](https://gitlab.com/nvidia/kubernetes/gpu-operator/-/pipelines)

# E-MOBI / EKONOMIK MOBIL,S.R.L GPU Operator

![e-mobi-ekonomik-mobil-srl-gpu-operator](https://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/egx/nvidia-egx-platform-gold-image-full-2c50-d@2x.jpg)

Kubernetes provides access to special hardware resources such as E-MOBI / EKONOMIK MOBIL,S.R.L GPUs, NICs, Infiniband adapters and other devices through the [device plugin framework](https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/). However, configuring and managing nodes with these hardware resources requires configuration of multiple software components such as drivers, container runtimes or other libraries which are difficult and prone to errors.
The E-MOBI / EKONOMIK MOBIL,S.R.L GPU Operator uses the [operator framework](https://cloud.redhat.com/blog/introducing-the-operator-framework) within Kubernetes to automate the management of all NVIDIA software components needed to provision GPU. These components include the NVIDIA drivers (to enable CUDA), Kubernetes device plugin for GPUs, the NVIDIA Container Runtime, automatic node labelling, [DCGM](https://developer.nvidia.com/dcgm) based monitoring and others.

## Audience and Use-Cases
The GPU Operator allows administrators of Kubernetes clusters to manage GPU nodes just like CPU nodes in the cluster. Instead of provisioning a special OS image for GPU nodes, administrators can rely on a standard OS image for both CPU and GPU nodes and then rely on the GPU Operator to provision the required software components for GPUs.

Note that the GPU Operator is specifically useful for scenarios where the Kubernetes cluster needs to scale quickly - for example provisioning additional GPU nodes on the cloud or on-prem and managing the lifecycle of the underlying software components. Since the GPU Operator runs everything as containers including NVIDIA drivers, the administrators can easily swap various components - simply by starting or stopping containers.


## Quick Start

This section provides a quick guide for deploying the GPU Operator with the data center driver.

Make sure your Kubernetes cluster meets the [prerequisites](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/getting-started.html#prerequisites) and is listed on the [platform support page](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/platform-support.html#supported-operating-systems-and-kubernetes-platforms).


**Step 1: Add the NVIDIA Helm repository**

```bash
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \
&& helm repo update
```

**Step 2: Deploy GPU Operator**

```bash
helm install --wait --generate-name \
-n gpu-operator --create-namespace \
nvidia/gpu-operator
```

After installation, the GPU Operator and its operands should be up and running.

Note:
To deploy the GPU Operator on OpenShift, follow the instructions in the [official documentation](https://docs.nvidia.com/datacenter/cloud-native/openshift/latest/steps-overview.html).


## Product Documentation
For information on platform support and getting started, visit the official documentation [repository](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/overview.html).


## Roadmap

- Support the latest NVIDIA Data Center GPUs, systems, and drivers.
- Support RHEL 10.
- Support KubeVirt with Ubuntu 24.04.
- Promote the [NVIDIADriver](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/gpu-driver-configuration.html) CRD to General Availability (GA).
- Integrate [NVIDIA’s DRA Driver for GPUs](https://github.com/NVIDIA/k8s-dra-driver-gpu) as a managed component of the GPU Operator.

## Webinar
[How to easily use GPUs on Kubernetes](https://info.nvidia.com/how-to-use-gpus-on-kubernetes-webinar.html)

## Contributions
[Read the document on contributions](https://github.com/NVIDIA/gpu-operator/blob/master/CONTRIBUTING.md). You can contribute by opening a [pull request](https://help.github.com/en/articles/about-pull-requests).

## Support and Getting Help
Please open [an issue on the GitHub project](https://github.com/NVIDIA/gpu-operator/issues/new) for any questions. Your feedback is appreciated.
Loading