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
38 changes: 35 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,11 @@ HELM_CHART_VERSION ?= 24.4.1
NGC_HELM_CHART_URL ?= https://helm.ngc.nvidia.com/nvidia/charts/network-operator-${HELM_CHART_VERSION}.tgz
HELM_CHART_PATH ?=

$(BUILDDIR) $(TOOLSDIR) $(HELM_CHART_DEP_ROOT) $(CRD_API_DEP_ROOT): ; $(info Creating directory $@...)
mkdir -p $@
# Examples build directory for processed YAML files
EXAMPLES_BUILD_DIR = examples/processed

$(BUILDDIR) $(TOOLSDIR) $(HELM_CHART_DEP_ROOT) $(CRD_API_DEP_ROOT) $(EXAMPLES_BUILD_DIR): ; $(info Creating directory $@...)
mkdir -p $@

# helm-docs is used to generate helm chart documentation
HELM_DOCS_PKG := github.com/norwoodj/helm-docs/cmd/helm-docs
Expand Down Expand Up @@ -136,8 +138,38 @@ build-cache:
${CURDIR}/tools/packman/python.sh -m pip install --no-cache-dir --no-deps -U -t ${CACHE_DIR}/chk/sphinx/4.5.0.2-py3.7-linux-x86_64/ Sphinx-Substitution-Extensions; \
fi

.PHONY: process-examples
process-examples: | $(EXAMPLES_BUILD_DIR)
@echo "Processing YAML examples with version substitutions..."
@# Generate sed script from all variables in vars.rst
@grep -E '^\.\. \|.*\| replace::' docs/common/vars.rst | \
sed 's/\.\. |\(.*\)| replace:: \(.*\)/s@|\1|@\2@g/' > /tmp/vars.sed
@find examples/templates -name "*.yaml" -type f | while read -r file; do \
echo "Processing $$file"; \
relative_path=$$(echo "$$file" | sed 's|^examples/templates/||'); \
output_dir="$(EXAMPLES_BUILD_DIR)/$$(dirname "$$relative_path")"; \
mkdir -p "$$output_dir"; \
sed -f /tmp/vars.sed "$$file" > "$(EXAMPLES_BUILD_DIR)/$$relative_path"; \
done
@rm -f /tmp/vars.sed
@echo "Generating complete configuration files..."
@# Generate complete.yaml files by concatenating numbered files in order
@find $(EXAMPLES_BUILD_DIR) -mindepth 1 -maxdepth 1 -type d | while read -r dir; do \
echo "Creating complete.yaml for $$(basename "$$dir")"; \
complete_file="$$dir/complete.yaml"; \
> "$$complete_file"; \
find "$$dir" -name "[0-9]*-*.yaml" | sort | while read -r numbered_file; do \
cat "$$numbered_file" >> "$$complete_file"; \
echo "" >> "$$complete_file"; \
echo "---" >> "$$complete_file"; \
done; \
if [ -s "$$complete_file" ]; then \
sed -i '$$d' "$$complete_file"; \
fi; \
done

.PHONY: gen-docs
gen-docs: build-cache
gen-docs: build-cache process-examples
@echo "Generating documentation..."; \
export PM_PACKAGES_ROOT=${CACHE_DIR}; \
${CURDIR}/repo.sh docs
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,15 @@
.. headings # #, * *, =, -, ^, "
.. include:: ./common/vars.rst

*******************************
Getting Started with Kubernetes
*******************************
********************************************************
NVIDIA Network Operator Deployment Guide with Kubernetes
********************************************************

.. contents:: On this page
:depth: 3
:local:
:backlinks: none

=================================
Network Operator Deployment Guide
=================================
.. _here: ./release-notes.html
.. _Kubernetes CRDs: https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/
.. _Operator SDK: https://github.com/operator-framework/operator-sdk
Expand Down
31 changes: 31 additions & 0 deletions docs/getting-started-with-kubernetes.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
.. license-header
SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: Apache-2.0

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

.. headings # #, * *, =, -, ^, "

===============================
Getting Started with Kubernetes
===============================

This section provides comprehensive guides to help you get started with the NVIDIA Network Operator on Kubernetes.


.. toctree::
:maxdepth: 1
:titlesonly:

Quick Start Guide <quick-start/quick-start-k8s.rst>
Deployment Guide with Kubernetes <deployment-guide-kubernetes.rst>
4 changes: 2 additions & 2 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@

.. toctree::
:caption: NVIDIA Network Operator
:titlesonly:
:maxdepth: 2
:hidden:

Release Notes <release-notes.rst>
Platform Support <platform-support.rst>
Getting Started with Kubernetes <getting-started-kubernetes.rst>
Getting Started with Kubernetes <getting-started-with-kubernetes.rst>
Getting Started with Red Hat OpenShift <getting-started-openshift.rst>
Customization Options and CRDs <customizations/customization.rst>
Life Cycle Management <life-cycle-management.rst>
Expand Down
39 changes: 39 additions & 0 deletions docs/overview.rst
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,40 @@ The NVIDIA Network Operator works in conjunction with the NVIDIA GPU Operator to

A Helm chart is provided for easily deploying the Network operator in a cluster to provision the host software on NVIDIA-enabled nodes.

===================
Networking Features
===================

**RDMA Support**
Remote Direct Memory Access (RDMA) for memory-to-memory data transfers that bypass the CPU and kernel networking stack. Supports InfiniBand and RDMA over Converged Ethernet (RoCE) protocols.

**SR-IOV Virtualization**
Single Root I/O Virtualization technology that partitions network interface cards into multiple Virtual Functions (VFs) for hardware-level isolation and performance.

**Secondary Networks**
Multiple network interface types including host device networks, MacVLAN networks, IP over InfiniBand networks, and SR-IOV networks for specialized networking requirements.

**Driver Management**
Automated deployment and management of NVIDIA DOCA-OFED networking drivers across cluster nodes with version control and updates.

==================
Supported Hardware
==================

See the :doc:`platform-support` page for supported hardware and software.

=========
Use Cases
=========

**High-Performance Computing (HPC)**: Scientific simulations, modeling applications, and distributed computing workloads

**Machine Learning**: Distributed training and inference workloads across multiple GPU nodes

**Data Processing**: Database systems, analytics platforms, and storage applications requiring high network throughput

**Legacy Applications**: Existing applications that require direct access to networking hardware

=================
License Agreement
=================
Expand All @@ -42,3 +76,8 @@ Learn More

The Network Operator is open-source.
For more information on contributions and release artifacts, see the `GitHub repo <https://github.com/Mellanox/network-operator>`_.

For detailed deployment instructions and examples:

- :doc:`quick-start/quick-start-k8s`: Quick deployment guide with common configurations
- :doc:`deployment-guide-kubernetes`: Detailed deployment scenarios
71 changes: 71 additions & 0 deletions docs/quick-start/host-device-rdma.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
.. license-header
SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: Apache-2.0

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

.. headings # #, * *, =, -, ^, "
.. include:: ../common/vars.rst

*********************************
Host Device Network with RDMA
*********************************

**Step 1**: Create NicClusterPolicy with host device support

.. literalinclude:: ../../examples/processed/host-device-rdma/10-nicclusterpolicy.yaml
:language: yaml

.. code-block:: bash

kubectl apply -f nicclusterpolicy.yaml

**Step 2**: Create IPPool for nv-ipam

.. literalinclude:: ../../examples/processed/host-device-rdma/20-ippool.yaml
:language: yaml

.. code-block:: bash

kubectl apply -f ippool.yaml

**Step 3**: Create HostDeviceNetwork

.. literalinclude:: ../../examples/processed/host-device-rdma/30-hostdevicenetwork.yaml
:language: yaml

.. code-block:: bash

kubectl apply -f hostdevicenetwork.yaml

**Step 4**: Deploy test workload

.. literalinclude:: ../../examples/processed/host-device-rdma/40-pod.yaml
:language: yaml

.. code-block:: bash

kubectl apply -f pod.yaml

Verify the deployment:

.. code-block:: bash

kubectl exec -it hostdev-test-pod -- lspci | grep Mellanox

.. dropdown:: Complete Configuration
:color: primary
:icon: code

.. literalinclude:: ../../examples/processed/host-device-rdma/complete.yaml
:language: yaml
78 changes: 78 additions & 0 deletions docs/quick-start/ipoib-rdma-shared.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
.. license-header
SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: Apache-2.0

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

.. headings # #, * *, =, -, ^, "
.. include:: ../common/vars.rst

*************************************************
Deploy IP over InfiniBand with RDMA Shared Device
*************************************************

**Step 1**: Create NicClusterPolicy with IPoIB support and 3 RDMA shared device pools

.. literalinclude:: ../../examples/processed/ipoib-rdma-shared/10-nicclusterpolicy.yaml
:language: yaml

.. code-block:: bash

kubectl apply -f nicclusterpolicy.yaml

**Step 2**: Create IPPool CRs for nv-ipam with 3 IP pools

.. literalinclude:: ../../examples/processed/ipoib-rdma-shared/20-ippool.yaml
:language: yaml

.. code-block:: bash

kubectl apply -f ippool.yaml

**Step 3**: Create IPoIBNetwork CRs for 3 IPoIB networks

.. literalinclude:: ../../examples/processed/ipoib-rdma-shared/30-ipoibnetwork.yaml
:language: yaml

.. code-block:: bash

kubectl apply -f ipoibnetwork.yaml

**Step 4**: Deploy test workloads for 3 IPoIB networks

.. literalinclude:: ../../examples/processed/ipoib-rdma-shared/40-pod.yaml
:language: yaml

.. code-block:: bash

kubectl apply -f pod.yaml

Verify the deployment:

.. code-block:: bash

kubectl exec -it ipoib-test-pod-a -- ibstat
kubectl exec -it ipoib-test-pod-a -- ip addr show

kubectl exec -it ipoib-test-pod-b -- ibstat
kubectl exec -it ipoib-test-pod-b -- ip addr show

kubectl exec -it ipoib-test-pod-c -- ibstat
kubectl exec -it ipoib-test-pod-c -- ip addr show

.. dropdown:: Complete Configuration
:color: primary
:icon: code

.. literalinclude:: ../../examples/processed/ipoib-rdma-shared/complete.yaml
:language: yaml
Loading