From 22247fc491c4566b0dd0c88c80640d73cda601f0 Mon Sep 17 00:00:00 2001 From: Fred Rolland Date: Thu, 6 Nov 2025 16:37:19 +0200 Subject: [PATCH] feat: add OCP upgrade instructions Signed-off-by: Fred Rolland --- docs/images/ocp-upgrade-available.png | Bin 0 -> 29010 bytes docs/life-cycle-management.rst | 7 ++ docs/openshift/deployment-guide-openshift.rst | 118 ++++++++++++++++++ 3 files changed, 125 insertions(+) create mode 100755 docs/images/ocp-upgrade-available.png diff --git a/docs/images/ocp-upgrade-available.png b/docs/images/ocp-upgrade-available.png new file mode 100755 index 0000000000000000000000000000000000000000..5bd2656e71f31db131d805c6c30be8c45a11d0ad GIT binary patch literal 29010 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 ``. If following the restart the pod still fails, change the NVIDIA DOCA-OFED Driver version in the NicClusterPolicy to the previous version or to another working version. +-------------------------------------------------------- +Network Operator Upgrade on OpenShift Container Platform +-------------------------------------------------------- + +See instructions in the :ref:`network-operator-upgrade-openshift` section. + + ================================= Uninstalling the Network Operator ================================= diff --git a/docs/openshift/deployment-guide-openshift.rst b/docs/openshift/deployment-guide-openshift.rst index 5d997f23..c3b260ef 100644 --- a/docs/openshift/deployment-guide-openshift.rst +++ b/docs/openshift/deployment-guide-openshift.rst @@ -18,6 +18,8 @@ .. include:: ../common/vars.rst +.. _upgrade guide: https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/operators/administrator-tasks#olm-upgrading-operators + ******************************************************* NVIDIA Network Operator Deployment Guide with OpenShift ******************************************************* @@ -210,6 +212,122 @@ Example output: A successful deployment shows a `Running` status. +.. _network-operator-upgrade-openshift: + +------------------------- +Network Operator Upgrade +------------------------- + +This section describes how to upgrade the NVIDIA Network Operator on OpenShift Container Platform. + +.. note:: + Updating the NVIDIA Network Operator will not automatically update the NicClusterPolicy components. You will need to manually update the NicClusterPolicy components to the new version. + + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Upgrade Using OpenShift Web Console +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- In the OpenShift Container Platform web console side menu, select Operators > Installed Operators, and search for the NVIDIA Network Operator. +- In case that the NVIDIA Network Operator has a pending update, it will display a status with Upgrade available like in the following image: + +.. image:: ../images/ocp-upgrade-available.png + +- Click on the `Upgrade Available` link, then click `Preview Install Plan` button. +- Review the install plan, and click `Approve` button to upgrade the NVIDIA Network Operator. +- Navigate back to the Operators -> Installed Operators page to monitor the progress of the update. When complete, the status changes to `Succeeded` and `Up to date`. +- For additional information, see the Red Hat OpenShift Container Platform Documentation `upgrade guide`_. + + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Upgrade Using OpenShift OC CLI +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +#. Check the current subscription status to see if an upgrade is available: + + .. code-block:: bash + + oc get subscription nvidia-network-operator -n nvidia-network-operator -o yaml + + Look for the following fields in the output: + + - `status.state`: Should show `UpgradePending` if an upgrade is available + - `status.installedCSV`: Shows the currently installed version + - `status.currentCSV`: Shows the available upgrade version + - `status.installPlanRef.name`: The name of the install plan that requires approval + + Example output: + + .. code-block:: yaml + + status: + currentCSV: nvidia-network-operator.v25.7.0 + installedCSV: nvidia-network-operator.v25.4.0 + installPlanRef: + name: install-r4pvj + state: UpgradePending + +#. List the install plans to identify the pending one: + + .. code-block:: bash + + oc get installplan -n nvidia-network-operator + + Example output: + + .. code-block:: bash + + NAME CSV APPROVAL APPROVED + install-lrwp2 nvidia-network-operator.v25.4.0 Manual true + install-r4pvj nvidia-network-operator.v25.7.0 Manual false + +#. Review the install plan details before approving: + + .. code-block:: bash + + oc get installplan -n nvidia-network-operator -o yaml + + Replace `` with the name from the previous step (e.g., `install-r4pvj`). + +#. Approve the install plan to proceed with the upgrade: + + .. code-block:: bash + + oc patch installplan -n nvidia-network-operator \ + --type merge --patch '{"spec":{"approved":true}}' + +#. Monitor the upgrade progress by checking the ClusterServiceVersion: + + .. code-block:: bash + + oc get csv -n nvidia-network-operator + + Wait until the new version shows `PHASE: Succeeded`: + + .. code-block:: bash + + NAME DISPLAY VERSION REPLACES PHASE + nvidia-network-operator.v25.7.0 NVIDIA Network Operator 25.7.0 nvidia-network-operator.v25.4.0 Succeeded + +#. Verify the operator pods are running with the new version: + + .. code-block:: bash + + oc get pods -n nvidia-network-operator + + Example output: + + .. code-block:: bash + + NAME READY STATUS RESTARTS AGE + nvidia-network-operator-controller-manager-8f8ccf45c-zgfsq 1/1 Running 0 2m + +.. note:: + After the upgrade is complete, remember to update the NicClusterPolicy components to match the new operator version if needed. + + + + --------------------------------------------------------------------------------- Using Network Operator to Create NicClusterPolicy in OpenShift Container Platform ---------------------------------------------------------------------------------