Skip to content

Commit 703eed4

Browse files
committed
feat: Add STIG/FIPs-compliant Network Operator deployment instructions
Signed-off-by: Ivan Kolodiazhnyi <[email protected]>
1 parent bf8493a commit 703eed4

File tree

8 files changed

+228
-9
lines changed

8 files changed

+228
-9
lines changed

docs/common/vars.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
.. |network-operator-version| replace:: v25.10.0-beta.5
22
.. |network-operator-repository| replace:: nvcr.io/nvstaging/mellanox
33
.. |helm-chart-version| replace:: 25.10.0-beta.5
4-
.. |doca-driver-version| replace:: doca3.2.0-25.10-1.1.7.0-0
4+
.. |doca-driver-version| replace:: doca3.2.0-25.10-1.2.2.0-0
55
.. |doca-driver-repository| replace:: nvcr.io/nvstaging/mellanox
66
.. |doca-driver-version-lts| replace:: 24.10-0.7.0.0-0
7+
.. |doca-driver-version-stig| replace:: doca3.2.0-25.10-1.2.2.0-0
78
.. |doca-init-container-version| replace:: network-operator-v25.10.0-beta.5
89
.. |doca-init-container-repository| replace:: nvcr.io/nvstaging/mellanox
910
.. |sriov-device-plugin-version| replace:: network-operator-v25.10.0-beta.5
@@ -24,6 +25,7 @@
2425
.. |nic-feature-discovery-repository| replace:: nvcr.io/nvstaging/mellanox
2526
.. |sriovnetop-version| replace:: network-operator-v25.10.0-beta.5
2627
.. |sriovnetop-repository| replace:: nvcr.io/nvstaging/mellanox
28+
.. |sriovnetop-config-daemon-stig-version| replace:: network-operator-v25.10.0-beta.5
2729
.. |sriovnetop-sriov-cni-version| replace:: network-operator-v25.10.0-beta.5
2830
.. |sriovnetop-sriov-cni-repository| replace:: nvcr.io/nvstaging/mellanox
2931
.. |sriovnetop-ib-sriov-cni-version| replace:: network-operator-v25.10.0-beta.5

docs/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
Platform Support <platform-support.rst>
2626
Getting Started with Kubernetes <getting-started-with-kubernetes.rst>
2727
Getting Started with Red Hat OpenShift <getting-started-with-openshift.rst>
28+
NVIDIA Network Operator Government Ready <install-network-operator-gov-ready.rst>
2829
NIC Configuration Operator <nic-conf-operator/nic-configuration-operator.rst>
2930
[TECH PREVIEW] Configuration Assistance with Kubernetes Launch Kit <k8s-launch-kit.rst>
3031
Customization Options and CRDs <customizations/customization.rst>
Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
.. license-header
2+
SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3+
SPDX-License-Identifier: Apache-2.0
4+
5+
Licensed under the Apache License, Version 2.0 (the "License");
6+
you may not use this file except in compliance with the License.
7+
You may obtain a copy of the License at
8+
9+
http://www.apache.org/licenses/LICENSE-2.0
10+
11+
Unless required by applicable law or agreed to in writing, software
12+
distributed under the License is distributed on an "AS IS" BASIS,
13+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
See the License for the specific language governing permissions and
15+
limitations under the License.
16+
17+
.. headings # #, * *, =, -, ^, "
18+
.. include:: ./common/vars.rst
19+
20+
21+
.. _install-network-operator-gov-ready:
22+
23+
########################################
24+
NVIDIA Network Operator Government Ready
25+
########################################
26+
27+
The NVIDIA Network Operator now offers government-ready components for NVIDIA AI Enterprise customers.
28+
Government ready is NVIDIA's designation for software that meets applicable security requirements for deployment in your FedRAMP High or equivalent sovereign use case.
29+
For more information on NVIDIA's government-ready support, refer to the white paper `AI Software for Regulated Environments <https://docs.nvidia.com/ai-enterprise/planning-resource/ai-software-regulated-environments-white-paper/latest/index.html>`_.
30+
31+
=====================================
32+
Supported Network Operator Components
33+
=====================================
34+
The government-ready NVIDIA Network Operator includes the following components:
35+
36+
.. _fn1: #base-image
37+
.. |fn1| replace:: :sup:`1`
38+
39+
.. list-table::
40+
:header-rows: 1
41+
42+
* - Component
43+
- Version
44+
* - NVIDIA Network Operator
45+
- |network-operator-version|
46+
* - NVIDIA Network Operator Init Container
47+
- |doca-init-container-version|
48+
* - DOCA-OFED Driver Container
49+
- |doca-driver-version-stig|
50+
* - RDMA Shared Device Plugin
51+
- |k8s-rdma-shared-dev-plugin-version|
52+
* - IP Over Infiniband (IPoIB) CNI plugin
53+
- |ipoib-cni-version|
54+
* - SRIOV Network Operator Config
55+
- |sriovnetop-version|
56+
* - SRIOV Network Operator Config Config Daemon
57+
- |sriovnetop-config-daemon-stig-version|
58+
* - SR-IOV Network Device Plugin
59+
- |sriovnetop-sriov-device-plugin-version|
60+
* - SR-IOV CNI plugin
61+
- |sriovnetop-sriov-cni-version|
62+
* - InfiniBand SR-IOV CNI plugin
63+
- |sriovnetop-ib-sriov-cni-version|
64+
* - K8s CNI network plugins
65+
- |cni-plugins-version|
66+
* - Multus CNI
67+
- |multus-version|
68+
* - RDMA CNI plugin
69+
- |rdma-cni-repository|
70+
* - NVIDIA IPAM Plugin
71+
- |nvidia-ipam-version|
72+
73+
:sup:`1`
74+
Hardened for STIG/FIPS compliance
75+
76+
Artifacts for these components are available from the `NVIDIA NGC Catalog <https://registry.ngc.nvidia.com/orgs/nvidia/teams/mellanox/containers/doca-driver-stig-fips>`_.
77+
78+
.. note::
79+
80+
Not all Network Operator components and features are available as government-ready containers in the v25.10.0 release.
81+
82+
83+
Validated Kubernetes Distributions
84+
==================================
85+
86+
The government-ready NVIDIA Network Operator has been validated on the following Kubernetes distributions:
87+
88+
- Canonical Kubernetes 1.34 with Ubuntu Pro 24.04 and FIPS-compliant kernel
89+
90+
Install Government-Ready NVIDIA Network Operator
91+
================================================
92+
93+
Once you have your :ref:`gov-ready-prerequisites` configured, use the following steps to install the NVIDIA Network Operator on Canonical Kubernetes distributions:
94+
95+
#. :ref:`install-nfd`
96+
#. :ref:`create-ngc-api-pull-secret`
97+
#. :ref:`create-ubuntu-pro-token-secret`
98+
#. :ref:`deploy-nvidia-network-operator-gov-ready`
99+
100+
.. _gov-ready-prerequisites:
101+
102+
Prerequisites
103+
-------------
104+
105+
- An active NVIDIA AI Enterprise subscription and NGC API token to access Network Operator government-ready containers.
106+
Refer to `Generating Your NGC API Key <https://docs.nvidia.com/ngc/gpu-cloud/ngc-user-guide/index.html#generating-api-key>`_ in the NVIDIA NGC User Guide for more information on NGC API tokens.
107+
108+
- An Ubuntu Pro token for Canonical Kubernetes deployments.
109+
This token is required for the driver container to download kernel headers and other necessary packages from the Canonical repository when using the FIPS-enabled kernel on Ubuntu 24.04.
110+
Refer to the `Ubuntu Pro documentation <https://documentation.ubuntu.com/pro-client/en/v30/howtoguides/get_token_and_attach/>`_ for more information on accessing Ubuntu Pro tokens.
111+
112+
- The ``helm`` CLI installed on a client machine.
113+
114+
You can run the following commands to install the Helm CLI:
115+
116+
.. code-block:: console
117+
118+
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 \
119+
&& chmod 700 get_helm.sh \
120+
&& ./get_helm.sh
121+
122+
- A namespace to deploy the NVIDIA Network Operator.
123+
The example install commands below use ``nvidia-network-operator`` as the namespace.
124+
125+
- Optionally, Service Mesh for intra-cluster traffic encryption.
126+
By default, the NVIDIA Network Operator does not encrypt traffic between its controller (and operands) and the Kubernetes API server.
127+
If you wish to encrypt this communication, you should deploy and maintain a service mesh application within the Kubernetes cluster to enable secure traffic.
128+
129+
.. _install-nfd:
130+
131+
Install Node Feature Discovery (NFD)
132+
------------------------------------
133+
134+
NFD is an open-source project that is a dependency for the Operator on each node in your cluster.
135+
It must be deployed before installing the NVIDIA Network Operator.
136+
137+
Network Operator does not maintain a government ready version of NFD, it is recommended that you install the upstream NFD version that aligns with the :ref:`network-operator-component-matrix`.
138+
The NFD container is built on top of a scratch image, providing a highly secure container environment.
139+
For information on NFD CVEs and security updates, refer to the `NFD GitHub repository <https://github.com/kubernetes-sigs/node-feature-discovery/security>`_.
140+
141+
Refer to the NFD documentation for `installation instructions <https://kubernetes-sigs.github.io/node-feature-discovery/stable/get-started/index.html>`_.
142+
143+
144+
.. _create-ngc-api-pull-secret:
145+
146+
Create NGC API Pull Secret
147+
--------------------------
148+
149+
Add a Docker registry secret for downloading the Network Operator artifacts from NVIDIA NGC in the same namespace where you are planning to deploy the NVIDIA Network Operator.
150+
Update ``ngc-api-key`` in the command below with your NGC API key.
151+
152+
.. code-block:: console
153+
154+
$ kubectl create secret -n nvidia-network-operator docker-registry ngc-secret \
155+
--docker-server=nvcr.io \
156+
--docker-username='$oauthtoken' \
157+
--docker-password=<ngc-api-key>
158+
159+
.. _create-ubuntu-pro-token-secret:
160+
161+
Create Ubuntu Pro Token Secret
162+
------------------------------
163+
164+
Create a Kubernetes secret to hold the value of your Ubuntu Pro token secret.
165+
This secret will be used in the install command in the next step.
166+
167+
The Ubuntu Pro Token is required for the driver container to download kernel headers and other necessary packages from the Canonical repository when using the FIPS-enabled kernel on Ubuntu 24.04.
168+
169+
.. _deploy-nvidia-network-operator-gov-ready:
170+
171+
Install NVIDIA Network Operator Government-Ready Components
172+
-----------------------------------------------------------
173+
174+
#. Label your ``nvidia-network-operator`` namespace for the Operator to set the enforcement policy to privilege.
175+
176+
.. code-block:: console
177+
178+
$ kubectl label --overwrite ns nvidia-network-operator pod-security.kubernetes.io/enforce=privileged
179+
180+
#. Add the NVIDIA Helm repository:
181+
182+
.. code-block:: console
183+
184+
$ helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \
185+
&& helm repo update
186+
187+
#. Install the NVIDIA Network Operator with SR-IOV Network Operator.
188+
189+
.. code-block:: console
190+
191+
$ helm install network-operator nvidia/network-operator \
192+
--namespace nvidia-network-operator \
193+
--set sriov-network-operator.images.sriovConfigDaemon=doca-driver-stig-fips \
194+
--set sriov-network-operator.imagePullSecrets={ngc-secret} \
195+
--set sriovNetworkOperator.enabled=true
196+
--set nfd.enabled=true
197+
198+
.. _update-ubuntu-pro-token-in-nicclusterpolicy:
199+
200+
Update Ubuntu Pro Token in NicClusterPolicy
201+
===========================================
202+
203+
``UBUNTU_PRO_TOKEN`` environment variable of the Network Operator NicClusterPolicy should be configured.
204+
205+
.. code-block:: console
206+
207+
$ kubectl edit nicclusterpolicy nic-cluster-policy
208+
209+
Then update the secret with your new Ubuntu Pro Token.
210+
This token is required for the driver container to download kernel headers and other necessary packages from the Canonical repository when using the FIPS-enabled kernel on Ubuntu 24.04.
211+

docs/nic-conf-operator/nic-fw-configuration.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ Configure and apply the NICFirmwareSource CR
222222

223223
Deploy the NICFirmwareSource CR:
224224

225-
.. rli:: https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/docs/examples/example-nicfwsource-connectx6dx.yaml
225+
.. |sriovnetop-config-daemon-stig-version| https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/docs/examples/example-nicfwsource-connectx6dx.yaml
226226
:language: yaml
227227
:lines: 18-
228228
@@ -253,7 +253,7 @@ Configure and apply the NicFirmwareTemplate CR
253253

254254
Configure and apply the NicFirmwareTemplate CR:
255255

256-
.. rli:: https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/docs/examples/example-nicfirmwaretemplate-connectx6-dx.yaml
256+
.. |sriovnetop-config-daemon-stig-version| https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/docs/examples/example-nicfirmwaretemplate-connectx6-dx.yaml
257257
:language: yaml
258258
:lines: 18-
259259
@@ -318,7 +318,7 @@ Configure NIC Firmware using the NIC Configuration Operator
318318
Configure and apply the NicConfigurationTemplate CR
319319
---------------------------------------------------
320320

321-
.. rli:: https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/docs/examples/example-nicconfigurationtemplate-connectx6dx.yaml
321+
.. |sriovnetop-config-daemon-stig-version| https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/docs/examples/example-nicconfigurationtemplate-connectx6dx.yaml
322322
:language: yaml
323323
:lines: 18-
324324

docs/nic-conf-operator/spectrum-x-configuration.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,27 +48,27 @@ To enable the DOCA SPC-X CC algorithm on NIC devices, the DOCA SPC-X CC .deb pac
4848
To access the package, contact your NVIDIA CPM.
4949
The package should be made available in the cluster and then its URL should be provided in the packageUrlSource field of the SpectrumXOperator CR.
5050

51-
.. rli:: https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/docs/examples/spectrum-x/example-nicfirmwaresource-spectrum-x-cc-only.yaml
51+
.. |sriovnetop-config-daemon-stig-version| https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/docs/examples/spectrum-x/example-nicfirmwaresource-spectrum-x-cc-only.yaml
5252
:language: yaml
5353
:lines: 18-
5454
5555
If firmware on the devices also needs to be updated, extend the NicFirmwareSource CR with fields for ConnectX and BlueField firmware. Please, use the correct firmware for your devices.
5656

57-
.. rli:: https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/docs/examples/spectrum-x/example-nicfirmwaresource-spectrum-x-full.yaml
57+
.. |sriovnetop-config-daemon-stig-version| https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/docs/examples/spectrum-x/example-nicfirmwaresource-spectrum-x-full.yaml
5858
:language: yaml
5959
:lines: 18-
6060
6161
Configure and apply the NicFirmwareTemplate CR:
6262

63-
.. rli:: https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/docs/examples/spectrum-x/example-nicfirmwaretemplate-spectrum-x.yaml
63+
.. |sriovnetop-config-daemon-stig-version| https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/docs/examples/spectrum-x/example-nicfirmwaretemplate-spectrum-x.yaml
6464
:language: yaml
6565
:lines: 18-
6666
6767
======================================
6868
Enable SPC-X optimizations for devices
6969
======================================
7070

71-
.. rli:: https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/docs/examples/spectrum-x/example-nicconfigurationtemplate-spectrum-x.yaml
71+
.. |sriovnetop-config-daemon-stig-version| https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/docs/examples/spectrum-x/example-nicconfigurationtemplate-spectrum-x.yaml
7272
:language: yaml
7373
:lines: 18-
7474
@@ -78,6 +78,6 @@ Configuration details
7878

7979
Following configuration parameters are applied with spectrumXOptimized.enabled == true and spectrumXOptimized.version == "RA2.0":
8080

81-
.. rli:: https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/bindata/spectrum-x/RA2.0.yaml
81+
.. |sriovnetop-config-daemon-stig-version| https://raw.githubusercontent.com/Mellanox/nic-configuration-operator/refs/tags/network-operator-|network-operator-version|/bindata/spectrum-x/RA2.0.yaml
8282
:language: yaml
8383
:lines: 17-

docs/platform-support.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ Limitations
264264
- Only ``generic`` kernel variant is tested and supported as a GA.
265265
- ``nvidia``, ``aws``, ``azure``, and ``oracle`` kernel variants are supported as a Tech Preview and have limited testing.
266266

267+
.. _network-operator-component-matrix:
267268

268269
=================================
269270
Network Operator Component Matrix

hack/release/release.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ type Release struct {
6262
SriovNetworkOperator *ReleaseImageSpec
6363
SriovNetworkOperatorWebhook *ReleaseImageSpec
6464
SriovConfigDaemon *ReleaseImageSpec
65+
SriovConfigStigFips *ReleaseImageSpec
6566
SriovCni *ReleaseImageSpec
6667
SriovIbCni *ReleaseImageSpec
6768
Mofed *ReleaseImageSpec

hack/release/templates/vars/vars.template

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
.. |doca-driver-version| replace:: {{ .Mofed.Version }}
55
.. |doca-driver-repository| replace:: {{ .Mofed.Repository }}
66
.. |doca-driver-version-lts| replace:: 24.10-0.7.0.0-0
7+
.. |doca-driver-version-stig| replace:: {{ .MofedStigFips.Version }}
78
.. |doca-init-container-version| replace:: {{ .NetworkOperatorInitContainer.Version }}
89
.. |doca-init-container-repository| replace:: {{ .NetworkOperatorInitContainer.Repository }}
910
.. |sriov-device-plugin-version| replace:: {{ .SriovDevicePlugin.Version }}
@@ -24,6 +25,8 @@
2425
.. |nic-feature-discovery-repository| replace:: {{ .NicFeatureDiscovery.Repository }}
2526
.. |sriovnetop-version| replace:: {{ .SriovNetworkOperator.Version }}
2627
.. |sriovnetop-repository| replace:: {{ .SriovNetworkOperator.Repository }}
28+
.. |sriovnetop-config-daemon-stig-version| replace:: {{ .SriovConfigDaemonStigFips.Version }}
29+
.. |sriovnetop-config-daemon-stig-repository| replace:: {{ .SriovConfigDaemonStigFips.Repository }}
2730
.. |sriovnetop-sriov-cni-version| replace:: {{ .SriovCni.Version }}
2831
.. |sriovnetop-sriov-cni-repository| replace:: {{ .SriovCni.Repository }}
2932
.. |sriovnetop-ib-sriov-cni-version| replace:: {{ .SriovIbCni.Version }}

0 commit comments

Comments
 (0)